在discord.js中,可以使用异步函数和await关键字来等待反应后再发送消息。下面是一个示例代码:
// 导入discord.js库
const Discord = require('discord.js');
// 创建一个Discord客户端
const client = new Discord.Client();
// 当客户端准备好时触发
client.on('ready', () => {
console.log(`Logged in as ${client.user.tag}`);
});
// 当收到消息时触发
client.on('message', async (message) => {
// 检查消息内容和发送者是否满足条件
if (message.content === '!hello' && message.author.id === 'YOUR_USER_ID') {
try {
// 等待用户反应
const filter = (reaction, user) => {
return ['✅', '❌'].includes(reaction.emoji.name) && user.id === message.author.id;
};
const collected = await message.awaitReactions(filter, { max: 1, time: 60000, errors: ['time'] });
const reaction = collected.first();
// 根据用户反应发送不同的消息
if (reaction.emoji.name === '✅') {
message.channel.send('用户选择了确认');
} else if (reaction.emoji.name === '❌') {
message.channel.send('用户选择了取消');
}
} catch (error) {
console.error(error);
message.channel.send('等待用户反应超时');
}
}
});
// 使用你的Discord Bot令牌登录
client.login('YOUR_BOT_TOKEN');
在上述代码中,我们创建了一个Discord客户端,并在ready
事件中打印出客户端的用户名。然后,在message
事件中,我们检查收到的消息内容是否为!hello
,并且发送者的ID是否为你的用户ID。如果满足条件,我们使用awaitReactions
方法等待用户的反应。
awaitReactions
方法接受两个参数:过滤器函数和选项对象。过滤器函数用于确定哪些反应应该被收集,我们在这里只接受✅和❌两种反应,并且只接受消息发送者的反应。选项对象中的max
参数表示最多只收集一次反应,time
参数表示等待用户反应的最长时间(毫秒),errors
参数表示如果等待超时应该抛出的错误类型。
当收集到用户的反应后,我们可以通过collected.first()
获取第一个收集到的反应,并根据反应的emoji名称发送不同的消息。
请注意,你需要将YOUR_USER_ID
替换为你的用户ID,将YOUR_BOT_TOKEN
替换为你的Discord Bot令牌。
这是discord.js的官方文档链接:discord.js
没有搜到相关的沙龙
领取专属 10元无门槛券
手把手带您无忧上云