Advertisement
Danulsan

Untitled

Jun 26th, 2023
24
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.53 KB | None | 0 0
  1. const { SlashCommandBuilder, EmbedBuilder, PermissionsBitField } = require('discord.js')
  2. const reaction = require('../../Schemas.js/reactionjs');
  3.  
  4. module.exports = {
  5. data: new SlashCommandBuilder()
  6. .setName('reaction-roles')
  7. .setDescription('Manage your reaction roles system')
  8. .addSubcommand(command => command.setName('add').setDescription('Add a reaction role to a message').addStringOption(option => option.setName('message-id').setDescription('The message to react to').setRequired(true)).addStringOption(option => option.setName('emoji').setDescription('The emoji to react with').setRequired(true)).addRoleOption(option => option.setName('role').setDescription('The role you want to give').setRequired(true)))
  9. .addSubcommand(command => command.setName('remove').setDescription('Remove a reaction role to a message').addStringOption(option => option.setName('message-id').setDescription('The message to react to').setRequired(true)).addStringOption(option => option.setName('emoji').setDescription('The emoji to react with').setRequired(true))),
  10.  
  11. async execute(interaction) {
  12. const { options, guild, channel } = interaction;
  13. const sub = options.getSubcommand();
  14. const emoji = options.getString('emoji');
  15.  
  16. let e;
  17. const message = await channel.messages.fetch(options.getString('message-id')).catch(err => {
  18. e = err;
  19. });
  20.  
  21. if (!interaction.member.permissions.has(PermissionsBitField.Flags.Administrator)) return await interaction.reply({ content: 'You dont have perms to use this system', ephemeral: true })
  22. if (e) return await interaction.reply({ content: `Be sure to get a message from ${channel}!`, ephemeral: true })
  23.  
  24. const data = await reaction.findOne({ Guild: guild.id, Message: message.id, Emoji: emoji });
  25.  
  26. switch (sub) {
  27. case 'add':
  28. if (data) {
  29. return await interaction.reply({ content: `It looks like you already have this reaction setup ${emoji} on this message`, ephemeral: true })
  30. } else {
  31. const role = options.getRole('role');
  32. await reaction.create({
  33. Guild: guild.id,
  34. Message: message.id,
  35. Emoji: emoji,
  36. Role: role.id
  37. })
  38.  
  39. const embed = new EmbedBuilder()
  40. .setColor('Blurple')
  41. .setDescription(`🫡 I have added a reaction role to ${message.url} with ${emoji} and the role ${role}`)
  42. await message.react(emoji).catch(err => { });
  43.  
  44. await interaction.reply({ embeds: [embed], ephemeral: true });
  45. }
  46.  
  47. break;
  48. case 'remove':
  49.  
  50. if (!data) {
  51. return await interaction.reply({ content: 'It doesnt look like that reaction role exists', ephemeral: true });
  52. } else {
  53. await reaction.deleteMany({
  54. Guild: guild.id,
  55. Message: message.id,
  56. Emoji: emoji
  57. });
  58.  
  59. const embed = new EmbedBuilder()
  60. .setColor('Blurple')
  61. .setDescription(`🫡 I have removed the reaction role from ${message.url} with ${emoji}`)
  62.  
  63. await interaction.reply({ embeds: [embed], ephemeral: true })
  64. }
  65. }
  66.  
  67. }
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement