簡體   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