慕工程0101907
2023-04-14 15:10:29
所以我試圖讓我的廣播命令在一段時(shí)間后自動(dòng)刪除廣播。我為其構(gòu)建 EBS 機(jī)器人的人希望它在 30 分鐘后自動(dòng)刪除。我們讓它按照他的意愿發(fā)送到所有文本頻道,但試圖讓它自動(dòng)刪除會(huì)觸發(fā)以下錯(cuò)誤:(node:23) UnhandledPromiseRejectionWarning: TypeError [INVALID_TYPE]: Supplied options is not an object.這是我的broadcast.js文件:broadcast.jsconst Commando = require('discord.js-commando');const prefix = (process.env.BOT_PREFIX);require('dotenv').config();module.exports = class BroadcastCommand extends Commando.Command { constructor(client) { super(client, { name: 'broadcast', aliases: [ 'ebcast', 'bcast', 'bc', 'ebc' ], group: 'ebs', memberName: 'broadcast', userPermissions: [ 'MANAGE_MESSAGES', 'MANAGE_CHANNELS' ], description: 'Send an Emergency Broadcast to all text channels in the guild', examples: [ `Usage: ${prefix}bc <message.content>`, `Details: '<>' flags indicate a required field. '[]' flags indicates an optional field.`, `Note: Do not include the '<>' or '[]' flags in the command.` ], args: [ { key: 'text', prompt: 'What would you like the bot to announce?', type: 'string', }, ], }) }; run(msg, { text }) { msg.guild.channels.cache .filter(channel => channel.type === 'text') .forEach((textChannel) => { textChannel.send(text, { tts: true }).then(sentMessage => { sentMessage.delete(108000000).cache(console.error); }); }) }};我們想知道如何設(shè)置它在 30 分鐘后自動(dòng)刪除消息。我使用這篇文章中的一個(gè)示例來(lái)自動(dòng)刪除代碼,這顯然對(duì)我不起作用:讓機(jī)器人在超時(shí)后刪除自己的消息幫助我將其發(fā)送到所有頻道的帖子來(lái)自:Discord.js Commando Broadcast All 命令錯(cuò)誤我假設(shè)sentMessage標(biāo)志是錯(cuò)誤的,但我可能是錯(cuò)的。任何幫助將非常感激。該機(jī)器人內(nèi)置discord.js-commando并使用node.js ^12.16.4和discord.js ^12.0.1。discordjs/Commando它從主分支運(yùn)行 discord.js-commando
1 回答

幕布斯7119047
TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊
您發(fā)現(xiàn)和使用的自動(dòng)刪除代碼基于 Discord JS v11。在這個(gè)版本中,該Message.delete
功能只需要一個(gè)數(shù)字作為參數(shù)來(lái)設(shè)置刪除超時(shí)。
由于您使用的是 Discord JS v12,因此Message.delete
代碼略有更改。它不采用數(shù)字作為參數(shù),而是采用選項(xiàng)對(duì)象。這個(gè)選項(xiàng)對(duì)象可以有兩個(gè)屬性;timeout
和reason
。因此,解決問(wèn)題所需要做的就是.delete
像這樣更改參數(shù):
// Note that in your code you have .cache after the delete
// but I'm guessing you meant .catch to catch errors
sentMessage.delete({timeout: 108000000}).catch(console.error);
添加回答
舉報(bào)
0/150
提交
取消