如何批量删除 Discord 机器人

Posted

技术标签:

【中文标题】如何批量删除 Discord 机器人【英文标题】:How to delete in bulk for a Discord bot 【发布时间】:2021-11-23 14:28:30 【问题描述】:
import DiscordJS,  Channel, Intents, Message  from 'discord.js'
import dotenv from 'dotenv'
dotenv.config()
const prefix = '~';

const client = new DiscordJS.Client(
  intents: [
    Intents.FLAGS.GUILDS,
    Intents.FLAGS.GUILD_MESSAGES,
    Intents.FLAGS.GUILD_MESSAGE_REACTIONS
  ]
)

client.on('ready', () => 
  console.log('The bot is ready')
)

client.on('messageCreate', (message) => 
  if(message.content.toLowerCase().startsWith(prefix + 'clearall')) 
    async function clear() 
      message.delete();
      const fetched = await message.channel.fetchMessages(limit: 99);
      message.channel.bulkDelete(fetched);
      message.channel.send('Deleted 99 messages')
    
    clear();
  


)


client.login(process.env.TOKEN)

我正在尝试为 Discord 机器人批量删除频道中的消息,但我的 clear() 函数、fetchMessages 和 bulkDelete 出现错误。

【问题讨论】:

对于你的第一个错误,你为什么要创建一个命名的内部函数?您可以创建一个 IIFE,也可以只使源函数异步。 根据文档here,您似乎无法批量删除 DM 频道中的消息(至少不能使用名为 bulkDelete 的函数,该函数不存在)跨度> 【参考方案1】:

面向 ES3 或 ES5 时,不允许在块内声明函数;

您可以编辑您的tsconfig.json 并将compilerOptions.target 选项设置为最近的选项,例如ES2017 甚至esnext。这是一个有趣的变化,因为针对旧版 JS 版本可能会出现更多错误。

如果您的项目中仍然没有 tsconfig,请在项目的根目录中创建一个名为 tsconfig.json 的文件,内容如下:


  "compilerOptions": 
    "target": "ES2017",
    "strict": true,
    "esModuleInterop": true
  

由于您的代码将在最新的 JS 版本(在 node.js 内)上运行,因此无需针对旧的 JS 版本。

额外:去除不必要的功能

您也不需要在那里创建 clear() 函数。你可以直接运行它的内部代码。

删除该函数将触发关于异步等待的警告,您可以通过更改此行来解决:

client.on('messageCreate', async (message) =>  // add "async" there

x 不存在

channel 对象没有fetchMessages() 函数。您可以查看文档或按住 CTRL 并单击以浏览类型定义并尝试找到所需的函数。

乍一看,fetchMessages() 似乎位于内部 messages 对象中,因此 message.channel.messages.fetchMessages(...) 可能就是您要查找的内容。

【讨论】:

对于 .bulkDelete() 函数,你有什么线索吗?我正在阅读 discord.js 的 TextChannel 文档,我认为它应该可以工作,但它一直说“基于文本的通道不存在属性 bulkDelete”

以上是关于如何批量删除 Discord 机器人的主要内容,如果未能解决你的问题,请参考以下文章

如果用户在 discord.js 中提供了 20 条消息(超过 14 天)进行批量删除,我如何仅删除 10 条消息

批量删除如何工作?

批量删除消息数组

如何快速删除大批量数据

Navicat for MySQL这个软件,如何批量删除数据,求大神指导.

yii2 怎么批量删除