检查文本频道是不是为私人频道? JAVA JDA DV8TION

Posted

技术标签:

【中文标题】检查文本频道是不是为私人频道? JAVA JDA DV8TION【英文标题】:Check if text channel is private? JAVA JDA DV8TION检查文本频道是否为私人频道? JAVA JDA DV8TION 【发布时间】:2021-02-19 16:02:00 【问题描述】:

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

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

我希望它吐出我输入的频道是否为私人频道,并且该代码始终显示其“未锁定”。

【问题讨论】:

【参考方案1】:

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

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

当这个方法被触发时,它只会处理收到的直接消息。

【讨论】:

【参考方案2】:

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

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

【讨论】:

以上是关于检查文本频道是不是为私人频道? JAVA JDA DV8TION的主要内容,如果未能解决你的问题,请参考以下文章

我如何“检查”频道是不是为私人频道?

JDA 向私人渠道发送通知

JDA - 向特定频道发送消息

Discord bot如何创建私人文本频道

Discord JDA - 有时有效,有时无效

#general 频道 Discord - 超时和 JDA 未收到消息