我想做一个服务器日志功能,其中应该记录消息更改、角色和昵称更改等内容。
我所做的是:
@Override
public void onGuildMemberUpdateNickname(@NotNull GuildMemberUpdateNicknameEvent event) {
if(BotMain.getInstance().getSettings().serverLogChannel != -1) {
TextChannel serverlog = event.getGuild().getTextChannelById(BotMain.getInstance().getSettings().serverLogChannel);
boolean removed = event.getNewNickname() == null;
boolean created = event.getOldNickname() == null;
EmbedBuilder builder = new EmbedBuilder();
if(removed) {
builder.setColor(Color.RED);
builder.setAuthor("Nickname entfernt", event.getEntity().getUser().getAvatarUrl(), event.getEntity().getUser().getAvatarUrl());
builder.addField("Änderung", event.getOldNickname() + " \u279C " + event.getEntity().getUser().getName(), false);
builder.addField("Betrifft", event.getEntity().getAsMention(), false);
builder.addField("Geändert von", event.getMember().getAsMention(), false);
} else if(created) {
builder.setColor(Color.GREEN);
builder.setAuthor("Nickname erstellt", event.getEntity().getUser().getAvatarUrl(), event.getEntity().getUser().getAvatarUrl());
builder.addField("Änderung", event.getEntity().getUser().getName() + " \u279C " + event.getNewNickname(), false);
builder.addField("Betrifft", event.getEntity().getAsMention(), false);
builder.addField("Geändert von", event.getMember().getAsMention(), false);
} else {
builder.setColor(Color.YELLOW);
builder.setAuthor("Nickname geändert", event.getEntity().getUser().getAvatarUrl(), event.getEntity().getUser().getAvatarUrl());
builder.addField("Änderung", event.getOldNickname() + " \u279C " + event.getNewNickname(), false);
builder.addField("Betrifft", event.getEntity().getAsMention(), false);
builder.addField("Geändert von", event.getMember().getAsMention(), false);
}
serverlog.sendMessage(builder.build()).queue();
}
}
但这只会在会员更改昵称时触发,而不会在会员更改其他会员昵称时触发。
是否有可能检测到这一点?
答案 0 :(得分:0)
你可以看看这个事件 GenericGuildMemberUpdateEvent (GenericGuildMemberUpdateEvent) 和以下方法:
我现在无法验证这一点,请随时通知我。