JDA Discord Добавить реакцию на сообщение

У меня проблема, когда я пытаюсь добавить реакцию на сообщение, отправленное ботом. Вот мой код и проблема, с которой я сталкиваюсь, когда пытаюсь добавить реакцию.

Идея проста. Просто команда опроса, отправленная ботом + добавьте реакцию на нее, например, палец вверх и палец вниз:

$ poll Это пример опроса, и после его создания добавьте реакции

КОД -

    @Override
    protected void execute(CommandEvent event) {
        if (this.check(event)) {
            return;
        }

        var args = event.getArgs().trim();
        if (args.isEmpty()) {
            this.incorrectUsage(event);
            return;
        }

        var announcementFormat = this.getConfig().getMessages().get("pool-format")
                .replaceAll("%message", args);


        event.reply(announcementFormat);
        event.getMessage().addReaction("✔").queue();
    }

ОШИБКА -

ERROR net.dv8tion.jda.api.requests.RestAction - RestAction queue returned failure: [ErrorResponseException] 10008: Unknown Message
net.dv8tion.jda.api.exceptions.ContextException
        at net.dv8tion.jda.api.exceptions.ContextException.here(ContextException.java:54)
        at net.dv8tion.jda.api.requests.Request.<init>(Request.java:71)
        at net.dv8tion.jda.internal.requests.RestActionImpl.queue(RestActionImpl.java:197)
        at net.dv8tion.jda.api.requests.RestAction.queue(RestAction.java:563)
        at net.dv8tion.jda.api.requests.RestAction.queue(RestAction.java:529)
        at cf.lionsquad.lionminus.command.impl.PollCommand.execute(PollCommand.java:48)
        at com.jagrosh.jdautilities.command.Command.run(Command.java:323)
        at com.jagrosh.jdautilities.command.impl.CommandClientImpl.onMessageReceived(CommandClientImpl.java:557)
        at com.jagrosh.jdautilities.command.impl.CommandClientImpl.onEvent(CommandClientImpl.java:445)
        at net.dv8tion.jda.api.hooks.InterfacedEventManager.handle(InterfacedEventManager.java:96)
        at net.dv8tion.jda.internal.hooks.EventManagerProxy.handleInternally(EventManagerProxy.java:82)
        at net.dv8tion.jda.internal.hooks.EventManagerProxy.handle(EventManagerProxy.java:69)
        at net.dv8tion.jda.internal.JDAImpl.handleEvent(JDAImpl.java:150)
        at net.dv8tion.jda.internal.handle.MessageCreateHandler.handleInternally(MessageCreateHandler.java:122)
        at net.dv8tion.jda.internal.handle.SocketHandler.handle(SocketHandler.java:36)
        at net.dv8tion.jda.internal.requests.WebSocketClient.onDispatch(WebSocketClient.java:948)
        at net.dv8tion.jda.internal.requests.WebSocketClient.onEvent(WebSocketClient.java:835)
        at net.dv8tion.jda.internal.requests.WebSocketClient.handleEvent(WebSocketClient.java:813)
        at net.dv8tion.jda.internal.requests.WebSocketClient.onBinaryMessage(WebSocketClient.java:986)
        at com.neovisionaries.ws.client.ListenerManager.callOnBinaryMessage(ListenerManager.java:385)
        at com.neovisionaries.ws.client.ReadingThread.callOnBinaryMessage(ReadingThread.java:276)
        at com.neovisionaries.ws.client.ReadingThread.handleBinaryFrame(ReadingThread.java:996)
        at com.neovisionaries.ws.client.ReadingThread.handleFrame(ReadingThread.java:755)
        at com.neovisionaries.ws.client.ReadingThread.main(ReadingThread.java:108)
        at com.neovisionaries.ws.client.ReadingThread.runMain(ReadingThread.java:64)
        at com.neovisionaries.ws.client.WebSocketThread.run(WebSocketThread.java:45)

person martink1337    schedule 29.11.2020    source источник


Ответы (1)


Вы можете использовать flatMap:

event.getChannel().sendMessage(announcementFormat)
     .flatMap(message -> message.addReaction("✔"))
     .queue();

Вместо event.reply(announcementFormat).

В настоящее время ваш код пытается добавить реакцию на сообщение, отправленное пользователем, а не на сообщение, отправленное вашим ботом. Однако на тот момент это сообщение уже было удалено, поэтому вы получаете Unknown Message ошибку.

person Minn    schedule 29.11.2020
comment
Очень интересно, спасибо за идею а как добавить вроде 2 реакции ??? - person martink1337; 30.11.2020
comment
Я много чего пробовал, ничего не получалось, одна из них: .flatMap (message - ›message.addReaction (✔), message -› message.addReaction (emoji)) не работает: / - person martink1337; 30.11.2020
comment
Попробуйте использовать RestAction.allOf (action1, action2) - person Minn; 30.11.2020
comment
Где мне нужно поставить это действие отдыха? - person martink1337; 30.11.2020
comment
Я пробовал с .flatMap (RestAction.allOf (event.getMessage (). AddReaction (✔), event.getMessage (). AddReaction (✔))), но не работал. - person martink1337; 30.11.2020
comment
Можете ли вы помочь мне с этим ? Я буду очень рада. - person martink1337; 02.12.2020