【发布时间】:2017-07-30 14:26:34
【问题描述】:
有可用的事件DiscordClient.UserJoined、DiscordClient.UserLeft 和DiscordClient.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