morfiscam
@morfiscam
Developer bot in Discord and design

Как выдать роль определенному пользователю selectmenu?

У меня есть команда "/dcontrol", она выдает информацию о участнике и так же select menu взаимодействия с ним. Я не знаю, как сделать выдачу роли, определенному пользователю, на которого была вызвана команда.
Вот код.

const { SlashCommandBuilder, EmbedBuilder, ActionRowBuilder, Events, StringSelectMenuBuilder, PermissionFlagsBits } = require('discord.js');

module.exports = {
    data: new SlashCommandBuilder()
        .setName('dcontrol')
        .setDescription('Команда позволяет управлять участников Discord сервера.')
        .addUserOption(option =>
            option
                .setName('target')
                .setDescription('Выберите пользователя, которым хотите управлять')
                .setRequired(true))
        .setDefaultMemberPermissions(PermissionFlagsBits.BanMembers, PermissionFlagsBits.KickMembers)
        .setDMPermission(false),
		async execute(interaction) {
			const member = await interaction.guild.members.fetch(interaction.options.getUser("target").id);
            if (!interaction.isChatInputCommand()) return;
        
            if (interaction.commandName === 'dcontrol') {
                const row = new ActionRowBuilder()
                    .addComponents(
                        new StringSelectMenuBuilder()
                            .setCustomId('dcontrol')
                            .setPlaceholder('Ничего не выбрано')
                            .addOptions(
                                {
                                    label: ' Серверная блокировка',
                                    description: 'Выдача серверной блокировки.',
                                    value: 'sban',
                                },
                                {
                                    label: ' Стандартная блокировка',
                                    description: 'Выдача стандартной блокировки',
                                    value: 'dban',
                                },
                                {
                                    label: ' Мут',
                                    description: 'Выдача мут, пользователь не сможет писать в какие-либо чаты будучи заглушенным.',
                                    value: 'mute',
                                },
                                {
                                    label: ' Исключить',
                                    description: 'Исключает участника из Discord сервера.',
                                    value: 'kick',
                                },
                                {
                                    label: ' Разбанить [Серверная блокировка]',
                                    description: 'Разбанивает участника сервера Discord, если у него была серверная блокировка.',
                                    value: 'sunban',
                                },
                                {
                                    label: ' Разбанить [Стандртная Блокировка]',
                                    description: 'Разбанивает участника сервера Discord, если у него была стандартная блокировка.',
                                    value: 'dunban',
                                },
                                {
                                    label: ' Выдать игровую валюту [beta-version, не работает.]',
                                    description: 'Выдается игровая валюта в экономике | economy',
                                    value: 'addmoney',
                                },
                                {
                                    label: ' Забрать игровую валюту [beta-version, не работает.]',
                                    description: 'Забирается игровая валюта в экономике | economy',
                                    value: 'delmoney',
                                },
                                {
                                    label: '⛔ Блокировка в экономике | economy [beta-version, не работает.]',
                                    description: 'Блокировка в экономике | economy',
                                    value: 'baneconomy',
                                },
                                {
                                    label: ' Отредактировать о себе [beta-version, не работает.]',
                                    description: 'Отредактирует информацию о пользователе без возможности поменять ему.',
                                    value: 'editinfo',
                                },
                                {
                                    label: ' Отредактировать SteamId [beta-version, не работает.]',
                                    description: 'Отредактирует SteamId о пользователе без возможности поменять ему.',
                                    value: 'editsteam',
                                },
                            ),
                        );

    const embed = new EmbedBuilder()
        .setColor('#36393E')
        .setTitle('Управление пользователем')
        .addFields(
            { name: 'Участник', value: `<@${member.user.id}>`, inline: true },
            { name: 'Дата регистрации', value: `<t:${Math.round(member.user.createdTimestamp / 1000)}>`, inline: true },
            { name: 'Присоединился к серверу', value: `<t:${Math.round(member.joinedAt / 1000)}>`, inline: true },
            { name: 'О себе', value: `Не указал`, inline: true },
            { name: 'SteamID', value: `Не указан`, inline: true },
        )
        .setTimestamp()
        .setFooter({ text: 'Сделано PlatinumProject', iconURL: `${interaction.user.displayAvatarURL()}` });

        await interaction.reply({ embeds: [embed], components: [row] });

        }
    }
};
  • Вопрос задан
  • 51 просмотр
Решения вопроса 1
morfiscam
@morfiscam Автор вопроса
Developer bot in Discord and design
const member = await interaction.guild.members.fetch(interaction.options.getUser("target").id);
            const userid = interaction.guild.members.cache.get(member.id);

collector.on('collect', async i => {
                        if (i.isStringSelectMenu()) {
                            const selected = i.values[0];
                            if(selected == 'кастом ид кнопки'){
                                let rolem = 'ид роли'
                                userid.roles.set([rolem])
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы