检查文本频道是否是私有的? JAVA JDA DV8TION

Check if text channel is private? JAVA JDA DV8TION

我认为这是一个非常简单的问题,答案甚至更简单,但我真的无法确定事件发生的文本通道是否是私有的。无论如何,这是我的一段代码:

@Override
    public void onMessageReceived(MessageReceivedEvent e)
    {
        if (e.isFromType(ChannelType.PRIVATE)) {
                System.out.println("locked channel");
            } else {
                System.out.println("not locked");
            }
         }

我想让它知道我输入的频道是否是私有的,并且该代码总是显示“未锁定”。

我假设您想知道收到的消息是否来自直接消息。 (私人频道基本上是直接消息)您可能想尝试重写 onPrivateMessageReceived() 方法。

@Override
public void onPrivateMessageReceived(final PrivateMessageReceivedEvent event) {
    // your code here handling DM messages
}

触发此方法时,它只会处理收到的直接消息。

所以我现在找到了一种检测私人频道的方法。只是将此发送给遇到我的问题的其他人

@Override
    public void onMessageReceived(MessageReceivedEvent e) {

PermissionOverride po = e.getTextChannel().getPermissionOverride((IPermissionHolder) e.getGuild().getRolesByName("@everyone", true).toArray() [0]);
if (po != null && po.getDenied().contains(Permission.MESSAGE_READ)) {
                //System.out.println("locked channel");
            } 
    }