Дискорд бот кастомные команды
Так-же увы, но я не буду объяснять, как создать бота и установить node.js, моя цель показать вам функционал discord.js, а не то, как делаются базовые действия бота.
Создаём папку скажем. на рабочем столе, и называем её любым названием, например это будет имя нашего бота! у меня это бот Pixi (Все права защищены, за использование названия вас приведут к ответственности!)
И так, для начала установим библиотеки!
Далее после установки данных библиотек мы можем приступить к формулировке проекта!
Для этого в консоль пишем:
Далее мы просто нажимаем enter, хотя можно ещё заполнить последнее поле.. Это автор! Указываем ваше имя на Английском.
Далее создаём файл config.json, index.js, и в файл config.json пишем:
И меняем на свои значения, префикс - это начальная точка команды, например $help, где $ выступает префиксом, а токен - это циферки и буквы которые можно получить в настройках бота), так-же токен никому нельзя говорить, иначе вашим ботом смогут управлять другие!
Далее в файле index.js пишем:
Что мы сделали можно посмотреть в подсказках, а теперь расскажу зачем нужна эта коллекция команд!
Дело в том, что по факту можно писать команды в client.on('message', message => <>, но это не правильно и именно по этому мы создаём коллекцию команд и делаем следующие действия.
После этого создаём в папке с нашим ботом ещё одну папку - commands, в этой папке и буду хранится все наши команды!
И так, давайте создадим первую команду!
Пускай это будет.. команда hi, бот будет отвечать нам привет!
И так. Создаём файл hi.js и пишем в него следующее:
Дальше запускаем бота (Переходим в консоль и идём через неё в папку с ботом и пишем node index.js) и видим.
Хорошо, у нас получилось!
В папке commands создаём ещё один файл (ping.js) и там пишем:
Далее я хочу научить вас работать с рандомными изображениями и гифками, ну и эффектами :3
Создаём файл fox.js и пишем в него следующее:
Вы сможете сделать больше рандомных картинок зная сайт. Так вот!
Далее поговорим про эффекты, это будет экран wasted на аватарке пользователя дискорд!
Создаём файл wasted.js ( Вы уже знаете где) )
Вы можете создавать свои команды, которые могут выполнять определенные действия.
Пользовательские команды (кастомные команды) создаются и настраиваются в панели управления сервера во вкладке с названием "Команды". Любую пользовательскую команду можно отключить при необходимости и настроить необходимые права доступа аналогично встроенным командам бота.
У каждой команды есть определенный набор общих настроек:
Команда — имя команды, по которому она будет вызываться в Discord;
Действие команды — действие по умолчанию, которое будет выполнено для этой команды;
Краткое описание — просто краткое описание данной команды, которое отображается в списке пользовательских команд, а также в справке самого бота в Discord;
Права доступа и выполнение — описывает права доступа к команде по ролям, каналам, типу каналов и как часто можно вызывать команду (кулдаун);
Слэш-команда — позволяет включить и настроить эту команду как слэш-команду, более подробно описано в разделе Слэш-команда.
Пользовательская команда может быть включена как Слэш-команда с возможностью использования параметров и даже разделения на подкоманды. Интерфейс настроек слэш-команды интуитивно понятен и не требует пояснения.
Все указанные участником параметры слэш-команды передаются в действие пользовательской команды как часть переменной arguments .
Для получения нужного параметра следует использовать следующий синтаксис:
Кроме этого, можно получить список всех параметров определённого типа:
Более подробно в описании типа данных Arguments.
Слэш-команды имеют некоторые ограничения:
Все ограничения, описанные в общем разделе Слэш-команд;
Корневая слэш-команда может содержать либо параметры, либо подкоманды, но не вместе;
Максимум 25 параметров на корневую команду или подкоманду;
Максимум 25 подкоманд;
Максимум 25 вариантов выбора для параметров строк или чисел;
Максимум 20 пользовательских команд с включенной слэш-командой.
В диалоге создания или редактирования пользовательской команды можно использовать горячие клавиши:
В этой статье я подробно расскажу о том, как работать с библиотекой discord.js, создать своего Discord-бота, а также покажу несколько интересных и полезных команд.
Сразу хочу отметить, что я планирую сделать ряд подобных статей, начиная с простых команд, заканчивая музыкой, системой экономики и распознаванием голоса ботом.
Начало работы
Если вы уже знакомы с приведёнными ниже материалами, — смело можете пролистать этот раздел.
Для начала работы с кодом нам нужно установить среду разработки, это может быть:
Среда разработки выбирается по удобству использования и практичности, она у вас может быть любая, но мы рассмотрим её на примере Visual Studio Code, так как она является одной из самых приемлемых для новичков, а также для опытных программистов.
Для установки переходим по этой ссылке.
Выбираем свою операционную систему и запускаем скачивание.
Для создания бота мы используем среду выполнения node.js. Для её установки нам необходимо перейти на этот сайт.
На данный момент нас интересует версия долгосрочной поддержки (LTS), скачиваем её.
В Visual Studio Code присутствует возможность устанавливать расширения.
Для этого, кликните по отмеченной ниже иконке.
В открывшемся окне вписываем название название/идентификатор нужного нам расширения, после чего устанавливаем его.
Из полезных расширений могу отметить:
-
Discord Presence — расширение, позволяющее отображать рабочую область и файл, в котором вы работаете в вашей игровой активности (функция работает только при использовании приложения Discord).
Создание бота
Теперь, когда вы установили все нужные компоненты, мы можем приступить к созданию самого бота.
Здесь всё просто. Переходим на портал разработчиков и нажимаем на кнопку с надписью «New Application» — она находится в правом верхнем углу.
В открывшемся окне вписываем имя бота, после чего, нажимаем на кнопку с надписью «Create».
На этой странице мы можем изменить имя бота, загрузить для него иконку, заполнить описание.
Теперь наша задача — воплотить бота в жизнь. Для этого переходим во вкладку «Bot».
Нажимаем на кнопку с надписью «Add Bot» и воплощаем бота в жизнь.
Поздравляю! Вы создали аккаунт для вашего бота. Теперь у него есть тег, токен, ник и иконка.
Подготовка к написанию кода
После создания аккаунта для бота, мы должны установить нужные пакеты и модули, чтобы в дальнейшем он корректно работал.
Первым делом создаём папку, после чего открываем её в VS Code (Файл > Открыть папку) / (Ctrl + K Ctrl + O)
Далее нам нужно открыть терминал (Терминал > Создать терминал) / (Ctrl + Shift + `)
Теперь мы должны создать файл с неким «описанием» нашего бота, сделаем это через терминал.
Вписываем данную строку в терминал и нажимаем Enter:
После каждой появившейся строки нажимаем Enter или вписываем свои значения.
Значения в этом файле можно будет изменить в любой момент.
Далее, мы должны поочерёдно вводить в терминал эти строки:
«Install» также можно сокращать в «I», но необязательно.
Итого, если вы следовали инструкциям и всё сделали правильно, в вашей папке должны были появиться 3 объекта:
Написание кода
Для того, чтобы наш бот появился в сети и мог реагировать на команды, нам нужно написать для него код.
Существует множество вариантов для его написания: используя один файл, два, несколько, и т.д
Мы рассмотрим вариант с двумя файлами, так как его использовать очень легко и удобно, но у каждого варианта есть свои недостатки — например, у этого недостатком является сложность в написании начального кода.
Но не волнуйтесь, весь код вам писать не придётся.
Для начала, нам нужно где-то хранить основные параметры и информацию о боте.
Мы можем сделать это двумя способами:
- Создать отдельный файл
- Записать всё в константы
Разберём хранение параметров в отдельном файле.
Итак, создаем файл config.json
Вставляем в него следующий код:
* Для получения токена зайдите на портал разработчиков, перейдите во вкладку «Bot» и скопируйте его.
* Самым распространённым среди разработчиков префиксом является !
Далее нам нужно создать файл bot.js и вставить в него данный код:
Теперь создаём файл comms.js, в нём будут сами команды.
В нём должен быть следующий код:
Чтобы добавить больше команд — просто объявляйте больше функций и добавляйте их в список, например:
И вот, мы вышли на финишную прямую!
Осталось всего ничего — запустить бота.
Для этого открываем терминал и вставляем в него следующую строку:
Готово! Бот запущен и вы можете им пользоваться, ура!
Чтобы пригласить бота на свой сервер, воспользуемся нам уже известным порталом разработчиков.
Перейдём во вкладку OAuth2, пролистаем чуть ниже, выберем «Bot» и отметим нужные боту привилегии.
Существует два способа:
-
Заранее отметить нужные привилегии.
Итоговый код должен быть таким:
Чтобы указать несколько привилегий, мы должны перечислить их в квадратных скобках, через запятую:
* Все привилегии указываются заглавными буквами
Список доступных привилегий:
ADMINISTRATOR
CREATE_INSTANT_INVITE
KICK_MEMBERS
BAN_MEMBERS
MANAGE_CHANNELS
MANAGE_GUILD
ADD_REACTIONS
VIEW_AUDIT_LOG
PRIORITY_SPEAKER
STREAM
VIEW_CHANNEL
SEND_MESSAGES
SEND_TTS_MESSAGES
MANAGE_MESSAGES
EMBED_LINKS
ATTACH_FILES
READ_MESSAGE_HISTORY
MENTION_EVERYONE
USE_EXTERNAL_EMOJIS
VIEW_GUILD_INSIGHTS
CONNECT
SPEAK
MUTE_MEMBERS
DEAFEN_MEMBERS
MOVE_MEMBERS
USE_VAD
CHANGE_NICKNAME
MANAGE_NICKNAMES
MANAGE_ROLES
MANAGE_WEBHOOKS
MANAGE_EMOJIS
Полезные и интересные команды
В предыдущем разделе я показал вам, как запустить бота и как писать для него команды.
Теперь я хочу поделиться с вами несколькими своими командами.
Не стоит пугаться большого кода, здесь всё предельно просто.
Заключение
Вот и подошла к концу первая часть обучения, как вы могли заметить, создать бота, используя библиотеку discord.js очень просто.
В этом туториале мы с вами создадим Discord-бота с нуля, используя Node.js и библиотеку Discord.js, которая позволяет пользователям напрямую взаимодействовать с Discord API. Мы настроим профиль для Discord-бота, получим для него токены аутентификации и реализуем в боте возможность обработки команд с аргументами от пользователей.
Что вам для этого понадобится
Прежде чем вы начнете, вам понадобится следующее:
Node.js, установленный на вашем компьютере. Чтобы установить его на macOS или Ubuntu 20.04, выполните действия, перечисленные в ”Как установить Node.js и создать локальную среду разработки в macOS” или в разделе “Установка Node.js посрдством Apt с помощью NodeSource PPA” руководства ”Как установить Node.js в Ubuntu 20.04”.
Бесплатный Discord-аккаунт, подтвержденный по электронной почте, и бесплатный Discord-сервер, который мы будем использовать для тестирования нашего Discord-бота.
Шаг 1 - Настройка Discord-бота
На этом этапе мы будем использовать GUI Discord для разработчиков, чтобы настроить Discord-бота и получить для него токен, который вы будете использовать в своей программе.
Чтобы зарегистрировать бота на платформе Discord, используйте Discord application dashboard (панель управления приложением). В ней разработчики могут создавать Discord-приложения, в частности - Discord-ботов.
Чтобы начать, кликните New Application. Discord попросит вас ввести имя для вашего нового приложения. Далее кликните Create, чтобы создать приложение.
Примечание: Имя вашего бота не зависит от имени приложения, т.е. имя бота не обязательно должно совпадать с именем приложения.
Теперь откройте панель управления вашего приложения. Чтобы добавить бота в приложение, перейдите на вкладку Bot на навигационной панели слева.
Чтобы добавить бота в приложение, нажмите кнопку Add Bot. Кликните Yes, do it!, когда появится диалог подтверждения. После этого вы попадете в панель управления, содержащую сведения об имени вашего бота, токен аутентификации и изображение профиля.
Вы можете изменить имя или изображение профиля своего бота здесь, в этой панели управления. Вам также необходимо получить токен аутентификации бота, кликнув Click to Reveal Token и скопировав появившийся токен.
Предупреждение: никогда ни с кем не делитесь и никуда не публикуйте токен вашего бота, так как он позволяет любому, кто им обладает, получить доступ к вашему боту.
Теперь вам нужно создать инвайт для добавления бота в Discord-гильдию, где вы сможете его тестировать. Сначала перейдите на страницу URL Generator во вкладке OAuth2 панели управления приложением. Чтобы создать инвайт, проскрольте вниз и выберите bot в scopes. Вам также следует установить разрешения (permissions), чтобы контролировать, какие действия ваш бот может выполнять в гильдиях. В рамках этого руководства мы выберем Administrator, что даст вашему боту права на выполнение почти всех возможных действий в гильдиях. Скопируйте ссылку с помощью, нажав на кнопку Copy.
Затем добавьте бота на сервер. Перейдите по только что созданной ссылке-инвайту. В раскрывающемся меню вы можете добавить бота на любой сервер, которым вы владеете или на котором имеете права администратора.
Теперь нажмите Continue. Убедитесь, что у вас установлен флажок рядом с Administrator - это предоставит боту права администратора. Затем нажмите Authorize. До того, как бот присоединится к серверу, Discord попросит вас заполнить капчу. После этого бот должен появиться в offline в списке участников на сервере, на который вы его добавили.
Вы успешно создали Discord-бота и добавили его на сервер. Далее мы напишем программу для логина в бот.
Шаг 2 - Создание вашего проекта
На этом шаге мы настроим базовую среду разработки, в которой вы напишете код своего бота и залогинитесь в него программным способом.
Во-первых, вам нужно создать папку проекта и необходимые файлы для бота.
Создайте папку своего проекта:
Перейдите в папку проекта, которую вы только что создали:
Затем с помощью текстового редактора создайте файл с именем config.json , где будет храниться токен аутентификации вашего бота:
Добавьте следующий код в полученный файл конфигурации, заменив выделенный текст на токен аутентификации вашего бота:
Сохраните и закройте файл.
Затем вам нужно создать файл package.json , в котором будут храниться сведения о вашем проекте и зависимостях, которые вы будете для него использовать. Создайте файл package.json , выполнив следующую npm-команду:
npm запросит у вас различные сведения о вашем проекте. Если вам нужна помощь в заполнении этих сведений, вы можете почитать об этом в разделе “Как использовать модули Node.js с npm и package.json”.
Теперь вам нужно установить пакет discord.js , который вы будете использовать для взаимодействия с Discord API. Вы можете установить discord.js через npm с помощью следующей команды:
Когда вы настроили файл конфигурации и установили необходимую зависимость, вы готовы приступить к созданию своего бота. В реальном приложении, если бот большой, то он будет разделен на множество файлов, но в этом руководстве весь код вашего бота будет написан в одном файле.
Сначала создайте файл с именем index.js в папке discord-bot:
Начнем код бота с требования зависимости discord.js и файл конфигурации с токеном:
После этого добавьте следующие две строки кода:
Сохраните и закройте файл.
Вторая строка кода использует метод login для входа в созданный вами Discord-бот, используя токен из файла config.json в качестве пароля. Токен позволяет Discord API узнать, для какого бота предназначена программа, и что вы прошли аутентификацию для использования этого бота.
Теперь запустите файл index.js с помощью Node:
Статус вашего бота на Discord-сервере, на который вы его добавили, изменится на online.
Шаг 3 - Обработка вашей первой пользовательской команды
На этом шаге вы создадите бота, который может обрабатывать пользовательские команды. Вы реализуете свою первую команду ping , которая будет отвечать "pong" и временем, которое потребовалось для ответа на команду.
Сначала откройте свой файл:
Добавьте в файл следующий код:
Добавьте следующую строку кода в свою функцию обработки команд:
Теперь мы напишем обработчик команд. Для этого нужно понимать формат команды Discord. Обычно команда Discord состоит из трех частей в следующем порядке: префикс, имя команды и (иногда) аргументы команды.
Имя команды: имя команды, которую хочет использовать пользователь. Это означает, что бот может поддерживать несколько команд с разной функциональностью и позволяет пользователям выбирать между ними, указывая соответствующее имя команды.
Аргументы: иногда, если команда использует или даже требует дополнительную информацию от пользователя, пользователь может указать аргументы после имени команды, где этом каждый аргумент отделяется пробелом.
Примечание: Нет унифицированной жесткой структуры команд, и боты могут обрабатывать команды так, как вам хочется, но представленная здесь структура является эффективной, и ее использует подавляющее большинство ботов.
В первой строке кода мы присваиваем константе prefix значение "!" , которое будет использоваться в качестве префикса команды.
Третья строка удаляет первый элемент из массива args (он станет именем полученной команды), преобразует его в нижний регистр и затем назначает его константе command . Это позволяет вам изолировать имя команды и оставить в массиве только аргументы. Вы также следует использовать метод toLowerCase , поскольку команды в Discord-ботах обычно нечувствительны к регистру.
Добавьте следующий код для команды ping :
Этот if-оператор проверяет, совпадает ли имя команды, которое вы распарсили (присвоенное константе command ), с "ping" . Если совпадает, то это означает, что пользователь хочет использовать команду "ping" . В подобной примитивной реализации код для конкретной команд вы можете просто обернуть в блок if-оператора. Делайте тоже самое и для других команд, которые хотите реализовать.
Теперь вы можете написать код для команды "ping" :
Сохраните и закройте файл.
На этом реализация команды "ping" закончена.
Запустите своего бота с помощью следующей команды (в той же папке, что и index.js ):
Вы успешно создали бота, который может обрабатывать пользовательские команды, и реализовали свою первую команду. На следующем шаге мы научим бота выполнив команду sum.
Шаг 4 - Реализация команды Sum
Теперь мы расширим программу командой "!sum" . Команда примет любое количество аргументов, сложит их, а потом вернет пользователю сумму всех аргументов.
Если Discord бот все еще работает, вы можете остановить его процесс с CTRL + C .
Снова откройте файл index.js :
Для реализации команды "!sum" мы будем использовать блок else-if . После проверки имени команды на равенство ping он проверит, совпадает ли оно с "sum". Мы используем блок else-if , поскольку одновременно будет обрабатываться только одна команда, т.е., если программа получит команду "ping" , ей не нужно проверять, что это была команда "sum" . Добавьте в файл следующие выделенные строки:
Приступим к написанию кода команды "sum" . Код для команды "sum" будет расположен в только что созданном вами блоке else-if . Добавьте следующий код:
Мы используем метод map на списке аргументов, чтобы создать новый список, используя функцию parseFloat для каждого элемента в массиве args . Это создаст новый массив (присвоенный константе numArgs ), в котором все элементы являются числами, а не строками. Это означает, что позже вы сможете успешно найти сумму этих чисел, сложив их вместе.
Вторая строка использует метод reduce на константе numArgs , которая суммирует все элементы в списке. Мы присваиваем сумму всех элементов в numArgs константе sum .
Затем мы используем метод reply , чтобы ответить по аналогии с предыдущей командой.
На этом реализация команды "sum" завершена. Теперь запустим бота, используя следующую команду (в той же папке, что и index.js ):
Ниже представлена полная версия index.js бота:
Заключение
Вы успешно создали Discord-бота, который может обрабатывать несколько разных пользовательских команд с аргументами. Если вы хотите расширить возможности своего бота, вы могли бы реализовать больше команд или опробовать другие части Discord API. Рекомендую вам почитать документацию Discord.js и Discord API, чтобы углубить свои знания о Discord API. В частности, вы можете преобразовать свои команды своего бота в слэш-команды, что является лучшей практикой для Discord.js v13.
Создавая Discord-ботов, вы всегда должны помнить об условиях обслуживания Discord API, в которых описывается, как разработчики должны использовать Discord API. Если вы хотите узнать больше о Node.js, ознакомьтесь с нашей серией статей How To Code in Node.js.
Перевод статьи подготовлен в преддверии старта специализации Fullstack developer, а также курса Node.js Developer.
Одним из главных помощников для пользователей Discord являются команды для чатов и ботов, а также горячие клавиши для общения или игры. Ниже рассмотрим разные виды команд, приведем их расшифровку и особенности применения.
Команды для бота
Боты — специальные коды, созданные на базе API и используемые на серверах Дискорд. Они устанавливаются в программе и используются для расширения ее функционала. Сегодня существует много полезных Discord-ботов. Наиболее популярные — Mee6, Red, Dyno и другие. Все они отличаются по особенностям работы и функциональной начинке. При этом команды для ботов в Дискорде также отличаются. Эти данные необходимо изучать перед добавлением на официальной странице софта.
К примеру, Mee6 — универсальный бот, позволяющий создавать свои собственные команды и настраивать поздравление для участников.
Выделим несколько основных Дискорд-команд:
Команды чата
Многие пользователи не знают, что существуют так называемые команды Дискорда для чата. Выделим основные варианты:
Как видно, Дискорд-команды чата больше направлены на оформление текста и исправление ошибок. Но их применение во многих случаях может оказаться полезным.
Горячие клавиши
Не менее полезная опция — горячие клавиши Discord, которые можно использовать в обычном режиме или во время игры. При желании их легко задать вручную Для этого сделайте следующие шаги:
- Войдите в программу Дискорд.
- Жмите на шестеренку внизу.
- Найдите слева пункт Горячие клавиши.
- Выберите необходимое действие в любом из полей.
- Введите в поле рядом нужную комбинацию.
При желании можно забить комбинацию на рацию (обычный и приоритетный) режим, обратную рацию, включение и отключение микрофона, режима стримера, звука в динамиках, оверлея и т. д.
При этом есть ряд клавиш, которые работают по умолчанию. К примеру, комбинация shift+` используется прямо в игре. В этом случае появляется список голосовых Дискорд-каналов и настройка оверлея. Комбинацию можно поменять в разделе настроек. После появления списка каналов жмите на левую кнопку мышки по участнику и поменяйте громкость.
Дополнительно можно использовать и другие комбинации:
Если вдруг не работают горячие клавиши Дискорд, попробуйте из заново запрограммировать через настройки или убедитесь в работоспособности клавиатуры.
Итоги
Теперь вы знаете, какие команды бывают в Discord, для чего их можно использовать, и чем они помогают пользователям. Главное — не упускать такую возможность и пользоваться ей во время общения или игры.
Читайте также: