如何处理Discord bot的用户状态变化?

时间:2017-03-09 14:38:24

标签: c# bots discord discord.net

有可用的活动DiscordClient.UserJoinedDiscordClient.UserLeftDiscordClient.UserUpdated。在前两个我可以访问e.User.Name以获取已加入或离开服务器的用户的名称,第三个事件没有这个。只有e.Server.CurrentUser指的是机器人本身或e.Server.Users,它提供了所有用户的列表。但是我不知道事件触发了哪一个,因此不知道哪一个访问。

假设我想在用户上线时创建通知(将他/她的状态从离线状态更改为在线状态,反之亦然)。对于UserJoined事件,我可以这样做:

client.UserJoined += async (s, e) =>
{
  var channel = e.Server.FindChannels("abc", ChannelType.Text);
  await channel.SendMessage(e.User.Name + " has joined the server!");
}

但是当我没有UserUpdated时,如何为User执行此操作?

client.UserUpdated += async (s, e) =>
{
  var channel = e.Server.FindChannels("abc", ChannelType.Text);
  if(???.Status == "online")
  {
    await channel.SendMessage(???.Name + " has come online!");
  }
}

1 个答案:

答案 0 :(得分:0)

用户将在e.Before和e.After之后,所以要访问它使用e.After.Name