![](/img/trans.png)
[英]Send a message every 5 seconds with Client.on('ready', () => { }); on Discord.js
[英]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 永遠不會解析,並且client
的ready
事件永遠不會觸發。 我檢查了其他可能的原因,例如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.