JDA 多监听器
Posted
技术标签:
【中文标题】JDA 多监听器【英文标题】:JDA multiple listener 【发布时间】:2021-08-06 04:35:08 【问题描述】:我正在尝试使用 JDA(Java Discord API)制作一个 Discord Bot,我想做一个测验命令,发送带有选项和一些反应的问题(例如 1、2、3、4 表情符号)。到这里一切正常,但是当我希望用户对问题做出反应以回答问题时,问题就来了,我知道这是一个 GenericMessageReactionEvent 类型来获得反应,但我使用 GuildMessageReceivedEvent 来处理任何命令,我想问我是否在测验类中的 onMessageReactionAdd 上使用 Override,它会知道何时有人对问题作出反应,或者我是否必须创建一个仅扩展 ListenerAdapter 的特殊类。谢谢!
【问题讨论】:
【参考方案1】:根据我从您的问题中了解到的情况,您可以使用 onMessageReactionAdd 事件来了解某人何时对消息做出反应。 Here is the documentation for onMessageReactionAdd 我假设您已经有一个扩展 ListenerAdapter 的类,因为 GuildMessageReceivedEvent 是它的一部分。 尽管如果您还没有在您的机器人中使用 ListenerAdapter,那么您需要在处理命令的类中扩展它。如果您已经在使用 ListenerAdapter,那么这将起作用(并且您可以添加/覆盖您的类中的所有事件方法,您不必有两个不同的 ListenerAdapter 类)
【讨论】:
是的,但是当我想调用函数时问题就来了,因为我没有像 ReactionEvent 这样的事件传递给函数,而且我不知道如何检索它。 我真的不知道您的意思是什么,也许可以尝试在您的答案中添加代码以进行澄清。如果您试图等待来自 within onMessageReceived 事件的响应,那么我认为这是不可能的,我解决这个问题的方法非常困难,基本上包括停止线程,以及当消息被响应时通知它。不是一个很好的解决方案,也许其他人会对此了解更多 我改变了我的做法。相反,我使用短信的反应来回答,并在 x 秒内等待答案。无论如何,感谢您的帮助!以上是关于JDA 多监听器的主要内容,如果未能解决你的问题,请参考以下文章
Discord bot - 发送多条消息的 Js 事件监听器