[英]Discord bot - Purge command not working discord.js-commando
我最近使用 node js 創建了一個 discord bot,當我執行!purge
,用Unknown command, do !help to view a list of command
響應Unknown command, do !help to view a list of command
但在說完之后,它正在清除消息。 也就是說,它運行良好,但發布了該錯誤消息。 我不知道是什么問題請幫助我
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 團隊提供的這個 repo: https : //github.com/discordjs/Commando/tree/master/test
你可能想用這個。 此清除命令適用於 discord.js v11.5.1,我尚未測試它是否適用於 v12,但我認為這可能對您有用。 我應該說這會刪除頻道內的所有內容(嵌套命令)
exports.run = (bot, message, args) => {
let filter = m => message.author.id === message.author.id;
message.channel.send("Are you sure you wanna delete all messages? (y/n)").then(() => {
message.channel.awaitMessages(filter, {
max: 1,
time: 30000,
errors: ['time']
})
.then(message => {
message = message.first();
if (message.content.toUpperCase() == "YES" || message.content.toUpperCase() == "Y") {
message.channel.bulkDelete(100);
} else if (message.content.toUpperCase() == "NO" || message.content.toUpperCase() == "N") {
message.channel.send("Terminated").then(() => {message.delete(2000)});
} else {
message.delete();
}
})
.catch(collected => {
message.channel.send("Timeout").then(() => {message.delete(2000)});
});
}).catch(error => {
message.channel.send(error);
});
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.