【发布时间】:2021-01-11 19:20:33
【问题描述】:
我制作了一个 Discord 机器人来处理“反应角色”。用户可以对消息做出反应以获得角色。
现在,嵌入和反应已添加,但之后立即崩溃:
embedMsg.message.react('????') ^
TypeError:无法读取未定义的属性“反应” 在客户端。 (C:\Users\rdvdn\Desktop\Bot\Bot.js:19:34) 在 Client.emit (events.js:311:20) 在 MessageCreateAction.handle (C:\Users\rdvdn\Desktop\Bot\node_modules\discord.js\src\client\actions\MessageCreate.js:31:14) 在 Object.module.exports [as MESSAGE_CREATE] (C:\Users\rdvdn\Desktop\Bot\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32) 在 WebSocketManager.handlePacket (C:\Users\rdvdn\Desktop\Bot\node_modules\discord.js\src\client\websocket\WebSocketManager.js:384:31) 在 WebSocketShard.onPacket (C:\Users\rdvdn\Desktop\Bot\node_modules\discord.js\src\client\websocket\WebSocketShard.js:444:22) 在 WebSocketShard.onMessage (C:\Users\rdvdn\Desktop\Bot\node_modules\discord.js\src\client\websocket\WebSocketShard.js:301:10) 在 WebSocket.onMessage (C:\Users\rdvdn\Desktop\Bot\node_modules\ws\lib\event-target.js:125:16) 在 WebSocket.emit (events.js:311:20) 在 Receiver.receiverOnMessage (C:\Users\rdvdn\Desktop\Bot\node_modules\ws\lib\websocket.js:797:20)
我认为该错误可能是由于 Discord.js 的 v12 造成的。 我不确定它为什么会崩溃,但确实添加了嵌入和反应,如果我能得到任何帮助,我将不胜感激。
我现在的代码如下:
const { Client, MessageEmbed } = require('discord.js');
const client = new Client();
const TOKEN = require('./config.json');
client.login(TOKEN.token);
client.on('ready', () => {
console.log("Bot is online and ready!")
})
client.on('message', message =>{
if(message.author.bot)
{
if(message.embeds)
{
const embedMsg = message.embeds.find(msg => msg.title === 'Application Access');
if(embedMsg)
{
embedMsg.message.react('????')
.then(reaction => reaction.message.react('????'))
.catch(err => console.error);
}
}
return;
}
if(message.content.toLowerCase() === ']roles')
{
const embed = new MessageEmbed();
embed.setTitle("Application Access");
embed.setColor("GREEN");
embed.setDescription("React with the emoji and you will be able to apply for Logistics!\n" +
"\n" +
"\???? - Applicant");
message.channel.send(embed);
}
})
client.on('messageReactionAdd', (reaction, user) => {
if(user.bot)
return;
var roleName = "Applicant";
var role = reaction.message.guild.roles.find(role => role.name.toLowerCase() === roleName.toLowerCase());
var member = reaction.message.guild.members.find(member => member.id === user.id);
member.addRole(role.id).then(member => {
console.log("Added " + member.user.username + " to Applicant.");
}).catch(err => console.error);
});
client.on('messageReactionRemove', (reaction, user) => {
if(user.bot)
return;
var roleName = "Applicant";
var role = reaction.message.guild.roles.find(role => role.name.toLowerCase() === roleName.toLowerCase());
var member = reaction.message.guild.members.find(member => member.id === user.id);
if(member.roles.has(role.id))
{
member.removeRole(role.id).then(member => {
console.log("Removed " + member.user.username + " from Applicant role.");
}).catch(err => console.error);
}
})
感谢任何帮助!
【问题讨论】:
标签: discord discord.js