【发布时间】:2022-01-23 01:52:27
【问题描述】:
我正在为学校做一个项目,我刚刚意识到我是在 discord js v12 上构建的,但我需要它在 discord v13 上。我正在尝试解决我的代码中的问题,但在 v13 中似乎发生了很多变化。我面临最多的问题之一是DiscordAPIError: Cannot send an empty message。 v13 中的 message 和 description 发生了什么?我有很多命令要纠正,只是想了解这个问题是什么以及如何在现有代码中修复它。提前非常感谢您!
所以下面的代码是来自发送到特定频道的消息的反应角色。用户可以用表情符号做出反应,这个角色将出现在他们的个人资料中。此代码在 discord js v12 中运行良好..
const { MessageEmbed } = require('discord.js')
module.exports = {
name: 'role',
async run (client, message, args) {
const channelID = '918785339055829012';
const firstRole = message.guild.roles.cache.find(role => role.name === 'first')
const secondRole = message.guild.roles.cache.find(role => role.name === 'second')
const thirdRole = message.guild.roles.cache.find(role => role.name === 'third')
const forthRole = message.guild.roles.cache.find(role => role.name === 'forth')
const firstEmoji = '????';
const secondEmoji = '????';
const thirdEmoji = '????';
const forthEmoji = '????';
let rolesInfo = `
React to **role** to make it yours:
${firstEmoji} - first
${secondEmoji} - second
${thirdEmoji} - third
${forthEmoji} - forth`
let embed = new MessageEmbed()
.setColor('RANDOM')
.setTitle('Reaction roles')
.setDescription(rolesInfo)
let msgEmbed = await message.channel.send(embed)
msgEmbed.react(firstEmoji)
msgEmbed.react(secondEmoji)
msgEmbed.react(thirdEmoji)
msgEmbed.react(forthEmoji)
client.on('messageReactionAdd', async (reaction, user) => {
if (reaction.message.partial) await reaction.message.fetch();
if (reaction.partial) await reaction.fetch();
if (user.client) return;
if (!reaction.message.guild) return;
if (reaction.message.channel.id == channelID) {
if (reaction.emoji.name === firstEmoji) {
await reaction.message.guild.members.cache.get(user.id).roles.add(firstRole)
}
if (reaction.emoji.name === secondEmoji) {
await reaction.message.guild.members.cache.get(user.id).roles.add(secondRole)
}
if (reaction.emoji.name === thirdEmoji) {
await reaction.message.guild.members.cache.get(user.id).roles.add(thirdRole)
}
if (reaction.emoji.name === forthEmoji) {
await reaction.message.guild.members.cache.get(user.id).roles.add(forthRole)
}
} else {
return;
}
});
client.on('messageReactionRemove', async (reaction, user) => {
if (reaction.message.partial) await reaction.message.fetch();
if (reaction.partial) await reaction.fetch();
if (user.client) return;
if (!reaction.message.guild) return;
if (reaction.message.channel.id == channelID) {
if (reaction.emoji.name === firstEmoji) {
await reaction.message.guild.members.cache.get(user.id).roles.remove(firstRole)
}
if (reaction.emoji.name === secondEmoji) {
await reaction.message.guild.members.cache.get(user.id).roles.remove(secondRole)
}
if (reaction.emoji.name === thirdEmoji) {
await reaction.message.guild.members.cache.get(user.id).roles.remove(thirdRole)
}
if (reaction.emoji.name === forthEmoji) {
await reaction.message.guild.members.cache.get(user.id).roles.remove(forthRole)
}
} else {
return;
}
});
}
}
【问题讨论】:
标签: javascript node.js discord discord.js bots