Discord бот возвращает ошибку «Неизвестный эмодзи» по умолчанию для смайликов Юникод - PullRequest
0 голосов
/ 19 октября 2019

У меня есть диск-бот, работающий на Discord.js для личного сервера, и он должен реагировать на определенные фразы (доброе утро, спокойной ночи и т. Д.) Сообщением и случайной реакцией смайликов, извлекаемой из массива.

В частности, моя проблема с этим: ["" "," ? "," ? "," ⚰️ "," ? "," ? "];

К сожалению, бот, похоже, реагирует только с некоторыми из указанных смайликов, в то время как другие возвращают ошибку «DiscordAPIError: Unknown Emoji» в консоли.

Например, бот будет реагировать с ?, но попытка реагировать с with возвращает ошибку, и бот не реагирует. Я позаботился о том, чтобы использовать только смайлики Юникода по умолчанию, но это все еще происходит.

РЕДАКТИРОВАТЬ:

Этот массив специально для хеллоуинских тематических реакций:

halreactoptions = ["?", "?", "?", "⚰️", "?", "?"];

halreactrandom = halreactoptions[Math.floor(Math.random()*halreactoptions.length)];

Изатем в конце кода сообщения бота у меня есть:

message.react(halreactrandom);

Это прекрасно работает для моего другого массива эмодзи, кажется, что эти Хэллоуин-тематические - единственные, которые возвращают неизвестную ошибку эмодзи, идаже тогда только конкретные. Очень странно. Я написал код полностью на Atom, если это важно / помогает.

1 Ответ

0 голосов
/ 19 октября 2019

Я думаю, что это может быть проблема, связанная с эмодзи юникода, которое вы нашли. Я проверил и попробовал отреагировать на список предоставленных вами смайликов, и действительно, кажется, что только эмодзи для гроба (⚰️) не работают, а все остальное работает нормально.

При более внимательном рассмотрении предоставленные вами смайлики для гробав этом случае не совсем то же самое, что получено в Discord через экранирование эмодзи (добавьте \ перед эмодзи, чтобы просмотреть версию в юникоде, в данном случае \:coffin:).

Предоставленные вами смайлики в действительности представлены в форме варианта с дополнительным селектором вариантов (дополнительная информация здесь и здесь ), поэтому при попытке отправить его,это не будет признано.

Раздражающий эмодзи (⚰) имеет только следующие байты: 0xEA 0x9A 0xB0, тогда как ваш эмодзи (⚰️) имеет следующие байты: 0xEA 0x9A 0xB0 0xEF 0xB8 0x8F.

Это также видно из простого сравнения длин, где первый будет иметь длину только 1 по сравнению с последним длиной 2.

Таким образом, реакция должна работать, если выиспользуйте более короткие смайлики длины 1, ⚰.

...