📅  最后修改于: 2023-12-03 15:00:25.732000             🧑  作者: Mango
在 Discord.js 中,可以使用 client.on('message', callback)
方法来监听消息事件。但是,有些时候我们需要等待用户的回复或者其他消息,此时就需要使用 awaitMessages()
方法。本文将介绍如何使用 Discord.js 等待消息。
首先,我们需要安装 Discord.js。
npm install discord.js
然后,在代码中引入 Discord.js。
const Discord = require('discord.js');
const client = new Discord.Client();
使用 awaitMessages()
方法可以等待用户回复或其他消息。此方法需要传入一个 Filter
函数用于过滤特定消息,以及 Options
配置对象。
这里我们以等待特定用户的回复为例子。用户回复时,将消息发送到一个指定的频道中。
client.on('message', async message => {
if (message.author.bot) return; // 不处理机器人发送的消息
if (message.content === '!hello') {
// 发送问候消息,并等待回复
message.channel.send('请选择 A 或 B:');
const filter = response => response.author.id === message.author.id;
const options = { max: 1, time: 30000 };
const collected = await message.channel.awaitMessages(filter, options);
const reply = collected.first().content;
// 将回复发送到指定频道
const channel = client.channels.cache.get('CHANNEL_ID');
channel.send(`用户回复:${reply}`);
}
});
在上面的例子中,我们定义了一个 filter
函数,用于过滤特定用户的消息,options
对象定义了最多收集一条回复,等待时间为30秒。
awaitMessages()
方法返回一个 Promise
对象,如果等待超时会抛出 PromiseTimeoutError
异常。
下面是完整的代码片段,记得将 TOKEN
替换为你自己的 Bot Token,CHANNEL_ID
替换为你需要发送回复的频道 ID。
const Discord = require('discord.js');
const client = new Discord.Client();
client.on('ready', () => {
console.log(`Logged in as ${client.user.tag}!`);
});
client.on('message', async message => {
if (message.author.bot) return;
if (message.content === '!hello') {
message.channel.send('请选择 A 或 B:');
const filter = response => response.author.id === message.author.id;
const options = { max: 1, time: 30000 };
try {
const collected = await message.channel.awaitMessages(filter, options);
const reply = collected.first().content;
const channel = client.channels.cache.get('CHANNEL_ID');
channel.send(`用户回复:${reply}`);
} catch (error) {
console.error(error);
message.reply('等待回复超时。');
}
}
});
client.login('TOKEN');
以上就是 Discord.js 等待消息的详细介绍。对于需要等待用户回复的情况, awaitMessages()
方法是一个非常实用且方便的解决方案。