Проверьте, является ли текстовый канал частным? JAVA JDA DV8TION

#java #discord #discord-jda

#java #Discord #discord-jda

Вопрос:

Я думаю, что это довольно простой вопрос с еще более простым ответом, но я серьезно не могу выяснить, является ли текстовый канал, в котором происходит событие, частным или нет. В любом случае, вот фрагмент моего кода:

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

  

Я хочу, чтобы он указывал, является ли канал, который я ввожу, частным или нет, и этот код всегда говорит, что он «не заблокирован».

Ответ №1:

Итак, я нашел способ обнаружить частные каналы сейчас. Просто собираюсь отправить это здесь для всех, кто сталкивается с моей проблемой

 @Override
    public void onMessageReceived(MessageReceivedEvent e) {

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

Ответ №2:

Я предполагаю, что вы хотите знать, получено ли сообщение от прямого сообщения. (частный канал — это, по сути, прямое сообщение) Возможно, вы захотите попытаться переопределить метод onPrivateMessageReceived().

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

Когда этот метод запускается, он будет обрабатывать только прямые полученные сообщения.