Как заставить бота отправлять персонализированные смайлики?

#javascript #node.js #discord #discord.js

#javascript #node.js #Discord #discord.js

Вопрос:

Ну, в настоящее время я использую эмодзи :x:, но на моем сервере у меня есть эмодзи под названием :superbotxemoji: я просто не знаю, как заставить моего бота использовать его

Мой код:

 const Discord = require('discord.js');

module.exports = {
 name: 'say',
 description: 'say',
 execute(message, args) {
  const { prefix, token } = require('../config.json');

  if (!message.member.hasPermission('ADMINISTRATOR'))
   return message.channel.send({
    embed: {
     color: 16777201,
     description: `:x: | ${message.author}, You are not allowed to use this command.`,
     footer: {
      text: `   | Required permission: ADMINISTRATOR`,
     },
    },
   });

  if (!args.length)
   return message.channel.send({
    embed: {
     color: 16777201,
     description: `:x: | ${message.author}, You need to put a message.`,
     footer: {
      text: `   | Example: !say hello`,
     },
    },
   });

  const sayMessage = args.join(' ');
  message.delete({ timeout: 1 });
  message.channel.send(sayMessage);
 },
};
  

Ответ №1:

На самом деле есть очень подробное объяснение из официального discord.js руководства, которое вы можете найти здесь, хотя я попытаюсь его перефразировать.

Чтобы отправить пользовательский смайлик, вы должны получить уникальный смайлик ID . Чтобы найти это, вы должны отправить эмоцию в discord с обратной косой чертой перед ней; по сути, избегая эмодзи.

Побег

В результате смайлики станут уникальными ID в этом формате: <:emoji-name:emoji-id>

Формат

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

Смайлики

С другой стороны, есть еще один очень простой способ получить смайлик, используя client.emojis.cache коллекцию и .find() метод.

 client.emojis.cache.find(emoji => emoji.name === '<name of emoji>')
  

.find()

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

Способ обойти эту проблему — просмотреть guild.emojis.cache коллекцию. Таким образом, количество возможных повторяющихся смайликов будет сокращено.