【发布时间】:2021-06-02 13:03:29
【问题描述】:
我正在尝试创建一个不和谐的机器人,当有人没有反应时,我需要执行特定的操作。方法如下:
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 中获取成员?
我到处寻找解决这个问题的方法,但找不到。任何帮助将不胜感激。
【问题讨论】: