У меня есть команда "/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] });
}
}
};