Discord Bot UnhandledPromiseRejectionWarning:TypeError:generalChannel.send不是函数

时间:2020-06-11 15:17:52

标签: discord discord.js

我遇到了这个错误,但是我不确定是什么原因引起的。我尝试使用Googling并修复了先前的错误,其中的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

1 个答案:

答案 0 :(得分:2)

提取是一个异步函数,这意味着代码会继续运行而不会默认解析

要解决此问题,请使用awaitthen

等待:

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!"));
});

此外,您还必须将on的实例“准备就绪”,将其合并为一个实例,并且不应将其他实例置于ready事件中。