[英]How to get Reaction Roles working in discord.js?
我试图让这个功能发挥作用,但我一直遇到我的反应角色的问题。 可能是我只是使用了错误的功能/方法吗? 我将非常感谢一些帮助。
我对 discord 机器人开发人员相当陌生,可能会在这里问一个非常愚蠢的问题,但非常感谢您的帮助!
这是我的代码示例!
require('dotenv').config();
const { Client, Intents, GuildMember, ReactionEmoji } = require('discord.js');
const client = new Client(
{
partials: ['MESSAGE' , 'REACTON'],
intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES],
});
const PREFIX = '$';
client.on('ready', () => {
console.log(`${client.user.tag} has logged in.`);
});
client.on('messageCreate', async (message) => {
if (message.author.bot) return;
//console.log(`[${message.author.tag}]: ${message.content}`);
/* if (message.content === 'hello') {
message.reply('https://media.giphy.com/media/KtnNLZVycYLdutzEm9/giphy.gif');
//message.channel.send('https://media.giphy.com/media/KtnNLZVycYLdutzEm9/giphy.gif');
}*/
if (message.content.startsWith(PREFIX)) {
const [CMD_NAME, ...args] = message.content
.trim()
.substring(PREFIX.length)
.split(/\s+/);
//KICK AND BAN
if (CMD_NAME === 'kick') {
if (!message.member.permissions.has('KICK_MEMBERS'))
return message.reply('You do not have permissions to use that command');
if (args.length === 0)
return message.reply('Please provide the ID of the offender.');
const member = message.guild.members.cache.get(args[0]);
if (member) {
member
.kick()
.then((member) => message.channel.send(`${member} was kicked.`))
.catch((err) =>
message.channel.send('I do not have permissions :( ')
);
} else {
message.channel.send('That Member was not found');
}
} else if (CMD_NAME === 'ban') {
if (!message.member.permissions.has('BAN_MEMBERS'))
return message.reply('You do not have permissions to use that command');
if (args.length === 0)
return message.reply('Please provide the ID of the offender.');
message.guild.members.ban(args[0]);
try {
const user = await message.guild.members.ban(args[0]);
message.channel.send('User was banned successfully.');
console.log(user);
} catch (err) {
console.log(err);
message.channel.send('An error occured. Either I do not have permission or the user was not found.')
}
}
}
});
//Reactions Roles
client.on('messageReactionAdd', (reaction, user) => {
console.log('Whats Gud');
const { name } = reaction.emoji;
const member = reaction.message.guild.members.cache.get(user.id);
if (reaction.message.id === '928504577475616819') {
switch (name) {
case '🎵':
member.roles.add('928503338683748352');
break;
case '📖':
member.roles.add('928503897251782698');
break;
case '🎮':
member.roles.add('928503941430407168');
break;
case '🖌️':
member.roles.add('928503384561053847');
break;
}
}
});
client.login(process.env.DISCORDJS_BOT_TOKEN);
谢谢
我认为问题在于 messageReactionAdd 仅适用于缓存消息,根据这个: Why messageReactionAdd do nothing discord.js
尝试检查消息内容,而不是检查消息 ID
client.on('messageReactionAdd', (reaction, user) => { console.log('Whats Gud'); const { name } = reaction.emoji; const member = reaction.message.guild.members.cache.get(user.id); if (reaction.message.content === 'your-message-content') { switch (name) { case '': member.roles.add('928503338683748352'); break; case '': member.roles.add('928503897251782698'); break; case '': member.roles.add('928503941430407168'); break; case '️': member.roles.add('928503384561053847'); break; } } });
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.