猿问

Discord.JS 如何等待会员反应

我正在制作机器人来管理我的多个 Discord 公会。我想制作确认系统,例如:

  • 用户做了 X 件事,

  • Bot 以足够的渠道发送消息,

  • Bot 等待用户使用 :thumbdsup: 或 :thumbsdown: 最多 60 秒做出反应

  • 如果竖起大拇指,则执行 A,否则 - 执行 B。如果时间到了,则执行 C 动作

由于我不知道,我该如何构建这样的系统。


梦里花落0921
浏览 102回答 1
1回答

慕丝7291255

添加和设置事件监听器首先,我们首先定义 discord.js 并添加一个事件监听器:const Discord = require('discord.js'); //defining discordconst client = new Discord.Client(); //getting your botclient.on('message', async message => {  //when a user sends a message});然后你需要告诉机器人它在那之后做了什么:const Discord = require('discord.js'); //defining discordconst client = new Discord.Client(); //getting your botclient.on('message', async message => {  //when a user sends a message    if (message.author.bot) return; //If a bot sent the message we want to ignore it.    if (message.content.toLowerCase() === 'what message your looking for' {  //what your looking for (make sure this string is all in lower case)        //what you want the bot to do after the message you are looking for has been sent    }});现在,如果您希望机器人将反应添加到消息中,您将执行以下操作:const Discord = require('discord.js'); //defining discordconst client = new Discord.Client(); //getting your botclient.on('message', async message => {  //when a user sends a message    if (message.author.bot) return; //If a bot sent the message we want to ignore it.    if (message.content.toLowerCase() === 'what message your looking for' {  //what your looking for (make sure this string is all in lower case)        await message.react('👍'); //reacting to the message with a thumbs up emoji        await message.react('👎'); //reacting to the message with a thumbs down emoji    }});如果您希望机器人回复消息,请使用:const Discord = require('discord.js'); //defining discordconst client = new Discord.Client(); //getting your botclient.on('message', async message => {  //when a user sends a message    if (message.author.bot) return; //If a bot sent the message we want to ignore it.    if (message.content.toLowerCase() === 'what message your looking for' {  //what your looking for (make sure this string is all in lower case)        message.channel.send('The bots message here') //what you want the bot to reply with    }});等待反应这一切都取决于您是否要等待对机器人消息或用户消息的反应。如果您想等待机器人消息的反应,请使用:const Discord = require('discord.js'); //defining discordconst client = new Discord.Client(); //getting your botclient.on('message', async message => {  //when a user sends a message    if (message.author.bot) return; //If a bot sent the message we want to ignore it.    if (message.content.toLowerCase() === 'what message your looking for' {  //what your looking for (make sure this string is all in lower case)        message = await message.channel.send('The bots message here') //waiting for the message to be sent        const filter = (reaction, user) => { //filtering the reactions from the user            return (            ['👎', '👍'].includes(reaction.emoji.name) && user.id === message.author.id            );        }        message.awaitReactions(filter, { max: 1, time: 60000, errors: ['time'] }) //awaiting the reactions - remember the time is in milliseconds        .then((collected) => {        const reaction = collected.first();        if (reaction.emoji.name === '👍') { //if the reaction was a thumbs up            //A action            reaction.users.remove(message.author.id) //If you wanted to remove the reaction      } else { //if the reaction was a thumbs down        //B action        reaction.users.remove(message.author.id) //If you wanted to remove the reaction      }    }).catch((collected) => { //when time is up      //C action    });    }});如果你想等待来自用户消息的消息,你会做同样的事情,除了改变:if (message.content.toLowerCase() === 'what message your looking for' {  //what your looking for (make sure this string is all in lower case)    message.channel.send('The bots message here') //sending the message but not awaiting reactions from it
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答