检查用户是否通过公会成员更新更改了他/她的昵称



所以,在我的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.Nicknameafter.Nickname 也是相同的。我有一种错误地使用SocketGuildUser before, SocketGuildUser after的感觉。如果有人能帮我解决这个问题,会很高兴。

我自己测试了这个,after昵称似乎是一样的,除非你把after.Nickname.ToString()

if (!before.Nickname.Equals(after.Nickname.ToString()))

不知道为什么会发生这种情况,也许是 API 的错误。

最新更新