所以,在我的CommandHandler
中,我创建了这个:
//other CommandHandler stuff
_client.GuildMemberUpdated += UserNickChanged;
}
public async Task UserNickChanged(SocketGuildUser before, SocketGuildUser after)
{
if (!before.Nickname.Equals(after.Nickname))
{
var channel = _client.GetChannel(123123123123) as SocketTextChannel;
await channel.SendMessageAsync("User '" + before.Username + "' changed his/her nick to '" + after.Username + "' .");
}
else
{
return;
}
}
我想要做的是检查用户是否更改了他的昵称,检查是否是更改的昵称,然后说用户“X”将他的昵称改为“Y”。但是,谁会想到,它不起作用。如果我删除了if
- 子句,它就可以工作,但即便如此,before.Nickname
和after.Nickname
也是一样的。我觉得我错误地使用了SocketGuildUser before, SocketGuildUser after
。如果有人可以帮助我,我会很高兴。
答案 0 :(得分:0)
我自己进行了测试,after
昵称似乎相同,除非你放after.Nickname.ToString()
:
if (!before.Nickname.Equals(after.Nickname.ToString()))
不知道为什么会发生这种情况,也许是API的错误。