我最近一直在尝试制作“反应到角色”机器人,并一直在努力制定一些标准。
我已经研究并查看了其他人在其上使用的类似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);
});
});
我知道需要创建一个名为messageReactionAdd
和messageReactionRemove
的事件,但是我不确定如何找到它们的变量并进行相应的匹配。
此外,即使重新启动后,我也不知道如何使它不断观看一条消息。通过一些测试,我注意到messageReactionAdd
在重启后将不会继续观看指定的消息反应。
我正在寻找任何人都可以提供的指导/帮助,谢谢!
答案 0 :(得分:0)
我在https://github.com/Sam-DevZ/Discord-RoleReact/blob/master/roleReact.js上看到一个事件。我已经尝试过了,并且可以正常工作。