将 DiscordUser 转换为 DiscordMember
Converting DiscordUser to DiscordMember
我对 dsharp+ 有疑问,所以基本上当我附加一个事件时
Client.VoiceStateUpdated += OnVoiceState;
private Task OnVoiceState(DiscordClient sender, VoiceStateUpdateEventArgs e)
{
var member = (DiscordMember) e.After.User;
Console.WriteLine(member.Nickname);
return Task.CompletedTask;
}
并尝试将其从 DiscordUser
转换为 DiscordMember
它会引发异常,我知道我可以从文档
中做到这一点
[Error] Exception occured
System.InvalidCastException: Unable to cast object of type 'DSharpPlus.Entities.DiscordUser' to type 'DSharpPlus.Entities.DiscordMember'.
at dcBot.Run.Bot.OnVoiceState(DiscordClient sender, VoiceStateUpdateEventArgs e) in C:\Users\lukas\RiderProjects\discord\bot\Run\Main.cs:line 219
at Emzi0767.Utilities.AsyncEvent`2.InvokeAsync(TSender sender, TArgs e, AsyncEventExceptionMode exceptionMode)
它有 50% 的时间在工作,当我加入一个频道或离开时它会抛出,但当我的朋友加入一个频道时它不会。怎么回事?
我会发表评论,但我没有足够的声誉来发表评论:
我自己能够重现相同的行为,我建议在 GitHub 存储库上打开一个问题。我想这是他们的问题,如果不是,他们对预期的行为和方法有更好的了解。
希望这有助于长期 运行。
所以我设法让它工作我需要在 DiscordConfiguration
中添加它:
Intents = DiscordIntents.All
并在 discord 开发人员中启用这两项检查:
我对 dsharp+ 有疑问,所以基本上当我附加一个事件时
Client.VoiceStateUpdated += OnVoiceState;
private Task OnVoiceState(DiscordClient sender, VoiceStateUpdateEventArgs e)
{
var member = (DiscordMember) e.After.User;
Console.WriteLine(member.Nickname);
return Task.CompletedTask;
}
并尝试将其从 DiscordUser
转换为 DiscordMember
它会引发异常,我知道我可以从文档
中做到这一点
[Error] Exception occured
System.InvalidCastException: Unable to cast object of type 'DSharpPlus.Entities.DiscordUser' to type 'DSharpPlus.Entities.DiscordMember'.
at dcBot.Run.Bot.OnVoiceState(DiscordClient sender, VoiceStateUpdateEventArgs e) in C:\Users\lukas\RiderProjects\discord\bot\Run\Main.cs:line 219
at Emzi0767.Utilities.AsyncEvent`2.InvokeAsync(TSender sender, TArgs e, AsyncEventExceptionMode exceptionMode)
它有 50% 的时间在工作,当我加入一个频道或离开时它会抛出,但当我的朋友加入一个频道时它不会。怎么回事?
我会发表评论,但我没有足够的声誉来发表评论:
我自己能够重现相同的行为,我建议在 GitHub 存储库上打开一个问题。我想这是他们的问题,如果不是,他们对预期的行为和方法有更好的了解。
希望这有助于长期 运行。
所以我设法让它工作我需要在 DiscordConfiguration
中添加它:
Intents = DiscordIntents.All
并在 discord 开发人员中启用这两项检查: