Слэш команды discord js

В этом видео я показываю как использовать слэш команды в боте дискорд. Парсер нам в помощь! GitHub (код бота) — github.com/strelok-js/guideBotByStrelok / const commandsIT = bot.guilds.cache.get(«895231559836270603»).commands; //Или bot.application.commands — если команды будут глобальными await commandsIT.fetch(); //Найти все команды for (const command of bot.commands.any) < if(command.interaction) < //Если слэш команда есть const interaction = await commandsIT.cache.find(com=⟩com.name command.interaction.name); //Найти команду в боте по названию if(!interaction) < //Если команда не была найдена в боте commandsIT.create(command.interaction); //Создать команду >else //Если команда есть if(JSON.stringify(interaction.options) ! JSON.stringify(command.interaction.options)) > > //YouTube блокирует угловые скобки. Нужно восстановить стрелочную функцию! / if(!interaction.isCommand()) return; //Проверка на слэш команду const argsF = []; //Создание аргументов if(interaction.options._group) argsF.push(interaction.options. _group); //Если это группа — добавить в аргумент if(interaction.options._subcommand) argsF.push(interaction.options._subcommand); //Если это sub группа — добавить в аргумент for (const it of interaction.options._hoistedOptions) argsF.push(it.value); //Добавить опции в аргументы const CMD = await bot.commands.get(interaction.commandName); //Найти команды в боте const args = argsF; //Приравнивание функции* interaction.author = interaction.user; interaction.channel = bot.channels.cache.get(interaction.channelId); interaction.guild = interaction.member.guild; if(CMD) CMD(bot, interaction, args, argsF) //Если есть команда — вызвать её.* .catch(); / Discord dev — discord.com/developers/applications/ Типы опций — discord.js.org/#/docs/main/13.2.0/typedef/ApplicationCommandOptionType

(Устарело) Исправляем слэш команды (Discord.js V13) #9.1

Источник: euglobe.ru

Новые команды Discord Slash

Недавно в Discord добавлена ​​поддержка команд с косой чертой для вашего собственного приложения. Я прочитал документацию по нему и попытался найти несколько видео (однако функция ПРОСТО появилась), но я не понимаю, что мне на самом деле нужно сделать, чтобы она заработала. Я использую WebStorm (js, node.js). Кто-нибудь успешно сделал команду косой черты, и если да, то как?

Shreyas007 22 Дек 2020 в 04:35

Еще по теме:  Как сбросить звонок в дискорде

2 ответа

Лучший ответ

Я заставил это работать .

Вы можете использовать обычный discord.js , теперь это v12.5.1 .

Это всего лишь образец, но у меня он сработал. (В настоящее время я пытаюсь улучшить это)

const Discord = require(‘discord.js’); const client = new Discord.Client(); client.on(‘ready’, () => < client.api.applications(client.user.id).guilds(YOUR_GUILD_ID_HERE).commands.post(< data: < name: «hello», description: «hello world command» // possible options here e.g. options: [] > >); client.ws.on(‘INTERACTION_CREATE’, async interaction => < const command = interaction.data.name.toLowerCase(); const args = interaction.data.options; if (command === ‘hello’)< client.api.interactions(interaction.id, interaction.token).callback.post(< data: < type: 4, data: < content: «hello world. » >> >) > >); >); client.login(token);

Конечно, у вас могут быть варианты, см. Документацию .

(Устарело) Слэш команды и их использование для команд (Discord.js V13) #3

IDE не зарегистрирует новый код . по крайней мере, мой phpstorm сейчас этого не делает 🙂

Однако важно дать боту правильные разрешения на использование этого типа команд!

Итак, перейдите на Discord.com/developers, выберите свое приложение и создайте новую ссылку для приглашения, имея разрешение к

В противном случае команда не будет работать, и вы получите ошибку, например Missing Access или что-то подобное.

ВАЖНОЕ

  1. Используйте .guilds(‘11231. ‘).comma для проверки этих команд. Когда он не используется, для активации требуется около 1 часа. Использование немедленно активирует его.
  2. Дайте боту правильное разрешение. application.commands требуется

Dwza 23 Дек 2020 в 10:27

Привет, я обычно не работаю с discord.js, но мне удалось найти хорошую документацию по этому поводу. Вы должны иметь возможность сделать это с определенным «клиентом».

const interactions = require(«discord-slash-commands-client»); const client = new interactions.Client( «you unique bot token», «your bots user id» );

Если клиент определен, как показано, то должна работать команда /, если она определена таким образом.

Еще по теме:  Как демонстрировать экран discord

// will create a new command and log its data. //If a command with this name already exist will that be overwritten. client.createCommand(< name: «your command name», description: «description for this command», >) .catch(console.error) .then(console.log);

Источник: question-it.com

В чем проблема слэш команд?

Столкнулся с проблемой использования слэш команд на версии 13 discord js.
Когда бот находится на 1,2 серверах то все работает прекрасно без ошибок и быстрым откликом.
Но когда запускаю бота, который на 500+ то начинается тупняк и такие ошибки

DiscordAPIError: Unknown interaction at RequestHandler.execute (C:Program Files (x86)Botnode_modulesdiscord.jssrcrestRequestHandler.js:298:13) at processTicksAndRejections (node:internal/process/task_queues:96:5) at async RequestHandler.push (C:Program Files (x86)Botnode_modulesdiscord.jssrcrestRequestHandler.js:50:14) at async CommandInteraction.reply (C:Program Files (x86)Botnode_modulesdiscord.jssrcstructuresinterfacesInteractionResponses.js:99:5) < method: ‘post’, path: ‘/interactions/917815534404386826/aW50ZXJhY3Rpb246OTE3ODE1NTM0NDA0Mzg2ODI2OlFEdldSZU16NDJ3dWZ2ekRSekcwenhSS0E4OXYwM1hJZzZJc2NFNmVUTXF3cEcyeTF4WnZhRHRqZVl1aW5BbFpuZ1Roc0FXNW90VndFOEhsZ3B0aHRwUm1NVldMWGVVY1ZNSzJvZTd2Q0p1YUhEME1KVzFTQVgxWE5CYUdVOUdp/callback’, code: 10062, httpStatus: 404, requestData: < json: < type: 4, data: [Object] >, files: [ [Object] ] > >

Уже перепробовал и мощный комп, и мощный интернет. Может кто сталкивался с такими проблемами.
Подключение к БД MYSQL.
Все команды находятся в одном файле index.js, но пробовал и разделить их по разным файлам (все равно так же)
К примеру вот так оформлены все команды:

try < if(interaction.commandName === ‘info’) < if (interaction.options.getString(‘category’) === ‘server’) < const < utc >= require(‘moment’) pool.query(`SELECT lang FROM data WHERE GuildID = ?`, [interaction.guild.id], async function (err, result, fields) < if (err) console.log(err); if (result[0][‘lang’] === ‘rus’) < let embed = new MessageEmbed() .setThumbnail(interaction.guild.iconURL()) .setColor(‘#f3f3f3’) .setTitle(`Информация о сервере $`) .setDescription(`**Участники** >Всего: $n **Каналы** >Всего: $ >Текстовых: $ c.type === ‘GUILD_TEXT’).size> >Новостных: $ c.type === ‘GUILD_NEWS’).size> >Голосовых: $ c.type === ‘GUILD_VOICE’).size> >Категорий: $ c.type === ‘GUILD_CATEGORY’).size>n **Инфо** >Владелец: $ <(await interaction.guild.fetchOwner()).user.tag>>Дата создания: $ >Количество ролей: $ >Требование 2FA: $ >Количество бустов: $= 1 ? `$` : `Нет бустов`> >Количество эмоций: $= 1 ? `$` : `Нет эмоций`>`) .setFooter(`ID сервера $` ) return interaction.reply(< embeds: >).catch(function(err) < if(err) < console.log(err) >>); > >) > > > catch(err)

  • Вопрос задан более года назад
  • 884 просмотра
Еще по теме:  Сделал игру которой управляет discord

4 комментария

Простой 4 комментария

Источник: qna.habr.com

Рейтинг
( Пока оценок нет )
Загрузка ...