繁体   English   中英

如何让反应角色在 discord.js 中工作?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM