#discord.js
#discord.js
Вопрос:
Я кодирую бота discord, но я добавил к нему музыкальные команды, и теперь команда очистки не работает.
index.js:
const Discord = require('discord.js');
const client = new Discord.Client({ partials: ["MESSAGE", "CHANNEL", "REACTION"]});
const prefix = '-';
const fs = require('fs');
client.commands = new Discord.Collection();
const commandFiles = fs.readdirSync('./commands').filter(file => file.endsWith('.js'));
for(const file of commandFiles){
const command = require(`./commands/${file}`);
client.commands.set(command.name, command)
}
client.once('ready', () => {
console.log('This bot is online!');
});
client.on('guildMemberAdd', guildMember =>{
let welcomeRole = guildMember.guild.roles.cache.find(role => role.name === 'member');
guildMember.roles.add(welcomeRole);
guildMember.guild.channels.cache.get('641315807745277993').send(`Welcome <@${guildMember.user.id}> to our server! Make sure to check out the <#791405102396735528> text channel!`)
});
client.on('message', message =>{
message.member.roles.cache.has
if(!message.content.startsWith(prefix) || message.author.bot) return;
const args = message.content.slice(prefix.length).split(/ /);
const command = args.shift().toLowerCase();
if(command === 'ping'){
client.commands.get('ping').execute(message, args);
} else if (command == 'youtube'){
client.commands.get('youtube').execute(message, args, Discord);
} else if (command == 'command'){
client.commands.get('command').execute(message, args, Discord);
} else if (command == 'clear'){
client.commands.get('clear').execute(message, args);
} else if (command == 'kick'){
client.commands.get('kick').execute(message, args);
} else if (command == 'ban'){
client.commands.get('ban').execute(message, args);
} else if (command =='mute'){
client.commands.get('mute').execute(message, args);
} else if (command =='unmute'){
client.commands.get('unmute').execute(message, args);
} else if (command =='reactionrole'){
client.commands.get('reactionrole').execute(message, args, Discord, client);
} else if (command =='play'){
client.commands.get('play').execute(message, args, Discord, client);
} else if (command =='leave'){
client.commands.get('leave').execute(message, args, Discord, client);
}
});
client.login('[BOT_TOKEN]');
clear.js:
module.exports = {
name: 'clear',
description: 'Clear messages!',
async execute(message, args){
if(!args[0]) return message.reply("Please enter the amount of messages that you want to clear!");
if(isNaN(args[0])) return message.reply("Please enter a real number!");
if(args[0] > 100) return message.reply("You cannot delete more than 100 messages!");
if(args[0] < 1) return message.reply("You must delete at least one message!");
await message.channel.messages.fetch({limit: args[0]}).then (messages =>{
message.channel.bulkDelete(messages);
})
}
}
Может кто-нибудь сказать мне, что я сделал не так? Кажется, я не могу найти проблему в своем коде.
Музыкальная часть бота работает нормально, и другие команды тоже работают нормально, но я добавил музыкальную часть, и теперь clear не работает, она работала нормально до того, как я добавил музыкальные команды.
Комментарии:
1. Я действительно этого не понимаю… Если у вас есть обработчик команд, который позволяет вам создавать команду, подобную той, что у вас есть в команде очистки, почему вы создаете событие сообщения вместо того, чтобы просто создать другую команду, похожую на команду очистки?
2. По иронии судьбы, я не понимаю, что вы под этим подразумеваете.
Ответ №1:
Я понял это (facepalm) Я забыл закодировать команду leave для музыкального бота, и я использовал начало команды clear для создания module.exports
части, поэтому leave.js
файл был назван clear в файле.