javascript - 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
命令运行机器人时,都会出现以下错误
我试图确保我的依赖项符合要求,甚至尝试对所有内容进行完全干净的 npm 安装,但我不确定出了什么问题。我目前也通过 nvm 使用节点 16.8.0。
我的代码发布在这里,但本质上只是上面提到的添加了“dotenv”包的教程。
如下所述,问题源于 discord.js v13 不再允许可扩展结构。有没有办法可以修改本教程代码以使用 discord.js v13 运行,而不仅仅是弃用到 v12?
解决方案
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,如果您愿意的话。
推荐阅读
- r - 将元素连接到 Rcpp 中 S4 类的插槽
- erlang - Erlang spawn 由于某种原因返回 undef
- excel - =INDEX(PeriodList,MonthNo) 在工作簿中创建 _xlfn.SINGLE 名称
- python - HomeAssistant 取消 AppDaemon 中的回调
- php - PHPUnit错误:找不到类'ClassName'
- c# - 如何在 C# 中添加带字符串的整数并制作类似 Json 的格式
- python - 如何绘制遍历多个键的字典DataFrame?
- python - 根据熊猫列中唯一数量的元素删除行
- javascript - 将 IndexOf 与日期和谷歌表格一起使用
- python - print(file.read()) 的用途是什么