JDA-Utilities icon indicating copy to clipboard operation
JDA-Utilities copied to clipboard

Button Menu cannot react using emotes

Open Artuto opened this issue 4 years ago • 4 comments

Issue

Issue Checklist

Please follow the following steps before opening this issue.
Issues that do not complete the checklist may be closed without any help.

  • [x] I have checked for similar issues on the issue tracker.
  • [x] I have updated to the latest version of JDA-Utilities.
  • [x] I have checked the branches or the maintainers' PRs for upcoming features/bug fixes.

The issue tracker is reserved for issues, errors, and feature requests related to JDA-Utilities, and not questions and other requests for help.

Issue Information

Check all that apply:

  • [x] This is a bug report about an error, issue, or bug in JDA-Utilities.
  • [x] I have been able to consistently reproduce this bug.
  • [ ] This is a feature request for the JDA-Utilities library.

This issue tracker does not assist or handle issues with the JDA library.
For JDA related issues, visit the JDA issue tracker and open an issue there.

Description

Using the Button Menu, when adding a choice you cannot use an emote if you have the EMOTE CacheFlag disabled.

The following code results in the following stack trace:

menuBuilder.addChoice("emote id here");
net.dv8tion.jda.api.exceptions.ErrorResponseException: 10014: Unknown Emoji
	at net.dv8tion.jda.api.exceptions.ErrorResponseException.create(ErrorResponseException.java:150)
	at net.dv8tion.jda.api.requests.Request.onFailure(Request.java:102)
	at net.dv8tion.jda.internal.requests.RestActionImpl.handleResponse(RestActionImpl.java:239)
	at net.dv8tion.jda.api.requests.Request.handleResponse(Request.java:197)
[...]

You can workaround this by doing this (adding the emote name to the id):

menuBuilder.addChoice("a:"+"emote id here");

However, when the add reaction event is received and handled by the menu, it compares the emote ID with the internal menu list of choices, which has a:emote id and not just the id, therefore the menu will never proceed

Artuto avatar Jan 09 '20 21:01 Artuto

Please refer to the Javadocs. They might be outdated, but I'm sure the ButtonMenu is still mostly up to date.

ButtonMenu.Builder#addChoice(String emoji) image

Andre601 avatar Jan 09 '20 21:01 Andre601

Using the Button Menu, when adding a choice you cannot use an emote if you have the EMOTE CacheFlag disabled.

You cannot get a Emote object

Artuto avatar Jan 09 '20 21:01 Artuto

That is kinda obvious when you disable the CacheFlag for EMOTES, meaning JDA doesn't have it in its internal cache and therefore might first need to get it.

Just generate an Emote object to add to the list, or use Unicode emojis.

Andre601 avatar Jan 09 '20 22:01 Andre601

You know that you can literally use the format a?:name:id for emotes (if I recall the pattern correctly)

Sanduhr32 avatar Jan 10 '20 06:01 Sanduhr32