From 56bef054a0eccfe3ccb556d2b77ceaf3fa00c02d Mon Sep 17 00:00:00 2001 From: V Play Games <74888319+V-Play-Games@users.noreply.github.com> Date: Fri, 24 Dec 2021 12:11:00 +0530 Subject: [PATCH] Move canTalk() from GuildMessageChannel to MessageChannel (#1956) Co-authored-by: V-Play-Games --- .../jda/api/entities/GuildMessageChannel.java | 11 +---------- .../dv8tion/jda/api/entities/MessageChannel.java | 14 +++++++++++++- .../jda/internal/entities/PrivateChannelImpl.java | 6 ++++++ 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/src/main/java/net/dv8tion/jda/api/entities/GuildMessageChannel.java b/src/main/java/net/dv8tion/jda/api/entities/GuildMessageChannel.java index 636d8dad84..512f35da5b 100644 --- a/src/main/java/net/dv8tion/jda/api/entities/GuildMessageChannel.java +++ b/src/main/java/net/dv8tion/jda/api/entities/GuildMessageChannel.java @@ -14,16 +14,7 @@ //TODO-v5: Docs public interface GuildMessageChannel extends GuildChannel, MessageChannel { - /** - * Whether we can send messages in this channel. - *
This is an overload of {@link #canTalk(Member)} with the SelfMember. - *
Checks for both {@link net.dv8tion.jda.api.Permission#VIEW_CHANNEL Permission.VIEW_CHANNEL} and - * {@link net.dv8tion.jda.api.Permission#MESSAGE_SEND Permission.MESSAGE_SEND}. - * - * For {@link ThreadChannel} this method checks for {@link Permission#MESSAGE_SEND_IN_THREADS} instead of {@link Permission#MESSAGE_SEND}. - * - * @return True, if we are able to read and send messages in this channel - */ + @Override default boolean canTalk() { return canTalk(getGuild().getSelfMember()); diff --git a/src/main/java/net/dv8tion/jda/api/entities/MessageChannel.java b/src/main/java/net/dv8tion/jda/api/entities/MessageChannel.java index 5ee4375f48..b973f9d667 100644 --- a/src/main/java/net/dv8tion/jda/api/entities/MessageChannel.java +++ b/src/main/java/net/dv8tion/jda/api/entities/MessageChannel.java @@ -101,7 +101,6 @@ default String getLatestMessageId() return Long.toUnsignedString(getLatestMessageIdLong()); } - /** * The id for the most recent message sent * in this current MessageChannel. @@ -135,6 +134,19 @@ default boolean hasLatestMessage() return getLatestMessageIdLong() != 0; } + /** + * Whether the currently logged in user can send messages in this channel or not. + *
For {@link GuildMessageChannel} this method checks for + * both {@link net.dv8tion.jda.api.Permission#VIEW_CHANNEL Permission.VIEW_CHANNEL} + * and {@link net.dv8tion.jda.api.Permission#MESSAGE_SEND Permission.MESSAGE_SEND}. + *
For {@link ThreadChannel} this method checks for {@link net.dv8tion.jda.api.Permission#MESSAGE_SEND_IN_THREADS} instead of {@link net.dv8tion.jda.api.Permission#MESSAGE_SEND}. + *
For {@link PrivateChannel} this method checks if the user that this PrivateChannel communicates with is not a bot, + * but it does not check if the said user blocked the currently logged in user or have their DMs disabled. + * + * @return True, if we are able to read and send messages in this channel + */ + boolean canTalk(); + /** * Convenience method to delete messages in the most efficient way available. *
This combines both {@link TextChannel#deleteMessagesByIds(Collection)} as well as {@link #deleteMessageById(long)} diff --git a/src/main/java/net/dv8tion/jda/internal/entities/PrivateChannelImpl.java b/src/main/java/net/dv8tion/jda/internal/entities/PrivateChannelImpl.java index 1582f8a9f9..568e1133f8 100644 --- a/src/main/java/net/dv8tion/jda/internal/entities/PrivateChannelImpl.java +++ b/src/main/java/net/dv8tion/jda/internal/entities/PrivateChannelImpl.java @@ -82,6 +82,12 @@ public long getLatestMessageIdLong() return latestMessageId; } + @Override + public boolean canTalk() + { + return !user.isBot(); + } + @Override public void checkCanAccessChannel() {}