javascript Discord.js -将斜杠命令限制为权限

v9tzhpje  于 2023-04-10  发布在  Java
关注(0)|答案(1)|浏览(128)

我正在创建一个purge命令,但我不知道如何将该命令的使用限制在拥有MANAGE_MESSAGES权限的用户。
我提供了client.on(“ready”)部分和整个命令的源代码。
我真的不知道这件事,谢谢你的帮助。

client.on('ready', async () => {
  try {
    const command = await client.application.commands.create({
      name: 'purge',
      PermissionFlagsBits: 'MANAGE_MESSAGES',
      description: 'Deletes messages',
      options: [
        {
          name: 'amount',
          description: 'The amount of messages to delete',
          type: 4,
          required: true,
        },
      ],
      

      defaultPermission: false,
    });
    console.log(`Registered ${command.name} command`);
  } catch (error) {
    console.error(error);
  }
});

  client.on('interactionCreate', async (interaction) => {
    if (!interaction.isCommand()) return;

    if (interaction.commandName === 'purge') {
      const amount = interaction.options.getInteger('amount');
      if (amount > 100) {
        return interaction.reply({ content: 'You can only delete 100 messages at a time!', ephemeral: true });
      }
      if (amount < 1) {
        return interaction.reply({ content: 'You must delete at least 1 message!', ephemeral: true });
      }
      await interaction.channel.bulkDelete(amount, true).catch(error => { 
        console.error(error);
        interaction.reply({ content: 'There was an error trying to delete messages in this channel!', ephemeral: true });
      });
      interaction.reply({ content: `Successfully deleted ${amount} messages!`, ephemeral: true });
    }
  });
mspsb9vt

mspsb9vt1#

这在Discord.js v14中对我有效。使用PermissionFlagsBits.ManageMessages返回管理消息的正确权限。此外,属性是default_member_permissions,而不是PermissionFlagsBits

import { PermissionFlagsBits } from 'discord.js';

client.on('ready', async () => {
    try {
        const command = await this.application.commands.create({
            name: 'purge',
            default_member_permissions: PermissionFlagsBits.ManageMessages,
            description: 'Deletes messages',
            options: [
                  {
                    name: 'amount',
                    description: 'The amount of messages to delete',
                    type: 4,
                    required: true,
                  },
                ],
             defaultPermission: false,
       });

        console.log(`Registered ${command.name} command`);
    } catch (error) {
        console.error(error);
    }
});

相关问题