#javascript #node.js #discord.js
#javascript #node.js #discord.js
Вопрос:
Я пытался создать команду роли реакции, которая назначает роли участникам в зависимости от их реакции на указанное message
. Пока все работает, за исключением случаев, когда я перезапускаю бота. После перезапуска это message
, на которое нужно отреагировать, удаляется, и я должен создать новое.
Это моя попытка до сих пор:
const Discord = require("discord.js");
const botsettings = require("../botsettings.json");
const guildidDB = require('../models/ModSchema');
module.exports.run = async (bot, message, arg) => {
const bot = new Discord.Client({partials: ["MESSAGE", "CHANNEL", "REACTION"]});
if (!message.member.hasPermission('MANAGE_MESSAGES')) return message.channel.send('**You do not have permission to execute this command!**')
const channel = message.mentions.channels.first()
const RedRole = message.guild.roles.cache.find(role => role.name === "Red")
const BlueRole = message.guild.roles.cache.find(role => role.name === "Blue")
const YellowRole = message.guild.roles.cache.find(role => role.name === "Yellow")
const GreenRole = message.guild.roles.cache.find(role => role.name === "Green")
const RedEmoji = '🔴'
const BlueEmoji = '🔵'
const YellowEmoji = '🟡'
const GreenEmoji = '🟢'
if(!channel) return message.channel.send(`<@${message.author.id}>, **Mention a channel to send the message in!**`)
const ReactionRoles = new Discord.MessageEmbed()
.setTitle("Select a color so your name can be cooler than everyone else's!")
.addField(`${RedEmoji} - RED`, 'ooooooo red is a nice color')
.addField(`${BlueEmoji} - BLUE`, 'Blue is ok')
.addField(`${YellowEmoji} - YELLOW`, 'Yelow is uhhh mehh')
.addField(`${GreenEmoji} - GREEN`, 'Green is kinda good')
.setColor('#e42643')
.setFooter("AYO REACT WITH THE COLOR U WANT")
let messageEmbed = await channel.send(ReactionRoles);
messageEmbed.react(RedEmoji)
messageEmbed.react(BlueEmoji)
messageEmbed.react(YellowEmoji)
messageEmbed.react(GreenEmoji)
bot.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 === "828948095571198004") {
if (reaction.emoji.name === RedEmoji) {
console.log("Added role")
await reaction.message.guild.members.cache.get(user.id).roles.add(RedRole)
}
if (reaction.emoji.name === BlueEmoji) {
console.log("Added role")
await reaction.message.guild.members.cache.get(user.id).roles.add(BlueRole)
}
if (reaction.emoji.name === YellowEmoji) {
console.log("Added role")
await reaction.message.guild.members.cache.get(user.id).roles.add(YellowRole)
}
if (reaction.emoji.name === GreenEmoji) {
console.log("Added role")
await reaction.message.guild.members.cache.get(user.id).roles.add(GreenRole)
}
} else {
return;
}
});
bot.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 === "828948095571198004") {
if (reaction.emoji.name === RedEmoji) {
await reaction.message.guild.members.cache.get(user.id).roles.remove(RedRole)
}
if (reaction.emoji.name === BlueEmoji) {
await reaction.message.guild.members.cache.get(user.id).roles.remove(BlueRole)
}
if (reaction.emoji.name === YellowEmoji) {
await reaction.message.guild.members.cache.get(user.id).roles.remove(YellowRole)
}
if (reaction.emoji.name === GreenEmoji) {
await reaction.message.guild.members.cache.get(user.id).roles.remove(GreenRole)
}
} else {
return;
}
});
}
module.exports.config = {
name: "selfroles",
description: "AAAAAAAa",
usage: "q!selfroles #channel",
accessableby: "Everyone",
aliases: ['']
}
Кто-нибудь распознает ошибку, которая приводит к удалению этого сообщения?
Комментарии:
1. Это ваш индекс? Если нет, вам следует импортировать клиент оттуда, а не создавать новый.
2.
bot.on('messageReactionAdd',
Необходимо, чтобы в вашем index.js , а не в командном файле…..