【问题标题】:Discord.net: UserVoiceStateUpdated Event not fired when User initially connects to voice channelDiscord.net:用户最初连接到语音通道时未触发 UserVoiceStateUpdated 事件
【发布时间】:2018-07-25 10:03:37
【问题描述】:

我正试图让我的机器人识别任何公会成员加入特定语音频道,然后对其做出反应。我尝试通过订阅 UserVoiceStateUpdated 事件来做到这一点。这基本上可以按预期工作,但是当用户首次加入任何语音频道时,不会触发该事件。当用户然后从一个语音通道切换到另一个语音通道时,它工作正常。一旦您完全断开用户与语音的连接并再次重新连接,就需要在执行我的事件处理程序之前更改语音通道。

我做错了吗?这是预期的行为吗?如果是这样,我可以通过其他方式以某种方式实现这一目标吗?


再次澄清一下,这就是我正在做的事情以及机器人对它的反应:

  1. 用户连接到语音 - 未触发 UserVoiceStateUpdated
  2. 用户然后切换到另一个语音通道 - UserVoiceStateUpdated 正确触发我的事件处理程序
  3. 用户再次切换语音通道 - UserVoiceStateUpdated 再次触发
  4. 用户与语音完全断开 - UserVoiceStateUpdated 触发器
  5. 用户重新连接到任何语音通道 - 未执行 UserVoiceStateUpdated 处理程序
  6. 用户切换语音通道 - UserVoiceStateUpdated 按预期触发

尝试使用 .net Framework 4.7 和 .net Core 2.0,以及 Discord.net 版本 1.0、1.0.1 和 1.0.2。总是一样的。

【问题讨论】:

  • 不显示代码就帮不上忙。
  • _client.UserVoiceStateUpdated += HandleUserVoiceStateUpdated; 这就是所有代码。 HandleUserVoiceStateUpdated 可以只是一条简单的日志消息。
  • 你应该在他们的 github 上打开一个错误报告。 github.com/RogueException/Discord.Net/issues
  • 我也在考虑这个问题,但想先确认这确实是一个错误,我不只是用错了。
  • 他们的文档明确指出,当用户加入、离开或移动语音频道时会触发 UserVoiceStateUpdated。如果您能够重现它,那么您也许可以提交错误报告。

标签: c# events discord discord.net


【解决方案1】:

因此,在添加更多日志记录后,我发现每次事件未触发时都会记录此消息:“A UserVoiceStateUpdated 处理程序正在阻止网关任务。”

然后我完全从头开始,创建了一个新的不和谐应用程序、机器人用户等,并且它工作了。我无法真正解释这是如何解决问题的,但确实如此。

【讨论】:

    猜你喜欢
    • 2018-01-04
    • 2017-07-31
    • 2020-10-19
    • 2012-04-16
    • 2022-01-05
    • 2019-09-23
    • 2021-09-18
    • 2020-05-31
    • 1970-01-01
    相关资源
    最近更新 更多