【发布时间】:2021-10-27 14:45:44
【问题描述】:
我正在尝试编写一个机器人脚本,当人们点击表情符号时,它会赋予他们一个角色。
我的问题是人们在点击表情符号时没有获得角色。当我输入第一个命令t!role 时,带有表情符号的消息已正确发送。但是,做出反应的人将不会收到该角色。我尝试了评论中建议的所有内容。不幸的是,似乎没有任何效果。
const bot = new Discord.Client( {
intents: [
Intents.FLAGS.GUILDS,
Intents.FLAGS.GUILD_MEMBERS,
Intents.FLAGS.GUILD_MESSAGES,
Intents.FLAGS.GUILD_MESSAGE_REACTIONS,
Intents.FLAGS.DIRECT_MESSAGE_REACTIONS,
],
partials: ["MESSAGE", "CHANNEL", "REACTION"]
});
else if(parts[0].toLowerCase() == "t!role") {
let sendMessage = await message.channel.send('React with ????to get the role')
sendMessage.react('????')
bot.on('messageReactionAdd', async (reaction, user, channel) => {
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 === '8786607442820137464') {
if(reaction.emoji.id === '8789972642138767364') {
reaction.message.guild.members.cache.get(user.id).roles.add('8779841244749004804')
}
}
})
【问题讨论】:
-
机器人只能赋予低于自己的角色,即使它们具有管理员权限。确保角色低于机器人的角色。如果由于某种原因分配角色失败,请使用
.catch((error) => console.log(error.message));记录任何错误。 -
我试过了,但它不起作用,它没有给我任何错误
标签: discord discord.js