gpt4 book ai didi

javascript - Discord bot - 清除命令不起作用 discord.js-commando

转载 作者:行者123 更新时间:2023-11-29 23:24:30 26 4
gpt4 key购买 nike

我最近使用 node js 创建了一个 discord 机器人,当我执行 !purge 时,它会响应 Unknown command,执行 !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.onmessage.channel.sendmessage。 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 团队提供的这个 repo:https://github.com/discordjs/Commando/tree/master/test

关于javascript - Discord bot - 清除命令不起作用 discord.js-commando,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49712202/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com