Fix error in ChannelConfigHelper#getByThreadChannel

This commit is contained in:
Vankka 2023-06-30 17:59:32 +03:00
parent 8e12731119
commit 3a524c62a3
No known key found for this signature in database
GPG Key ID: 6E50CB7A29B96AD0
8 changed files with 34 additions and 22 deletions

View File

@ -0,0 +1,12 @@
package com.discordsrv.api.discord.entity.channel;
import com.discordsrv.api.discord.entity.Snowflake;
public interface DiscordChannel extends Snowflake {
/**
* Returns the type of channel this is.
* @return the type of the channel
*/
DiscordChannelType getType();
}

View File

@ -36,6 +36,7 @@ public enum DiscordChannelType implements JDAEntity<ChannelType> {
VOICE(ChannelType.VOICE),
GROUP(ChannelType.GROUP),
CATEGORY(ChannelType.CATEGORY),
FORUM(ChannelType.FORUM),
NEWS(ChannelType.NEWS),
STAGE(ChannelType.STAGE),
GUILD_NEWS_THREAD(ChannelType.GUILD_NEWS_THREAD),

View File

@ -3,5 +3,5 @@ package com.discordsrv.api.discord.entity.channel;
import com.discordsrv.api.discord.entity.JDAEntity;
import net.dv8tion.jda.api.entities.channel.concrete.ForumChannel;
public interface DiscordForumChannel extends DiscordThreadContainer, JDAEntity<ForumChannel> {
public interface DiscordForumChannel extends DiscordChannel, DiscordThreadContainer, JDAEntity<ForumChannel> {
}

View File

@ -24,27 +24,17 @@
package com.discordsrv.api.discord.entity.channel;
import com.discordsrv.api.DiscordSRVApi;
import com.discordsrv.api.discord.entity.Snowflake;
import com.discordsrv.api.discord.entity.message.ReceivedDiscordMessage;
import com.discordsrv.api.discord.entity.message.SendableDiscordMessage;
import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.io.InputStream;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
/**
* A Discord channel that can send/receive messages.
*/
public interface DiscordMessageChannel extends Snowflake {
/**
* Returns the type of channel this is.
* @return the type of the channel
*/
DiscordChannelType getType();
public interface DiscordMessageChannel extends DiscordChannel {
/**
* Sends the provided message to the channel.

View File

@ -46,6 +46,7 @@ import com.github.benmanes.caffeine.cache.AsyncLoadingCache;
import com.github.benmanes.caffeine.cache.Expiry;
import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.entities.*;
import net.dv8tion.jda.api.entities.channel.Channel;
import net.dv8tion.jda.api.entities.channel.concrete.*;
import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel;
import net.dv8tion.jda.api.exceptions.ErrorResponseException;
@ -341,6 +342,16 @@ public class DiscordAPIImpl implements DiscordAPI {
return getDirectMessageChannelById(id);
}
public DiscordChannel getChannel(Channel jda) {
if (jda instanceof ForumChannel) {
return getForumChannel((ForumChannel) jda);
} else if (jda instanceof MessageChannel) {
return getMessageChannel((MessageChannel) jda);
} else {
throw new IllegalArgumentException("Unmappable Channel type: " + jda.getClass().getName());
}
}
public AbstractDiscordMessageChannel<?> getMessageChannel(MessageChannel jda) {
if (jda instanceof TextChannel) {
return getTextChannel((TextChannel) jda);

View File

@ -49,7 +49,7 @@ public class DiscordDMChannelImpl extends AbstractDiscordMessageChannel<PrivateC
}
@Override
public CompletableFuture<ReceivedDiscordMessage> sendMessage(@NotNull SendableDiscordMessage message) {
public @NotNull CompletableFuture<ReceivedDiscordMessage> sendMessage(@NotNull SendableDiscordMessage message) {
if (message.isWebhookMessage()) {
throw new IllegalArgumentException("Cannot send webhook messages to DMChannels");
}

View File

@ -1,5 +1,6 @@
package com.discordsrv.common.discord.api.entity.channel;
import com.discordsrv.api.discord.entity.channel.DiscordChannelType;
import com.discordsrv.api.discord.entity.channel.DiscordForumChannel;
import com.discordsrv.api.discord.entity.channel.DiscordThreadChannel;
import com.discordsrv.api.discord.entity.guild.DiscordGuild;
@ -110,4 +111,9 @@ public class DiscordForumChannelImpl implements DiscordForumChannel {
.thenApply(channel -> discordSRV.discordAPI().getThreadChannel(channel));
});
}
@Override
public DiscordChannelType getType() {
return DiscordChannelType.FORUM;
}
}

View File

@ -28,7 +28,6 @@ import net.dv8tion.jda.api.entities.WebhookClient;
import net.dv8tion.jda.api.entities.channel.ChannelType;
import net.dv8tion.jda.api.entities.channel.attribute.IThreadContainer;
import net.dv8tion.jda.api.entities.channel.concrete.ThreadChannel;
import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel;
import net.dv8tion.jda.internal.requests.IncomingWebhookClient;
import org.jetbrains.annotations.NotNull;
@ -43,9 +42,7 @@ public class DiscordThreadChannelImpl extends AbstractDiscordGuildMessageChannel
super(discordSRV, thread);
IThreadContainer container = thread.getParentChannel();
this.threadContainer = container instanceof MessageChannel
? (DiscordThreadContainer) discordSRV.discordAPI().getMessageChannel((MessageChannel) container)
: null;
this.threadContainer = (DiscordThreadContainer) discordSRV.discordAPI().getChannel(container);
this.guild = discordSRV.discordAPI().getGuild(thread.getGuild());
}
@ -56,11 +53,6 @@ public class DiscordThreadChannelImpl extends AbstractDiscordGuildMessageChannel
.thenApply(client -> ((IncomingWebhookClient) client).withThreadId(Long.toUnsignedString(getId())));
}
@Override
public @NotNull String getName() {
return channel.getName();
}
@Override
public @NotNull DiscordGuild getGuild() {
return guild;