繁体   English   中英

Discord.js:client.login() promise 永远不会解析,client.on("ready") 永远不会触发

[英]Discord.js: client.login() promise never resolves, client.on("ready") never fires

我用 discord.js 做了一个非常简单的 Discord 机器人; 每当有人发送包含文本“早上好”的消息时,机器人都会回复“早上好”。 这曾经有效,但我注意到该机器人今天停止回复消息。 我的代码如下; 该机器人托管在 Replit 上。

const { Client, IntentsBitField } = require("discord.js");

const intents = new IntentsBitField();
intents.add(IntentsBitField.Flags.Guilds, IntentsBitField.Flags.GuildMessages, IntentsBitField.Flags.MessageContent);

const client = new Client({
  intents
});

client.on("ready", () => {
  console.log("Client ready.");
});

client.on("messageCreate", async (message) => {
  try {
    if (message.type === 0 && !message.author.bot) {
      if (message.content.trim().toUpperCase().includes("GOOD MORNING")) {
        await message.reply("Good morning to you too!");
      }
    }
  }
  catch (error) {
    console.log(error);
  }
});

client.login(process.env.TOKEN);

当我运行此代码时, client.login() promise 永远不会解析,并且clientready事件永远不会触发。 我检查了其他可能的原因,例如process.env.TOKEN错误。 知道什么可能导致此问题以及如何解决吗?

这很可能是由于速率限制。 Replit 是共享的 IP,更容易获得速率限制。

您可以通过debug事件检查您是否受到速率限制。 在任何侦听器之外添加此代码是个好主意。 这很可能会回答为什么您的代码似乎“无所事事”。

client
    .on("debug", console.log)
    .on("warn", console.log)

如果你得到 output,说你达到了 429,你得到了速率限制。 通常修复它的方法是在您的终端中运行它,然后再次运行代码:

kill 1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM