#java #discord #discord-jda
#java #Discord #discord-jda
Вопрос:
У меня проблема, когда я пытаюсь добавить реакцию на сообщение, отправленное ботом. Вот мой код и проблема, с которой я сталкиваюсь, когда пытаюсь добавить реакцию.
Идея проста. Просто команда опроса, отправленная ботом добавить реакцию на нее, например, пальцы вверх и пальцы вниз :
» $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)
Ответ №1:
Вы можете использовать flatMap:
event.getChannel().sendMessage(announcementFormat)
.flatMap(message -> message.addReaction("✔"))
.queue();
Вместо event.reply(announcementFormat)
.
В настоящее время ваш код пытается добавить реакцию на сообщение, отправленное пользователем, а не на сообщение, отправленное вашим ботом. Однако это сообщение уже было удалено в этот момент, поэтому вы получаете Unknown Message
сообщение об ошибке.
Комментарии:
1. Очень интересно, спасибо за идею, но как я могу добавить примерно 2 реакции???
2. Я пробовал со многими вещами, ничего не получалось, одна из них: » .flatMap(message -> message.addReaction(«✔»), message -> message.addReaction («emoji»)) » не работает :/
3. Попробуйте использовать RestAction. allOf(action1, action2)
4. Куда мне нужно поместить это действие rest?
5. Я пробовал с помощью » .flatMap(RestAction. Все (event.GetMessage().addReaction(«✔»),event.GetMessage().addReaction(«✔»))) » , не работает.