我正在尝试创建一个不和谐的机器人,当有人没有反应时,我需要执行特定的操作。这是方法:
public void onMessageReactionRemove(MessageReactionRemoveEvent event) {
Guild guild = event.getGuild();
Member member = event.getMember();
if(event.getMessageId().equalsIgnoreCase(Main.rolesMessage.getId())) {
if(event.getReactionEmote().getEmoji().equals("\uD83C\uDDE6")) {
Role role = event.getGuild().getRolesByName("1", true).get(0);
if(member.getRoles().contains(role)) {
guild.removeRoleFromMember(member, role).queue();
}
}
else if(event.getReactionEmote().getEmoji().equals("\uD83C\uDDE7")) {
Role role = event.getGuild().getRolesByName("2", true).get(0);
if(member.getRoles().contains(role)) {
guild.removeRoleFromMember(member, role).queue();
}
}
else if(event.getReactionEmote().getEmoji().equals("\uD83C\uDDE8")) {
Role role = event.getGuild().getRolesByName("3", true).get(0);
if(member.getRoles().contains(role)) {
System.out.println("yay");
guild.removeRoleFromMember(member, role).queue();
}
}
else if(event.getReactionEmote().getEmoji().equals("\uD83C\uDDE9")) {
Role role = event.getGuild().getRolesByName("4", true).get(0);
if(member.getRoles().contains(role)) {
guild.removeRoleFromMember(member, role).queue();
}
}
}
}
问题是 event.getMember 返回 null。我想我会尽力解决这个问题,所以我做了以下事情:
Guild guild = event.getGuild();
String id = event.getUserId();
Member member = guild.getMemberById(id);
经过一番故障排除,我发现字符串 id 是正确的用户 id,但 guild.getMemberById(id) 仍然返回 null。我还尝试了其他一些变化,看看是否有任何效果,但每次都发生同样的事情。一切都很好,直到我不得不将其转换为成员。
有没有办法在 MessageReactionRemoveEvent 中获取成员?
我到处寻找这个问题的解决方案,但我找不到。任何帮助,将不胜感激。