discord - Discord Bot UnhandledPromiseRejectionWarning:TypeError:generalChannel.send 不是函数
问题描述
我遇到了这个错误,但我不确定是什么原因造成的。我尝试用谷歌搜索它并修复了我之前的错误,其中 get 是一个旧函数,现在称为 fetch - 但我找不到任何设置。我也试过 npm install 和 npm update 看看是否有损坏的东西。我在这里缺少什么吗?
const {
prefix,
token,
} = require('./config.json');
const ytdl = require('ytdl-core');
const client = new Discord.Client();
client.login(token);
client.once('ready', () => {
console.log('Ready!');
});
client.once('reconnecting', () => {
console.log('Reconnecting!');
});
client.once('disconnect', () => {
console.log('Disconnect!');
});
client.on('ready', () => {
var generalChannel = client.channels.fetch("2131436123767") // Replace with known channel ID
generalChannel.send("Hello, world!")
})```
Stack
[1]: https://i.stack.imgur.com/Y2zOD.png
解决方案
Fetch 是一个异步函数,这意味着代码会在默认情况下继续运行而不解析
要解决此问题,请使用await
或then
等待:
client.on("ready", async () => {
const generalChannel = await client.channels.fetch("2131436123767");
generalChannel.send("Hello, world!");
});
然后:
client.on("ready,", () => {
client.channels.fetch("2131436123767")
.then(generalChannel => generalChannel.send("Hello, world!"));
});
此外,您必须将“就绪”实例合并为一个,并且不应将另一个放在就绪事件内的事件上。
推荐阅读
- selenium - 我如何决定在 Selenium 和 Katalon 之间将哪个工具列入自动化候选名单?鉴于技能组合适用于两者
- mysql - 如何获取用户mysql的两个请求
- aws-step-functions - Is there a way to create step functions graph using CDK?
- mysql - Mysql 5.6 timestampdiff 问题与返回结果
- angular - how to toggle disable on input (as child component) using angular5
- r - Creating a function with mutate from dplyr
- ruby-on-rails - Manually fail a Sidekiq job
- java - JavaBeanProperties in JavaFX without pulling in java.desktop (Swing, AWT)
- html - 在 Flask 中单击按钮时隐藏/显示表单
- linux - Simatic IoT2040 上的 Kubernetes