Javascript Discord bot-清除命令不起作用Discord.js-commando
我最近使用node js创建了一个discord机器人,当我这样做时,Javascript Discord bot-清除命令不起作用Discord.js-commando,javascript,bots,discord,discord.js,Javascript,Bots,Discord,Discord.js,我最近使用node js创建了一个discord机器人,当我这样做时,!清除,响应未知命令,执行!帮助查看命令列表,但说出后,它将清除消息。也就是说,它工作得很好,但会发布错误消息。我不知道有什么问题,请帮帮我 const commando = require('discord.js-commando'); const bot = new commando.Client(); const prefix = '!'; bot.on('message', message => {
!清除
,响应未知命令,执行!帮助查看命令列表
,但说出后,它将清除消息。也就是说,它工作得很好,但会发布错误消息。我不知道有什么问题,请帮帮我
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');
const commando=require('discord.js commando');
const bot=new commando.Client();
常量前缀='!';
bot.on('message',message=>{
让msg=message.content.toUpperCase();
让发件人=message.author;
让cont=message.content.slice(前缀.length).split(“”);
设args=cont.slice(1);
如果(msg.startsWith(前缀+'PURGE')){
异步函数清除(){
message.delete();
if(isNaN(args[0])){
message.channel.send('请输入一些要删除的消息\n语法:'+前缀+'清除');
返回;
}
const fetched=wait message.channel.fetchMessages({limit:args[0]});
log(fetched.size+'找到消息,删除…');
//删除消息
message.channel.bulkDelete(已获取)
.catch(error=>message.channel.send(`error:${error}`));
}
清除();
}
});
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 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
const commando=require('discord.js commando');
类PurgeCommand扩展了commando.Command{
建造商(客户){
超级(客户、{
名称:“清除”,
组:'random',//就像您的!roll命令一样
memberName:“清除”,
描述:“清除文本频道中的某些邮件。”,
示例:['purge 5'],
args:[
{
键:“numToPurge”,
标签:“编号”,
提示:“请输入要删除的邮件数(>0)。”,
类型:“整数”
}
]
});
}
运行(msg,{numToPurge}){
让channel=msg.channel;
//如果要清除的消息数无效,则失败
if(numToPurge通道.批量删除(msgs))
.then(msgs=>msg.reply(`Purge deleted${msgs.size}消息`)
.catch(控制台错误);
}
否则{
返回msg.reply('清除命令仅在文本频道中可用');
}
}
};
module.exports=PurgeCommand
我还建议使用新的类型
而不是整数
,这样您就可以验证用户的响应,并确保他们输入的数字大于0
如果您需要帮助设置初始的
discord.js commando
脚本,我会看看discord团队提供的这个repo:您可能需要使用它。这个清除命令是针对discord.jsv11.5.1的,我还没有测试它在v12上是否有效,但我认为这可能适合您。我应该说这会删除频道内的所有内容(嵌套命令)
我使用discord-js.commmando作为我可以执行的其他命令!滚动,但更改为您所说的内容也会在我执行
时发送错误消息!清除
它说有时错误:DiscordAPIError:未知消息我会发送错误,那么我该怎么办now@RaviKiran-查看我的新答案,这是一个使用discord.js commando
的示例命令。如果你有疑问,请告诉我。我是否需要添加删除我的命令?如果我这样做了,那就不是说没有这样的命令了。谢谢你的帮助,但是你知道,我问这个问题已经2年9个月了,现在我已经进步了很多,所以这对我来说很简单,我不再使用discord.js-commando。顺便说一句,这段代码只删除最后100条消息,而不是频道中的所有消息,不要真正使用discord.js v11,当discord停止使用discord.js的API版本时,它很快就会崩溃,该版本本打算在10月到11月之间完成,但他们仍然没有完成,所以您必须尽快切换到v12 tbhtbh,我使用v11作为我的selfbot,现在我已经习惯了v11。。我讨厌语法更改,我不想仅仅为了discord.py而学习python。让我们把你自己的令牌放进去v11很快就会停止工作,尽管我知道,我希望它在支持被取消后仍然稳定:(
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);
});
};