首页 > 解决方案 > Discord.js Akairo Bot this.client.setInterval 不是函数

问题描述

我正在阅读Akairo 文档教程以使用该框架启动一个机器人。我正在使用“dotenv”为客户端加载我的令牌。

require('dotenv').config();
const { AkairoClient, CommandHandler } = require('discord-akairo');

class MyClient extends AkairoClient {
  constructor() {
    super({
        ownerID: '123992700587343872', // not a real id
    }, {
        disableMentions: 'everyone',
        intents: ['GUILD_MESSAGES']
    });
    this.commandHandler = new CommandHandler(this, {
      directory: './commands/',
      prefix: '<3',
    });
    this.commandHandler.loadAll();
  }
}

const client = new MyClient();
client.login(process.env.TOKEN);

每次我尝试使用node bot.js命令运行机器人时,都会出现以下错误this.client.setInterval 不是函数

我试图确保我的依赖项符合要求,甚至尝试对所有内容进行完全干净的 npm 安装,但我不确定出了什么问题。我目前也通过 nvm 使用节点 16.8.0。

我的代码发布在这里,但本质上只是上面提到的添加了“dotenv”包的教程。

如下所述,问题源于 discord.js v13 不再允许可扩展结构。有没有办法可以修改本教程代码以使用 discord.js v13 运行,而不仅仅是弃用到 v12?

标签: javascriptnode.jsdiscord.js

解决方案


Discord-Akairo 目前似乎正在升级到 discord.js v13,你可以在他们的Github上看到。要将该框架与 discord.js v13.x 一起使用,您只需要等待他们发​​布下一次更新即可。

除非您有足够的信心和知识来分叉他们的存储库,并自己编辑框架以使用 v13。这将具有额外的优势,即能够根据您的需要进一步定制框架。

您收到"client.setInterval is not a function"错误的原因是 Discord.js 在 v13 中删除了该方法。在这个问题之上,可扩展的结构被删除了,还有数百个其他的重大变化使得当前版本的 Discord-Akairo 无法与 djs v13 一起使用。

目前,除非您选择分叉 Akairo,否则您需要降级到 discord.js v12.x,就像您已经完成的那样。它现在应该可以工作,但你当然会错过许多新的 Discord 功能,例如线程、按钮、选择菜单和斜线命令。

您可能还想考虑使用目前已经支持 v13 的不同框架,也许是某种类似的框架,以便您以后可以轻松地转移回 Akairo,如果您愿意的话。


推荐阅读