【发布时间】:2018-07-25 10:03:37
【问题描述】:
我正试图让我的机器人识别任何公会成员加入特定语音频道,然后对其做出反应。我尝试通过订阅 UserVoiceStateUpdated 事件来做到这一点。这基本上可以按预期工作,但是当用户首次加入任何语音频道时,不会触发该事件。当用户然后从一个语音通道切换到另一个语音通道时,它工作正常。一旦您完全断开用户与语音的连接并再次重新连接,就需要在执行我的事件处理程序之前更改语音通道。
我做错了吗?这是预期的行为吗?如果是这样,我可以通过其他方式以某种方式实现这一目标吗?
再次澄清一下,这就是我正在做的事情以及机器人对它的反应:
- 用户连接到语音 - 未触发 UserVoiceStateUpdated
- 用户然后切换到另一个语音通道 - UserVoiceStateUpdated 正确触发我的事件处理程序
- 用户再次切换语音通道 - UserVoiceStateUpdated 再次触发
- 用户与语音完全断开 - UserVoiceStateUpdated 触发器
- 用户重新连接到任何语音通道 - 未执行 UserVoiceStateUpdated 处理程序
- 用户切换语音通道 - 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