找不到让我的 discord.js 机器人检测消息的方法 [重复]
Posted
技术标签:
【中文标题】找不到让我的 discord.js 机器人检测消息的方法 [重复]【英文标题】:Can't find a way to make my discord.js bot detect messages [duplicate] 【发布时间】:2021-10-29 00:36:39 【问题描述】:import Client, Intents from 'discord.js';
const client = new Client( intents: [Intents.FLAGS.GUILDS] );
client.once('ready', () =>
console.log('Ready!');
);
client.on("message", async msg =>
if (msg.content === "ping")
console.log("ping")
msg.reply("pong")
);
client.login(token);
我正在使用 discord.js v13,机器人正确登录并输出“Ready!”然后当我在服务器中输入一条消息时,它甚至没有console.log
任何帮助表示赞赏,在此先感谢。
【问题讨论】:
也复制了:“message event listener not working properly”、“Having trouble sending a message to a channel with Discord.js”、“Discord bot is not replying to messages”。 【参考方案1】:您需要启用GUILD_MESSAGES
Intent 才能接收消息事件。此外,正如 CcmU 所说,message
事件已被弃用,应替换为messageCreate
。
// ...
const client = new Client( intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES] );
// ...
client.on("messageCreate", async msg => /* ... */ )
// ...
【讨论】:
【参考方案2】:从docs 可以看出,事件message
已被弃用。如果您想监听任何新消息,您可以使用事件 messageCreated
的监听器。
所以你可以尝试类似的东西
client.on('messageCreate', async msg =>
if (msg.content === "ping")
console.log("ping");
msg.reply("pong");
);
编辑:
正如@chickensalt 所指出的,您必须在您的Intents
中声明用于处理消息的适当的Intents.FLAGS.GUILD_MESSAGES
。因此,在创建 Client
时:
const client = new Client( intents: [Intents.FLAGS.GUILDS, Intent.FLAGS.GUILD_MESSAGES] );
但请记住根据您的需要使用正确的 Intent,因为您在正确处理内存方面可能会遇到一些麻烦。正如docs 建议的那样:
对于较大的机器人,客户端状态可能会变得非常大。我们建议仅将对象存储在机器人操作所需的内存中。例如,许多机器人只是通过聊天命令响应用户输入。这些机器人可能只需要在内存中保存公会信息(如公会/频道角色和权限),因为
MESSAGE_CREATE
和MESSAGE_UPDATE
事件具有可用的完整成员对象。
【讨论】:
我编辑了我的答案,请尝试一下以上是关于找不到让我的 discord.js 机器人检测消息的方法 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何让我的 Discord.JS 机器人对其自己的直接消息做出反应?