#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
}
Когда этот метод запускается, он будет обрабатывать только прямые полученные сообщения.