利用可能なイベントはDiscordClient.UserJoined
,DiscordClient.UserLeft
およびDiscordClient.UserUpdated
です。最初の2つはe.User.Name
にアクセスして、参加したユーザーまたはサーバーから退去したユーザーの名前を取得できますが、3番目のイベントにはこれがありません。ボット自体を指すe.Server.CurrentUser
またはすべてのユーザーのリストを表示するe.Server.Users
しかありません。しかし、どのイベントがトリガされたのかわからないので、どのイベントにアクセスするのかわからない。Discordボットのユーザー状態の変更を処理する方法は?
ユーザーがオンラインになったときに通知を作成したい(自分のステータスをオフラインからオンラインに変更する、またはその逆に変更する)とします。私にできること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 –
これはちょっと混乱しますが、今は構造を理解しています。あなたは正しいです。あなたが答えとしてそれを書くなら、あなたのために正しいものとしてタグ付けします。 – Andrew