【问题标题】:JDA multiple listenerJDA 多监听器
【发布时间】:2021-08-06 04:35:08
【问题描述】:

我正在尝试使用 JDA(Java Discord API)制作一个 Discord Bot,我想做一个测验命令,发送带有选项和一些反应的问题(例如 1、2、3、4 表情符号)。到这里一切正常,但是当我希望用户对问题做出反应以回答问题时,问题就来了,我知道这是一个 GenericMessageReactionEvent 类型来获得反应,但我使用 GuildMessageReceivedEvent 来处理任何命令,我想问我是否在测验类中的 onMessageReactionAdd 上使用 Override,它会知道何时有人对问题作出反应,或者我是否必须创建一个仅扩展 ListenerAdapter 的特殊类。谢谢!

【问题讨论】:

    标签: java discord discord-jda


    【解决方案1】:

    根据我从您的问题中了解到的情况,您可以使用 onMessageReactionAdd 事件来了解某人何时对消息做出反应。 Here is the documentation for onMessageReactionAdd 我假设您已经有一个扩展 ListenerAdapter 的类,因为 GuildMessageReceivedEvent 是它的一部分。 尽管如果您还没有在您的机器人中使用 ListenerAdapter,那么您需要在处理命令的类中扩展它。如果您已经在使用 ListenerAdapter,那么这将起作用(并且您可以添加/覆盖您的类中的所有事件方法,您不必有两个不同的 ListenerAdapter 类)

    【讨论】:

    • 是的,但是当我想调用函数时问题就来了,因为我没有像 ReactionEvent 这样的事件传递给函数,而且我不知道如何检索它。
    • 我真的不知道您的意思是什么,也许可以尝试在您的答案中添加代码以进行澄清。如果您试图等待来自 within onMessageReceived 事件的响应,那么我认为这是不可能的,我解决这个问题的方法非常困难,基本上包括停止线程,以及当消息被响应时通知它。不是一个很好的解决方案,也许其他人会对此了解更多
    • 我改变了我的做法。相反,我使用短信的反应来回答,并在 x 秒内等待答案。无论如何,感谢您的帮助!
    猜你喜欢
    • 2018-10-18
    • 2021-06-03
    • 1970-01-01
    • 1970-01-01
    • 2022-08-19
    • 2011-07-05
    • 2018-06-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多