所以,在我的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
的感觉。如果有人能帮我解决这个问题,会很高兴。
我自己测试了这个,after
昵称似乎是一样的,除非你把after.Nickname.ToString()
:
if (!before.Nickname.Equals(after.Nickname.ToString()))
不知道为什么会发生这种情况,也许是 API 的错误。