我最近使用javascript创建了一个discord bot,当我执行!purge时,响应“未知命令,执行!help以查看命令列表”,但说完之后,便删除了消息。我不知道是什么问题,请帮帮我
const commando = require('discord.js-commando');
const bot = new commando.Client();
const prefix = '!';
bot.on('message', message => {
let msg = message.content.toUpperCase();
let sender = message.author;
let cont = message.content.slice(prefix.length).split(" ");
let args = cont.slice(1);
if (msg.startsWith(prefix + 'PURGE')) {
async function purge() {
message.delete();
if (isNaN(args[0])) {
message.channel.send('Please input a number of messages to be deleted \n Syntax: ' + prefix + 'purge <amount>');
return;
}
const fetched = await message.channel.fetchMessages({limit: args[0]});
console.log(fetched.size + ' messages found, deleting...');
// Deleting the messages
message.channel.bulkDelete(fetched)
.catch(error => message.channel.send(`Error: ${error}`));
}
purge();
}
});
bot.login('MY BOT TOKEN HERE');
最佳答案
现在,您正在使用discord.js-commando
库。您决定使用该库的任何理由?看来您只是在使用标准的discord.js
函数,例如bot.on
,message.channel.send
,message.channel.fetchMessages
,message.channel.bulkDelete
...
只需使用标准的discord.js
库,就可以从此开始代码:
const Discord = require('discord.js');
const bot = new Discord.Client();
您可以在Discord.js的“欢迎”主页上找到此代码。
编辑:
我仍然不确定为什么要使用
discord.js-commando
,但这没关系。这是我使用discord.js-commando
库想出的示例命令:const commando = require('discord.js-commando');
class PurgeCommand extends commando.Command {
constructor(client) {
super(client, {
name: 'purge',
group: 'random', // like your !roll command
memberName: 'purge',
description: 'Purge some messages from a Text Channel.',
examples: ['purge 5'],
args: [
{
key: 'numToPurge',
label: 'number',
prompt: 'Please input a number ( > 0) of messages to be deleted.',
type: 'integer'
}
]
});
}
run(msg, { numToPurge }) {
let channel = msg.channel;
// fail if number of messages to purge is invalid
if (numToPurge <= 0) {
return msg.reply('Purge number must be greater than 0');
}
// channel type must be text for .bulkDelete to be available
else if (channel.type === 'text') {
return channel.fetchMessages({limit: numToPurge})
.then(msgs => channel.bulkDelete(msgs))
.then(msgs => msg.reply(`Purge deleted ${msgs.size} message(s)`))
.catch(console.error);
}
else {
return msg.reply('Purge command only available in Text Channels');
}
}
};
module.exports = PurgeCommand
我还建议使用新的
type
而不是integer
,以便您可以验证用户的响应并确保他们输入的数字大于0。如果您需要有关设置初始
discord.js-commando
脚本的帮助,请查看Discord团队提供的以下存储库:https://github.com/discordjs/Commando/tree/master/test