检查文本频道是否为私人频道?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");
}
}

我想让它吐出我键入的频道是否是私人的,并且代码总是说它的";未锁定";。

所以我现在找到了一种检测私人通道的方法。我只是想把这个发给其他遇到我的问题的人

@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");
} 
}

我想您想知道收到的消息是否来自直接消息。(私有通道基本上是直接消息(您可能需要尝试重写onPrivateMessageReceived((方法。

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

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

最新更新