【发布时间】:2020-12-30 16:18:03
【问题描述】:
我正在尝试执行“通过反应添加角色”命令。因此,当成员对特定消息做出反应时,该成员将获得一个角色。它确实有效,但是当我重新启动我的机器人时,它不再添加角色。有人可以帮忙吗?
这里是代码:
bot.on('message', msg=>{
if(msg.content.startsWith(prefix + "react")){
let embed = new Discord.MessageEmbed()
.setTitle("Reactions Roles")
.setDescription("React to get a role!")
.setColor("BLUE")
msg.channel.send(embed).then(m=> m.react("emoji_id"))
}
})
bot.on("messageReactionAdd", async (reaction, user)=>{
if (reaction.message.partial) await reaction.message.fetch();
if (reaction.partial) await reaction.fetch();
if(user.bot) return;
if(!reaction.message.guild) return;
if(reaction.message.channel.id === "channel_id"){
if(reaction.emoji.id === "emoji_id"){
await reaction.message.guild.members.cache.get(user.id).roles.add("role_id")
}
}
})
bot.on('messageReactionRemove', async (reaction, user)=>{
if(reaction.message.partial) await reaction.message.fetch();
if(reaction.partial) await reaction.fetch();
if(user.bot) return;
if(!reaction.message.guild) return;
if(reaction.message.channel.id === "channel_id"){
if(reaction.emoji.id === "emoji_id"){
await reaction.message.guild.members.cache.get(user.id).roles.remove("role_id")
}
}
})
【问题讨论】:
-
只是为了澄清。当您重新启动机器人时,您希望它对旧消息做出反应并应用角色,还是不对新消息做出反应?
-
@MagnusVestergaard 不,我希望机器人对旧消息做出反应并添加角色。重新启动机器人时发送新消息会很尴尬。它应该对旧消息做好自己的工作。
-
问题是您的代码只注册新消息/反应,因此您必须添加一些代码来扫描已发送的消息并检查这些反应。我回家看看是否记得用一些示例代码来回答。
标签: javascript discord discord.js