![](/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.