1

我有 dsharp+ 的问题,所以基本上当我附加一个事件时 Client.VoiceStateUpdated += OnVoiceState;

private Task OnVoiceState(DiscordClient sender, VoiceStateUpdateEventArgs e)
        {
            var member = (DiscordMember) e.After.User;
            Console.WriteLine(member.Nickname);
            return Task.CompletedTask;
}

并尝试将其转换DiscordUserDiscordMember它会引发异常,我知道我可以从文档中做到这一点
DocsDiscordUser

[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% 的时间在工作,当我加入频道或离开它时,它会抛出,但当我的朋友加入频道时它不会。这是怎么回事?

4

2 回答 2

1

我会发表评论,但我没有足够的声誉这样做:

我自己能够重现相同的行为,我建议在 GitHub 存储库上打开一个问题。我想这对他们来说是一个问题,如果不是,他们对预期的行为和方法有更好的了解。

希望这从长远来看会有所帮助。

于 2021-04-25T13:28:24.620 回答
1

所以我设法让它工作我需要添加这个DiscordConfiguration
Intents = DiscordIntents.All
并在不和谐开发者中启用这两个检查:
检查不和谐

于 2021-04-25T17:24:59.420 回答