首页 > 解决方案 > 在 guild.emojis.create() 之后发送一个新创建的表情符号

问题描述

我有一个addemoji命令,我希望它发送机器人创建后创建的新表情符号。它发送的:emojiname:不是实际添加的表情符号。如何定义添加的新表情符号?有人建议我使用console.log,但我不知道如何使用它放入日志中的信息。

module.exports = {
  name: 'addemoji',
  description: 'ping pong',
  execute(message, args) {
    const Discord = require('discord.js');
    const PREFIX = 'ly?';
    const load = '<a:loading:824515478939762699>';

    if (message.content.startsWith(PREFIX + 'addemoji')) {
      if (message.guild.me.permissions.has('USE_EXTERNAL_EMOJIS')) {
        if (message.guild.me.permissions.has('MANAGE_EMOJIS')) {
          if (message.member.hasPermission('MANAGE_EMOJIS')) {
            const match = /<(a?):(.+):(\d+)>/u.exec(message.content);
            if (!match)
              return message.reply(
                'Please include a custom emoji in your message!',
              );
            // animated will be 'a' if it is animated or '' if it isn't
            const [, animated, name, id] = match;
            const url = `https://cdn.discordapp.com/emojis/${id}.${
              animated ? 'gif' : 'png'
            }`;
            const user = message.mentions.users.first() || message.author;
            const nameid = `<:${name}:${id}>`;

            message.guild.emojis.create(url, name);

            let newname = console.log(name);
            let newid = console.log(id);

            const embed = new Discord.MessageEmbed()
              .setTitle(`Emoji added! <:${newname}:${newid}>`)
              .setColor(0x7732a8);
            message.channel.send(embed);
          }
        }
      }
    }
  }
};

标签: node.jsdiscorddiscord.js

解决方案


GuildEmojiManager#create()返回一个带有新创建的表情符号的 Promise。您可以通过处理此承诺来访问和显示新的表情符号,然后使用<:name:id>emoijs 的包装器

message.guild.emojis.create(url, name).then(newEmoji => {
   const embed = new Discord.MessageEmbed()
      .setTitle(`Emoji added! <:${newEmoji.name}:${newEmoji.id}>`)
      .setColor(0x7732a8)
   message.channel.send(embed);
});

推荐阅读