【发布时间】:2021-06-26 06:48:16
【问题描述】:
我想创建一个服务器日志功能,其中应该记录消息更改、角色和昵称更改等内容。
我所做的是:
@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();
}
}
但这只会在成员更改昵称时触发,而不是在成员更改其他成员的昵称时触发。
有没有可能检测到这一点?
【问题讨论】:
标签: java discord-jda