![](/img/trans.png)
[英]Discord bot - Purge command not working discord.js-commando
[英]Discord.JS-Commando Purge.JS Not Firing
喲,所以我試圖將我的清除命令讀取到我正在構建的 discord 機器人中,它一直聲稱該數字無效。
基本上它在代碼響應中拋出第一個錯誤。
有誰知道我在代碼中搞砸了什么? 對於這方面的任何幫助,我將不勝感激。
這是我的purge.js
代碼:
const Discord = require('discord.js');
const { Command } = require('discord.js-commando');
module.exports = class PurgeCommand extends Command {
constructor(client) {
super(client, {
name: 'purge',
aliases: ['p', 'c', 'clean'],
group: 'admin',
memberName: 'purge',
description: 'Purge some messages from a Text Channel.',
examples: ['purge 5'],
guildOnly: true,
throttling: {
usages: 1,
duration: 3
},
clientPermissions: ['MANAGE_CHANNELS'],
userPermissions: ['MANAGE_CHANNELS'],
args: [
{
key: 'amount',
label: 'number',
prompt: 'Please input a number between 0 and 100.',
type: 'integer'
}
]
});
}
run(message, args) {
const amount = parseInt(args[0]) + 1;
if (isNaN(amount)) {
return message.reply('```css\n[ERROR] Please provide a valid number.\n```');
} else if (amount <= 0 || amount > 100) {
return message.reply('```css\n[ERROR] You need to input a number between 0 and 100.\n```');
}
message.channel.bulkDelete(amount, true).then(deletedMessages => {
var botMessages = deletedMessages.filter(m => m.author.bot);
var userPins = deletedMessages.filter(m => m.pinned);
var userMessages = deletedMessages.filter(m => !m.author.bot);
const embed = new Discord.MessagEmbed()
.setTitle("Purge Command Issued")
.setDescription('The following messages have been purged.')
.setColor('RANDOM')
.setFooter('TwitchBot | twitchbot.newhorizon.dev', 'https://images-ext-2.discordapp.net/external/6vZM6YeZGzfxd4PF_aw3UnNHZafkdNlRoLp46YJ7hkU/%3Fsize%3D256/https/cdn.discordapp.com/avatars/779442792324661249/26206ede07f20447bf380df44b429db7.png')
.setThumbnail('https://images-ext-2.discordapp.net/external/6vZM6YeZGzfxd4PF_aw3UnNHZafkdNlRoLp46YJ7hkU/%3Fsize%3D256/https/cdn.discordapp.com/avatars/779442792324661249/26206ede07f20447bf380df44b429db7.png')
.setTimestamp()
.setURL("https://twitchbot.newhorizon.dev")
.addField("Bot Messages Purged", botMessages.size, false)
.addField("User Pins Purged", userPins.size, false)
.addField("User Messages Purged", userMessages.size, false)
.addField("Total Messages Purged", deletedMessages.size, false);
message.channel.send(embed);
})
.then(console.log(args[0]))
.catch(err => {
console.error(err);
message.channel.send('There was an error with the command! Please contact a developer via our Discord!');
});
}
};
如果有幫助,我正在運行node
: 12.0.0
和discord.js
: 12.5.1
。
- 編輯 -
從頂部刪除以下代碼:
if (isNaN(amount)) {
return message.reply('```css\n[ERROR] Please provide a valid number.\n```');
} else if (amount <= 0 || amount > 100) {
return message.reply('```css\n[ERROR] You need to input a number between 0 and 100.\n```');
}
在控制台中顯示以下錯誤:
TypeError [MESSAGE_BULK_DELETE_TYPE]: The messages must be an Array, Collection, or number.
at TextChannel.bulkDelete (/app/node_modules/discord.js/src/structures/interfaces/TextBasedChannel.js:361:11)
at PurgeCommand.run (/app/commands/admin/purge.js:33:25)
at CommandoMessage.run (/app/node_modules/discord.js-commando/src/extensions/message.js:222:34)
at runMicrotasks (<anonymous>)
at processTicksAndRejections (internal/process/task_queues.js:97:5)
at async CommandDispatcher.handleMessage (/app/node_modules/discord.js-commando/src/dispatcher.js:143:19) {
[Symbol(code)]: 'MESSAGE_BULK_DELETE_TYPE'
- -編輯 - -
添加了.then(console.log(args[0]))
並得到了這個:
debug: Running command admin:purge.
undefined
TypeError [MESSAGE_BULK_DELETE_TYPE]: The messages must be an Array, Collection, or number.
at TextChannel.bulkDelete (/app/node_modules/discord.js/src/structures/interfaces/TextBasedChannel.js:361:11)
at PurgeCommand.run (/app/commands/admin/purge.js:33:25)
at CommandoMessage.run (/app/node_modules/discord.js-commando/src/extensions/message.js:222:34)
at processTicksAndRejections (internal/process/task_queues.js:97:5)
at async CommandDispatcher.handleMessage (/app/node_modules/discord.js-commando/src/dispatcher.js:143:19) {
[Symbol(code)]: 'MESSAGE_BULK_DELETE_TYPE'
}
--- 編輯 03/14/2021 1 ---
好的,所以仍在嘗試使其正常工作,這就是我目前擁有的。
const Discord = require('discord.js');
const { Command } = require('discord.js-commando');
module.exports = class PurgeCommand extends Command {
constructor(client) {
super(client, {
name: 'purge',
aliases: ['p', 'c', 'clean'],
group: 'mod',
memberName: 'purge',
description: 'Purge some messages from a Text Channel.',
examples: ['purge 5'],
guildOnly: true,
throttling: {
usages: 1,
duration: 3
},
clientPermissions: ['MANAGE_MESSAGES'],
userPermissions: ['MANAGE_MESSAGES'],
args: [{
key: 'purgeamnt',
label: 'Number',
prompt: 'Please input a number between 0 and 100.',
type: 'integer'
}]
});
}
run(msg, args) {
let ch = msg.channel;
var purgeamnt = args[0];
var purgelimit = Number(purgeamnt) + 1;
msg.channel.messages.fetch({ limit: purgelimit }).then(messages => {
msg.channel.bulkDelete(messages).then(deletedMessages => {
var botMessages = deletedMessages.filter(m => m.author.bot);
var userPins = deletedMessages.filter(m => m.pinned);
var userMessages = deletedMessages.filter(m => !m.author.bot);
if (purgeamnt <= 0) {
return msg.reply('Please input a number between 0 and 100.');
} else if (channel => channel.type === 'text') {
const embed = new Discord.MessagEmbed()
.setAuthor('Twitchbot', 'https://images-ext-2.discordapp.net/external/6vZM6YeZGzfxd4PF_aw3UnNHZafkdNlRoLp46YJ7hkU/%3Fsize%3D256/https/cdn.discordapp.com/avatars/779442792324661249/26206ede07f20447bf380df44b429db7.png')
.setTitle("Purge Command Issued")
.setDescription('The following messages have been purged.')
.setColor('RANDOM')
.setFooter('Twitchbot | twitchbot.newhorizon.dev', 'https://images-ext-2.discordapp.net/external/6vZM6YeZGzfxd4PF_aw3UnNHZafkdNlRoLp46YJ7hkU/%3Fsize%3D256/https/cdn.discordapp.com/avatars/779442792324661249/26206ede07f20447bf380df44b429db7.png')
.setThumbnail('https://images-ext-2.discordapp.net/external/6vZM6YeZGzfxd4PF_aw3UnNHZafkdNlRoLp46YJ7hkU/%3Fsize%3D256/https/cdn.discordapp.com/avatars/779442792324661249/26206ede07f20447bf380df44b429db7.png')
.setTimestamp(new Date().toISOString())
.addField("Bot Messages Purged", botMessages.size, false)
.addField("User Pins Purged", userPins.size, false)
.addField("User Messages Purged", userMessages.size, false)
.addField("Total Messages Purged", deletedMessages.size, false);
ch.send(embed);
}
})
.then(console.log(args[0]))
.catch(err => {
console.error(err);
ch.send('```css\n[ERROR] ' + err.code + ': [' + err.message + ']\n```');
})
});
}
};
好的,這是它拋出的控制台錯誤:
2021-03-14T19:21:22.109551+00:00 app[worker.1]: Unhandled rejection: DiscordAPIError: Invalid Form Body
2021-03-14T19:21:22.109553+00:00 app[worker.1]: limit: Value "NaN" is not int.
2021-03-14T19:21:22.114093+00:00 app[worker.1]: DiscordAPIError: Invalid Form Body
2021-03-14T19:21:22.114094+00:00 app[worker.1]: limit: Value "NaN" is not int.
2021-03-14T19:21:22.114095+00:00 app[worker.1]: at RequestHandler.execute (/app/node_modules/discord.js/src/rest/RequestHandler.js:154:13)
2021-03-14T19:21:22.114095+00:00 app[worker.1]: at processTicksAndRejections (internal/process/task_queues.js:97:5)
2021-03-14T19:21:22.114096+00:00 app[worker.1]: at async RequestHandler.push (/app/node_modules/discord.js/src/rest/RequestHandler.js:39:14)
2021-03-14T19:21:22.114096+00:00 app[worker.1]: at async MessageManager._fetchMany (/app/node_modules/discord.js/src/managers/MessageManager.js:140:18) {
2021-03-14T19:21:22.114097+00:00 app[worker.1]: method: 'get',
2021-03-14T19:21:22.114097+00:00 app[worker.1]: path: '/channels/812939122519703572/messages?limit=NaN',
2021-03-14T19:21:22.114098+00:00 app[worker.1]: code: 50035,
2021-03-14T19:21:22.114098+00:00 app[worker.1]: httpStatus: 400
2021-03-14T19:21:22.114099+00:00 app[worker.1]: }
--- 編輯 2021 年 3 月 14 日 2 ---
const Discord = require('discord.js');
const { Command } = require('discord.js-commando');
module.exports = class PurgeCommand extends Command {
constructor(client) {
super(client, {
name: 'purge',
aliases: ['p', 'c', 'clean'],
group: 'mod',
memberName: 'purge',
description: 'Purge some messages from a Text Channel.',
examples: ['purge 5'],
guildOnly: true,
throttling: {
usages: 1,
duration: 3
},
clientPermissions: ['MANAGE_MESSAGES'],
userPermissions: ['MANAGE_MESSAGES'],
args: [{
key: 'amount',
label: 'Number',
prompt: 'Please input a number between 0 and 100.',
type: 'integer'
}]
});
}
run(msg, args) {
let ch = msg.channel;
const amount = Number(args.amount)
if (Number.isNaN(amount)) {
return msg.reply('```css\n[ERROR] Please provide a valid number.\n```')
}
if (amount <= 0 || amount > 100) {
return msg.reply(
'```css\n[ERROR] You need to input a number between 0 and 100.\n```'
)
}
const limit = amount + 1
const messages = msg.channel.messages.fetch({ limit })
const deletedMessages = msg.channel.bulkDelete(messages).then(deletedMessages => {
var botMessages = deletedMessages.filter(m => m.author.bot);
var userPins = deletedMessages.filter(m => m.pinned);
var userMessages = deletedMessages.filter(m => !m.author.bot);
const embed = new Discord.MessagEmbed()
embed.setAuthor('Twitchbot', 'https://images-ext-2.discordapp.net/external/6vZM6YeZGzfxd4PF_aw3UnNHZafkdNlRoLp46YJ7hkU/%3Fsize%3D256/https/cdn.discordapp.com/avatars/779442792324661249/26206ede07f20447bf380df44b429db7.png')
embed.setTitle("Purge Command Issued")
embed.setDescription('The following messages have been purged.')
embed.setColor('RANDOM')
embed.setFooter('Twitchbot | twitchbot.newhorizon.dev', 'https://images-ext-2.discordapp.net/external/6vZM6YeZGzfxd4PF_aw3UnNHZafkdNlRoLp46YJ7hkU/%3Fsize%3D256/https/cdn.discordapp.com/avatars/779442792324661249/26206ede07f20447bf380df44b429db7.png')
embed.setThumbnail('https://images-ext-2.discordapp.net/external/6vZM6YeZGzfxd4PF_aw3UnNHZafkdNlRoLp46YJ7hkU/%3Fsize%3D256/https/cdn.discordapp.com/avatars/779442792324661249/26206ede07f20447bf380df44b429db7.png')
embed.setTimestamp(new Date().toISOString())
embed.addField("Bot Messages Purged", botMessages.size, false)
embed.addField("User Pins Purged", userPins.size, false)
embed.addField("User Messages Purged", userMessages.size, false)
embed.addField("Total Messages Purged", deletedMessages.size, false);
ch.send(embed = embed);
})
.then(console.log(args[0]))
.catch(err => {
console.error(err);
msg.reply('```css\n[ERROR] ' + err.code + ': [' + err.message + ']\n```');
})
}
};
--- 編輯 2021 年 3 月 14 日 3 ---
const Discord = require('discord.js');
const { Command } = require('discord.js-commando');
module.exports = class PurgeCommand extends Command {
constructor(client) {
super(client, {
name: 'purge',
aliases: ['p', 'c', 'clean'],
group: 'mod',
memberName: 'purge',
description: 'Purge some messages from a Text Channel.',
examples: ['purge 5'],
guildOnly: true,
throttling: {
usages: 1,
duration: 3
},
clientPermissions: ['MANAGE_MESSAGES'],
userPermissions: ['MANAGE_MESSAGES'],
args: [{
key: 'amount',
label: 'Number',
prompt: 'Please input a number between 0 and 100.',
type: 'integer'
}]
});
}
async run(msg, args) {
let channel = msg.channel;
const amount = Number(args.amount)
if (Number.isNaN(amount)) {
return msg.reply('```css\n[ERROR] Please provide a valid number.\n```')
}
if (amount <= 0 || amount > 100) {
return msg.reply(
'```css\n[ERROR] You need to input a number between 0 and 100.\n```'
)
}
const limit = amount + 1
const messages = await msg.channel.messages.fetch({ limit })
const deletedMessages = await msg.channel.bulkDelete(messages).then(deletedMessages => {
var botMessages = deletedMessages.filter(m => m.author.bot);
var userPins = deletedMessages.filter(m => m.pinned);
var userMessages = deletedMessages.filter(m => !m.author.bot);
let embed = new Discord.MessageEmbed();
embed.setAuthor('Twitchbot', 'https://images-ext-2.discordapp.net/external/6vZM6YeZGzfxd4PF_aw3UnNHZafkdNlRoLp46YJ7hkU/%3Fsize%3D256/https/cdn.discordapp.com/avatars/779442792324661249/26206ede07f20447bf380df44b429db7.png')
embed.setTitle("Purge Command Issued")
embed.setDescription('The following messages have been purged.')
embed.setColor('RANDOM')
embed.setFooter('Twitchbot | twitchbot.newhorizon.dev', 'https://images-ext-2.discordapp.net/external/6vZM6YeZGzfxd4PF_aw3UnNHZafkdNlRoLp46YJ7hkU/%3Fsize%3D256/https/cdn.discordapp.com/avatars/779442792324661249/26206ede07f20447bf380df44b429db7.png')
embed.setThumbnail('https://images-ext-2.discordapp.net/external/6vZM6YeZGzfxd4PF_aw3UnNHZafkdNlRoLp46YJ7hkU/%3Fsize%3D256/https/cdn.discordapp.com/avatars/779442792324661249/26206ede07f20447bf380df44b429db7.png')
embed.setTimestamp(new Date().toISOString())
embed.addField("Bot Messages Purged", botMessages.size, false)
embed.addField("User Pins Purged", userPins.size, false)
embed.addField("User Messages Purged", userMessages.size, false)
embed.addField("Total Messages Purged", deletedMessages.size, false);
channel.send(embed = embed);
})
.then(console.log())
.catch(err => {
console.error(err);
channel.send('```css\n[ERROR] ' + err.code + ': [' + err.message + ']\n```');
})
}
};
args
是 object。 因此,您應該使用args.amount
(鍵是amount
)或使用 object 解構來獲取 amount 參數。
async run(message, args) {
const { channel } = message
const amount = Number(args.amount)
if (Number.isNaN(amount)) {
return message.reply(
'```css\n[ERROR] Please provide a valid number.\n```'
)
}
if (amount <= 0 || amount > 100) {
return message.reply(
'```css\n[ERROR] You need to input a number between 0 and 100.\n```'
)
}
const limit = amount + 1
try {
const messages = await channel.messages.fetch({ limit })
const deletedMessages = await channel.bulkDelete(messages)
const botMessages = deletedMessages.filter(m => m.author.bot)
const userPins = deletedMessages.filter(m => m.pinned)
const userMessages = deletedMessages.filter(m => !m.author.bot)
const embed = new Discord.MessageEmbed()
// ...
channel.send(embed)
} catch (err) {
console.error(err)
channel.send(
'```css\n[ERROR] ' + err.code + ': [' + err.message + ']\n```'
)
}
}
有關更多信息,請查看有關使用命令 arguments 的文檔。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.