首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何等待反应,然后才发送消息[discord.js]

在discord.js中,可以使用异步函数和await关键字来等待反应后再发送消息。下面是一个示例代码:

代码语言:txt
复制
// 导入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

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的沙龙

领券