node.js - 在 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);
}
}
}
}
}
};
解决方案
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);
});
推荐阅读
- python - Pygame:图像/精灵没有出现在移动的背景上
- python - 你将如何使用 tkinter 创建一个基本的翻译器?
- react-native - clearInterval 在本机反应中不起作用
- excel - Worksheet_Change 按钮单击后未触发宏已添加到模块
- azure - Azure Terraform 初始设置
- ruby - 如何将 github 包与另一个 repo 关联?
- jquery - 如何从第一个输入标签的功能运行第二个输入标签的输入功能
- sql-server - 当存在 NULL 时执行 ORDER BY CAST
- javascript - 为什么我使用 Bootstrap 得到函数 $.ajax 未定义错误?
- reactjs - how to call a React function in a loop without an event?