【问题标题】:How to handle user status change for Discord bot?如何处理 Discord bot 的用户状态更改?
【发布时间】:2017-07-30 14:26:34
【问题描述】:

有可用的事件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!");
}

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

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

【问题讨论】:

  • 用户将位于 e.Before 和 e.After,因此要访问它,请使用 e.After.Name
  • 这有点令人困惑,但现在我理解了结构。你是对的。如果您将其写为答案,我会将其标记为正确答案。

标签: c# bots discord discord.net


【解决方案1】:

用户将位于 e.Before 和 e.After,因此要访问它,请使用 e.After.Name

【讨论】:

    猜你喜欢
    • 2021-04-24
    • 2021-06-29
    • 2021-01-30
    • 2020-12-21
    • 2022-08-23
    • 2018-05-30
    • 1970-01-01
    • 2019-11-12
    • 2021-10-29
    相关资源
    最近更新 更多