【发布时间】:2020-11-12 22:31:03
【问题描述】:
所以我为我的 discord 机器人做了一个“静音”和“警告”命令,当我尝试运行它们时出现错误。这个错误是因为在我之前的所有命令中,我在命令代码中都使用了“.execute(message, args)”,所以当我想从 index.js 中获取命令时,我只需要传递 client.commands.get('name').execute(message, args)。现在,我的命令中没有这个,那么我如何从 index.js 中获取它。我希望你明白我在说什么。
这里是 index.js:
const Discord = require('discord.js');
const { Client, Collection } = require ('discord.js');
const client = new Discord.Client();
const token = 'TOKEN';
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.on('ready', () =>{
console.log('Compass is online');
client.user.setActivity('GameCore', {type: 'WATCHING'}).catch(console.error);
})
client.on('message', message=>{
if (!message.content.startsWith(PREFIX)) return;
else {
const args = message.content.slice(PREFIX.length).split(/ +/);
const command = args.shift().toLowerCase();
if(command === 'help') {
client.commands.get('help').execute(message, args);
}
if(command === 'kick') {
client.commands.get('kick').execute(message, args);
}
if(command === 'ban') {
client.commands.get('ban').execute(message, args);
}
if(command === 'slowmode') {
client.commands.get('slowmode').execute(message, args);
}
if(command === 'warn') {
client.commands.get('warn').execute(message, args);
}
if(command === 'mute') {
client.commands.get('mute').execute(message, args);
}
}
})
client.login(token);
mute.js(warn.js 以类似的格式构建):
var Discord = require('discord.js');
var ms = require('ms');
module.export = async(message, args) => {
if(!message.member.hasPemission('MANAGE_MESSAGES')) return message.channel.send(':x:***You do not have permissions to run this command!***')
var user = message.mentions.users.first();
if(!user) return message.channel.send(':x:***Please mention a user!***')
var member;
try {
member = await message.guild.members.fetch(user);
} catch(err) {
member = null;
}
if(!member) return message.channel.send(':x:***Please mention a user!***');
if(member.hasPermission('MANAGE_MESSAGES')) return message.channel.send(':x:***You cannot mute that person!***')
var rawTime = args[1];
var time = ms(rawTime)
if(!time) return message.channel.send('You didn\'t specify a time!')
var reason = args.splice(2).join(' ');
if(!reason) return message.reply('You need to give a mute reason!');
var channel = message.guild.channels.catch.find(c => c.name === 'potato');
var log = new Discord.MessageEmbed()
.setTitle(':white_check_mark:***This user has been muted.***')
.addField('User:', user, true)
.addField('By:', message.author, true)
.addField('Expires:', rawTime)
.addField('Reason:', reason)
channel.send(log);
var embed = new Discord.MessageEmbed()
.setTitle('You have been muted!')
.addField('Expires:', rawTime, true)
.addField('Reason:', reason, true);
try {
user.send(embed);
} catch(err) {
console.warn(err);
}
var role = msg.guild.roles.cache.find(r => r.name === 'Muted');
member.roles.add(role);
setTimeout(async() => {
member.roles.remove(role);
}, time);
message.channel.send(`**${user}** has been muted by **${message.author}** for **${rawTime}**!`)
}
当我输入“-mute”或“-warn”时出现的错误:
client.commands.get('mute').execute(message, args);
^
TypeError: Cannot read property 'execute' of undefined
at Client.<anonymous> (G:\Alexis\Desktop\Compass\index.js:46:40)
at Client.emit (events.js:315:20)
at MessageCreateAction.handle (G:\Alexis\Desktop\Compass\node_modules\discord.js\src\client\actions\MessageCreate.js:31:14)
at Object.module.exports [as MESSAGE_CREATE] (G:\Alexis\Desktop\Compass\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32)
at WebSocketManager.handlePacket (G:\Alexis\Desktop\Compass\node_modules\discord.js\src\client\websocket\WebSocketManager.js:384:31)
at WebSocketShard.onPacket (G:\Alexis\Desktop\Compass\node_modules\discord.js\src\client\websocket\WebSocketShard.js:444:22)
at WebSocketShard.onMessage (G:\Alexis\Desktop\Compass\node_modules\discord.js\src\client\websocket\WebSocketShard.js:301:10)
at WebSocket.onMessage (G:\Alexis\Desktop\Compass\node_modules\ws\lib\event-target.js:125:16)
at WebSocket.emit (events.js:315:20)
at Receiver.receiverOnMessage (G:\Alexis\Desktop\Compass\node_modules\ws\lib\websocket.js:797:20)
【问题讨论】:
标签: javascript node.js discord.js