javascript - 如何在 discord.js 代码中添加自定义表情符号?
问题描述
每当我运行我的代码时,我都会收到此错误
(node:552) UnhandledPromiseRejectionWarning: DiscordAPIError: Unknown Emoji。
我试图添加我自己的表情符号,但那不起作用,我是 discord.js 的初学者这是我第一次实际使用反应角色,所以我不知道如何使用它们。使用正常的表情符号工作,但我想使用我的自定义表情符号
这是我的代码:
const Discord = require("discord.js");
const { MessageEmbed } = require("discord.js");
const { Color } = require("../../config.js");
module.exports = {
name: 'reactionrole',
aliases: [],
permissions: [],
description: "Sets up a reaction role message!",
run: async (client, message, args) => {
let FortniteEmoji = client.emojis.cache.get("879625063643635713");
let ApexEmoji = client.emojis.cache.get("879624843920809985");
const channel = '869871201621790741';
const RavineaRole = message.guild.roles.cache.find(role => role.name === "Fortnite Tryouts");
const YouAgainRole = message.guild.roles.cache.find(role => role.name === "Apex Legends Tryouts");
const RavineaEmoji = `FortniteEmoji`;
const YouAgainEmoji = `ApexEmoji`;
let embed = new Discord.MessageEmbed()
.setColor('#e42643')
.setTitle('Tryout For The Following Games!')
.setDescription('Enter The Tryouts!\n\n'
+ `${RavineaEmoji} for Fortnite\n`
+ `${YouAgainEmoji} for Apex Legends`);
let messageEmbed = await message.channel.send(embed);
messageEmbed.react(RavineaEmoji);
messageEmbed.react(YouAgainEmoji);
client.on('messageReactionAdd', async (reaction, user) => {
if (reaction.message.partial) await reaction.message.fetch();
if (reaction.partial) await reaction.fetch();
if (user.bot) return;
if (!reaction.message.guild) return;
if (reaction.message.channel.id == channel) {
if (reaction.emoji.name === RavineaEmoji) {
await reaction.message.guild.members.cache.get(user.id).roles.add(RavineaRole);
}
if (reaction.emoji.name === YouAgainEmoji) {
await reaction.message.guild.members.cache.get(user.id).roles.add(YouAgainRole);
}
} else {
return;
}
});
client.on('messageReactionRemove', async (reaction, user) => {
if (reaction.message.partial) await reaction.message.fetch();
if (reaction.partial) await reaction.fetch();
if (user.bot) return;
if (!reaction.message.guild) return;
if (reaction.message.channel.id == channel) {
if (reaction.emoji.name === RavineaEmoji) {
await reaction.message.guild.members.cache.get(user.id).roles.remove(RavineaRole);
}
if (reaction.emoji.name === YouAgainEmoji) {
await reaction.message.guild.members.cache.get(user.id).roles.remove(YouAgainRole);
}
} else {
return;
}
});
}
}
解决方案
看起来您已将表情符号定义为字符串,因此您正尝试使用字符串对消息做出反应,但这是行不通的。
解决方案:
const Discord = require("discord.js");
const { MessageEmbed } = require("discord.js");
const { Color } = require("../../config.js");
module.exports = {
name: 'reactionrole',
aliases: [],
permissions: [],
description: "Sets up a reaction role message!",
run: async (client, message, args) => {
let FortniteEmoji = client.emojis.cache.get("879625063643635713");
let ApexEmoji = client.emojis.cache.get("879624843920809985");
const channel = '869871201621790741';
const RavineaRole = message.guild.roles.cache.find(role => role.name === "Fortnite Tryouts");
const YouAgainRole = message.guild.roles.cache.find(role => role.name === "Apex Legends Tryouts");
const RavineaEmoji = FortniteEmoji;
const YouAgainEmoji = ApexEmoji;
let embed = new Discord.MessageEmbed()
.setColor('#e42643')
.setTitle('Tryout For The Following Games!')
.setDescription('Enter The Tryouts!\n\n'
+ `${RavineaEmoji} for Fortnite\n`
+ `${YouAgainEmoji} for Apex Legends`);
let messageEmbed = await message.channel.send(embed);
messageEmbed.react(RavineaEmoji);
messageEmbed.react(YouAgainEmoji);
client.on('messageReactionAdd', async (reaction, user) => {
if (reaction.message.partial) await reaction.message.fetch();
if (reaction.partial) await reaction.fetch();
if (user.bot) return;
if (!reaction.message.guild) return;
if (reaction.message.channel.id == channel) {
if (reaction.emoji.name === RavineaEmoji)
await reaction.message.guild.members.cache.get(user.id).roles.add(RavineaRole);
if (reaction.emoji.name === YouAgainEmoji)
await reaction.message.guild.members.cache.get(user.id).roles.add(YouAgainRole);
} else
return;
});
client.on('messageReactionRemove', async (reaction, user) => {
if (reaction.message.partial) await reaction.message.fetch();
if (reaction.partial) await reaction.fetch();
if (user.bot) return;
if (!reaction.message.guild) return;
if (reaction.message.channel.id == channel) {
if (reaction.emoji.name === RavineaEmoji) {
await reaction.message.guild.members.cache.get(user.id).roles.remove(RavineaRole);
}
if (reaction.emoji.name === YouAgainEmoji) {
await reaction.message.guild.members.cache.get(user.id).roles.remove(YouAgainRole);
}
} else {
return;
}
});
}
}
推荐阅读
- django - 如何限制 Django admin 中的非超级用户用户选择所有用户组/权限?
- python - Matplotlib 自动更改我的绘图范围
- javascript - 即使使用 module.exports,NodeJS 和 MongoDB 也会丢失变量的定义
- python - Pandas -> 很好地阅读无定形 JSON?
- docker - 在 docker 上本地运行 HAProxy 的问题
- r - R:将彼此相邻的日期分组
- python - Selenium SessionNotCreatedException 无法找到一组匹配的功能
- r - 在 R 中的列表列表上使用 group_split
- java - 从 Jgit 中的远程分支拉取自证书错误
- r - 从R中的不同时间步减去值