通过反应分配角色

时间:2018-12-09 12:40:37

标签: javascript discord.js

我最近一直在尝试制作“反应到角色”机器人,并一直在努力制定一些标准。
我已经研究并查看了其他人在其上使用的类似bot的版本,但仍无法在自己的代码中有目的地使用它。

机器人程序的目标是在一条消息上具有多个选项。这是一条作为消息的示例。

**What do you drive?**
 - A car
 - A bicycle
❌ - Nothing

在指定的每个表情符号的消息下都会有反应。用户点击了其中一个表情符号后,就会在其中添加一个角色,例如“驾驶自行车”或“骑自行车”。

我设法执行了addrole命令(该命令会接收机器人将响应的消息,表情符号及其分配的角色),并将一些信息存储到JSON文件中。

我一直遇到的问题实际上是捕获每个对特定消息做出反应的用户,找出他们发送的响应,并分配给该表情符号的角色。

这是我当前的代码,非常感谢您提供的帮助:)

addrole.js

if(!args[0] || !args[1] || !args[2] || !args[3]) return message.reply("please use the following format: `autorole #channel messageID icon @role`.");
let channel = message.mentions.channels.first();
let messageID = args[1];
let icon = args[2];
let role = message.mentions.roles.first();

if(!channel.fetchMessage(messageID)) return message.reply("could not find the specified message. Please check the channel and message ID again.");
channel.fetchMessage(messageID).then(msg => {
    msg.react(icon);
    info[role.name] = {
        roleID: role.id,
        channelID: channel.id,
        icon: icon,
    };
    fs.writeFile("./configs/info.json", JSON.stringify(info), (err)=>{
        if(err) console.log(err);
    });
});

我知道需要创建一个名为messageReactionAddmessageReactionRemove的事件,但是我不确定如何找到它们的变量并进行相应的匹配。

此外,即使重新启动后,我也不知道如何使它不断观看一条消息。通过一些测试,我注意到messageReactionAdd在重启后将不会继续观看指定的消息反应。

我正在寻找任何人都可以提供的指导/帮助,谢谢!

1 个答案:

答案 0 :(得分:0)

我在https://github.com/Sam-DevZ/Discord-RoleReact/blob/master/roleReact.js上看到一个事件。我已经尝试过了,并且可以正常工作。