Как написать дискорд бота на c

Обновлено: 07.07.2024

Начнём. Ссылка на мой youtube канал.

Discord bot туториал. Туториал по созданию ботов для дискорда на node.js используя discord.js.

Creation date : 06.12.2019

Давайте начнём создание бота. Если у вас установлена node.js, то пропустите сделающие 2 строчки. Заходим на сайт node.js, скачиваем, устанавливаем. Скриншотов процесса установки нету, тк переустанавливать node.js нету желания. Но там всё интуитивно понятно.

Создание файлов, инициализация проекта, установка библиотек.

Создаём папку bot. Желательно не использовать кирилицу, юникод и т. п. в названии. Сразу же создаём файл index.js или bot.js. Это не несёт особого смысла. Можно назвать как угодно, но принятно index.js / bot.js. Это будет главный файл бота, т.е. первым запускается, в нём основной код бота. Далее открываем консоль / терминал если у вас linux. Для быстрого открытия консоли на windows можно нажать WIN + R, ввести cmd. Далее переходим в папку бота, думаю как это сделать через консоль всем понятно. Пишим : npm init - инициализация проекта. Жмём enter до конца. Если ошибка в package name, то напишите bot. npm i discord.js - установка библиотеки discord.js.

Далее рекомендую установить один из следующих редакторов кода :

Если очень слабый компьюер можете поставить notepad++, но это для постоянной основы не самый хороший вариант. Лично я использую Atom.

Вы можете зарегистрировать его на сайте discord developers. Жмём кнопку "New Application". Вводим название бота. Жмём "Create". Переходим во вкладку "Bot", нажимаем "Add Bot", затем "Yes, do it!" Находим строку "token", немного ниже есть кнопка "Copy", нажимаем. Теперь в вашем буфере обмена есть токен бота.

Создадим первый код. Пишем :

Открываем консоль, переходим в папку проекта и пишем :

в зависимости от названия файла. Если у вас windows, то вы можете создать файл start.bat с текстом

Если линукс, то вы можете создать файл start.sh

Это будет запускать бота. Далее я не буду говорить про запуск. Делайте это сами.

Создаем файл config.json с конфигурацией нашего бота.

В начале кода бота напишем :

Еще вы можете создать конфиг прямо в коде бота.

Но второй вариант крайне не рекомендуется использовать, ведь для того что-бы изменить конфиг бота нам придется изменять его код.

Давайте залогируем тег автора.

Также можно писать не

.startsWith проверят начинается ли строка с символов в аргументах.

Также даже начинающим программистам будет очень полезна в боте команда !eval для выполнения кода не пиша его в коде бота, т.е. вы пишите !eval какой-то код и бот выполняет этот код.
Я нашёл хороший туториал по этой команде на github. Рекомендую ознакомиться и взять себе команду в код бота. Принцип её работы мы разберём позже. Тык.

Image alt

Это называется RichEmbed (Embed). Давайте отправим простой эмбед похожий на данный. (Картинка ниже)

Image alt

Для этого создадим новую команду !ping .

В Embed есть много различных параметров, вы можете прочесть их далее, либо посмотреть на оффициальном сайте discord.js

Давайте сделаем команду для получения информации о пользователе. Команда взята из моего бота. Будем использовать библиотеку moment.js , устанавливаем npm i moment.js

Image alt

Мой дискорд сервер!

Прошу зайти на мой дискорд сервер, ведь я долго делал туториал, а вам не сложно зайти на мой сервер в виде благодарности.

You can’t perform that action at this time.

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.


Статья будет состоять из предыстории, подготовительного этапа, написания логики и переноса бота на удаленный сервер.

Надеюсь, данная статья поможет многим начинающим.

Предыстория

Все началось в одну бессонную осеннюю ночь, которую я проводил на Discord – сервере. Так как я относительно недавно к нему присоединился, я стал его изучать вдоль и поперёк. Обнаружив текстовый канал «Вакансии», я заинтересовался, открыл его, и отыскал среди не интересующих меня предложений, это:

«Программист (разработчик бота)
Требования:

  • знание языков программирования;
  • способность к самообучению.
  • умение разбираться в чужом коде;
  • знание функционала DISCORD.
  • разработка бота;
  • поддержка и сопровождение работы бота.
  • Возможность поддержать и повлиять на приглянувшийся проект;
  • Приобретение опыта работы в команде;
  • Возможность продемонстрировать и улучшить имеющиеся навыки.»

Подготовительный этап


Discrod
Прежде, чем приступить к написанию нашего бота, его необходимо создать для Discord. Вам необходимо:

  1. Войти в Discord аккаунт по ссылке
  2. Во вкладе “Applications” нажать на кнопку “New Application” и назвать бота
  3. Получить токен бота, войдя в вашего бота и найдя в списке “Settings” вкладку “Bot”
  4. Сохранить где-нибудь токен

Также, необходимо создать приложение в Wargaming, чтобы получить доступ к API Wargaming. Тут тоже все просто:

  1. Заходим в аккаунт Wargaming по данной ссылке
  2. Заходим в «Мои приложения» и нажимаем на кнопку «Добавить новое приложение», дав имя приложения и выбрав его тип
  3. Сохраняем ID приложения
Для тех, кто не знает, или забыл, как устанавливать приложения из NuGet.

Инструкция для Visual Studio

  1. Переходим во вкладку Проект – Управление пакетами NuGet;
  2. Нажимаем на обзор и в поле поиска вводим “DSharpPlus”;
  3. Выбираем и устанавливаем framework;
  4. PROFIT!

Подготовительный этап окончен, можно переходить к написанию бота.

Написание логики


Работа с Discord бот происходит через функцию static async Task MainTask(string[] args);
Чтобы вызвать данную функцию, в Main необходимо прописать


Далее, вам необходимо инициализировать своего бота:


Где token – токен вашего бота.
Потом, через лямбду, прописываем необходимые команды, которые должен выполнять бот:

В конце данной функции, необходимо прописать await discord.ConnectAsync(); и await Task.Delay(-1);

Это позволит выполнять команды на фоне, не занимая основной поток.

Теперь необходимо разобраться с Wargaming API. Тут все просто – пишете CURL-запросы, получаете ответ в виде JSON – строки, вытягиваете оттуда необходимые данные и делаете над ними манипуляции.

Внимание! Все токены и ID приложений хранить в открытом виде строго не рекомендуется! Как минимум – Discord банит такие токены, когда они попадают во всемирную сеть, как максимум – бот начинает пользоваться злоумышленниками.

Деплой на VPS – сервер


После того, как вы закончили с ботом, его необходимо разместить на сервере, который постоянно работает 24/7. Это связанно с тем, что когда работает ваше приложение, то работает и бот. Как только вы выключаете приложение, засыпает и ваш бот.

Много VPS серверов существует на этом свете, как на Windows, так и на Linux, однако в большинстве случаев, на Linux в разы дешевле размещать.

На Discord – сервере мне посоветовали vscale.io, и я тут же создал на нем виртуальный сервер на Ubuntu и залил бота. Я не буду описывать, как работает данный сайт, а сразу перейду к настройки бота.

Далее, вам необходимо залить бота на Git – сервис, вроде GitHub и ему подобные и склонировать на VPS — сервер, или, другими путями скачать вашего бота. Учтите, что у вас будет только консоль, GUI не будет. Совсем.

После того, как вы скачали вашего бота, вам необходимо его запустить. Для этого, вам необходимо:

  • Восстановить все зависимости: dotnet restore
  • Построить приложение: dotnet build name_project.sln -c Release
  • Перейти к построенной DLL;
  • dotnet name_of_file.dll
  • Добавить запуск скрипта в /etc/init.d
  • Создать сервис, который будет запускаться при старте.

Выводы


Пользователи часто спрашивают, как создать бота в Дискорде и тем самым получить программу с необходимыми функциями. Сразу отметим, что достижение такой цели — непростая задача, а реализовать ее можно несколькими способами, к примеру, на основе discord.js, на Python или с помощью программы Discord Bot Maker.

Как создать Дискорд-бота на основе discord.js

На практике API Discord представляет собой удобный инструмент, позволяющий создать, а впоследствии использовать бота. С его помощью легко разработать помощника для решения разных задач, а далее задать необходимый набор команд. Для примера рассмотрим общий алгоритм создания бота для музыки. При правильном подходе он сможет проигрывать, пропускать и останавливать музыкальные файлы. Кроме того, в его функции будет входить поддержка очереди на проигрывание мелодии.

Выполните следующие шаги:



  1. Введите название будущего бота Дискорд, к примеру, Music Bot.
  2. Перейдите на вкладку Bot, а после жмите на кнопку Add Bot.



Этих действий достаточно, чтобы создать бота Дискорд, после чего нужно его добавить на сервер с помощью OAuth2 URL-генератора. Сделайте следующие шаги:

  1. Переместитесь в раздел OAuth2 и выберите Bot в панели Scopes.


  1. Укажите необходимые разрешения для проигрывания музыки и чтения.
  2. Копируйте созданный URL и вставьте его в веб-проводник.
  3. Выберите сервер, куда нужно добавить URL.
  4. Жмите на кнопку авторизации (Authorize).



На следующем этапе нужно создать проект с применением терминала. Для этого создайте директорию и перейдите ее с помощью следующих команд — mkdir musicbot && cd musicbot. Далее сделайте следующее:

  1. Создайте модули проекта с применением nmp init.
  2. Ответьте на несколько вопросов, которые необходимы, чтобы создать бота в Дискорд.
  3. Сделайте два файла, где будет вестись работа — touch index.js && touch config.json.
  4. Откройте проект в редакторе, к примеру, с помощью VS Code с применением приказа code.
  5. Установите группу зависимостей, необходимых для дальнейшей работы — npm install discord.js ffmpeg-binaries opusscript ytdl-core –save.
  6. Продолжите создание файла на config.json. На этом этапе сохраните префикс и токен для бота.
  1. Войдите на портал создания Дискорд и копируйте токен из раздела Bot (жмите на кнопку Copy).

Теперь нужно создать код javascript. Для этого копируйте следующие зависимости:

const Discord = require(‘discord.js’);

const ytdl = require(‘ytdl-core’);

После этого нужно создать с применением токена клиент и логин.

const client = new Discord.Client();

Далее добавьте несколько listeners, которые выполняют console.log при пуске.

После этого начните работать с ботом Дискорд с применением node. Важно, чтобы вновь созданный Discord-бот был онлайн. В консоли появится Ready!. Команда — node index.js.

Задание команд для бота Дискорд

Теперь остается задать необходимые команды.

Чтобы Дискорд-бот мог читать, напишите функцию.

client.on(‘message’, async message =>

if (message.author.bot) return;

if (!message.content.startsWith(prefix)) return;

Далее проверьте команду, которую нужно активировать. Используйте следующие команды.

> else if (message.content.startsWith(`$skip`))

> else if (message.content.startsWith(`$stop`))

После получения списка команд, которые можно запустить, переходите к их созданию.

Добавление песен

Здесь нужна гильдия, песня и библиотека ytdl (должна быть установлена заранее). Сделайте map с названием очереди, где будут храниться песни.

const queue = new Map();

async function execute(message, serverQueue)

const args = message.content.split(‘ ‘);

const voiceChannel = message.member.voiceChannel;

if (!permissions.has(‘CONNECT’) || !permissions.has(‘SPEAK’))

Перейдите к получению данных о песне и сохраните ее в song. Для этого потребуется ytdl-библиотека, получающая данные по ютуб-ссылке.

const songInfo = await ytdl.getInfo(args[1]);

В раздел serverQueue, если он пустой, добавьте трек. В случае, когда serverQueue имеет параметр null, сделайте контракт.

// Creating the contract for our queue

// Setting the queue using our contract

// Pushing the song to our songs array

// Here we try to join the voicechat and save our connection into our object.

var connection = await voiceChannel.join();

// Calling the play function to start a song

// Printing the error message if the bot fails to join the voicechat

Проигрывание трека

Теперь нужно создать опцию play для бота Дискорд с параметрами гильдия и песня, а также проверкой объекта song.

function play(guild, song)

const serverQueue = queue.get(guild.id);

Если да, нужно уйти с голосового канала и удалить очередь.

Далее трек играет с применением URL и playStream.

const dispatcher = serverQueue.connection.playStream(ytdl(song.url))

// Deletes the finished song from the queue

// Calls the play function again with the next song

Здесь создается stream, а его URL передается адресу песни.

Пропуск трека

Здесь оформите завершение диспетчера, который был сделан в опции play. Такое действие необходимо, чтобы начал играть очередной трек.

function skip(message, serverQueue)

Здесь проверяется, есть ли пользователь в голосовом канале, и имеется ли трек для пропуска.

Остановка

Опция stop подразумевает очистку массива song, удаления очереди и выхода из чата.

При создании сервера у пользователя возникает большое число обязанностей, которые иногда не в силах выполнить самостоятельно. Часть работы можно переложить на участников сервера, которые вступили в группу. Но для выполнения стандартных операций в рамках сервера можно возложить на автоматического помощника. Боты участвуют в работе программы на официальной основе, и поэтому можно приглашать созданных ботов на сервер. Во время добавления автоматического помощника клиенты программы могут устанавливать команды для выполнения. Хотя стандартный список ботов не бесконечный, и поэтому часть обязанностей нельзя положить на бота.

При подобном варианте пользователь может создавать оригинальных помощников при помощи специально разработанных для подобной цели ресурсов. Как правило, клиенты предпочитают применять discord.js, Python или Discord Bot Maker. Программы оснащены интуитивно понятным интерфейсом, чтобы не возникло проблем с пользованием, а вопросы возникали в ходе процесса создания.

Как создать Дискорд-бота на discord.js?

Пользователи могут создавать боты при помощи discord.js. Для того, чтобы выполнить операцию следует перейти на платформу, и выполнить операции в зависимости от инструкции.


Стандартная процедура создания бота при помощи портала discord.js:

  • На платформе просматриваем предлагаемое меню, которое расположено с левого края, и перейти в пункт «new application».
  • При переходе в открывшееся меню указываем наименования приложения, и выбрать вариант для создания «Create».
  • Затем переходим в пункт ботов, и нажимаем на опцию для добавления ботов Add Bot.


После выполнения операции, бот готов к использованию, и следует добить в мессенджер Дискорд. На платформу можно добавить бот при помощи генератора OAuth2. Для того, чтобы добавить бот, необходимо:


Затем следует заняться производством проекта при помощи применения терминала.

  • Вначале производим директорию, и перейти в созданный вариант при помощи применения две команды: mkdir musicbot && cd musicbot.
  • После этого, следует произвести модель проекта при использовании команды npm init. При создании проводится стандартная процедура в виде вопросов по указанной тематике.
  • Пользователям следует произвести необходимые два файла, в которых затем следует производить работу: touch index.js && touch config.json.
  • При помощи текстового редактора открываем необходимыц для подобной цели проект. Например, подойдет VS Code.


Перед тем, как начать использовать бот, следует произвести установки выбранных зависимостей:


Задание команд для бота Дискорд через discord.js.

При помощи discord.js пользователи могут не только создавать работы для выполнения конкретно выбранной опции, но и могут контролировать процедуру задания команд для созданного бота. Как правило, пользователи предпочитают использовать ботов для того, чтобы:

Добавление музыки

Вначале следует добавить команду Play, чтобы автоматический помощник проигрывал список выбранных композиций.

Затем указываем список, и порядок сохранения композиций.

Для подключения к голосовому каналу, добавляем в сферу применения команду в опции бота.

Проигрывание песни

Для исполнения музыкальной композиции следует использовать опцию с названием playStream, где следует указать и URL – адрес выбранной композиции. При построении команды для бота, чтобы проигрывались музыкальные композиции, следует указать порядок воспроизведения песен. Если грамотно ввести порядок произведения музыкальных композиций, то песни будут играть по очереди, а не будет играть одна песня.

Пропуск трека

В программе Дискорде могут содержаться музыкальные композиции, которые надоели, и пользователь не хочет, чтобы при использовании прослушивания списка песен. Для того, чтобы пропускать конкретно выбранный трек при прослушивании музыки, следует указать необходимую команду для бота.

Остановка

При этом, список песен может быть изменен. При помощи бота происходит остановка прослушиваемых композиций. Для того, чтобы добавить в бот необходимую опцию, следует воспользоваться комбинацией. При построении команды для остановки воспроизведения песен, следует указать, что опцию необходимо использовать в рамках голосового канала.

Полный код бота для Дискорд

При помощи платформы пользователи могут писать коды для ботов, которые впоследствии будут использоваться в рамках мессендежра Дискорд. После проведения создания бота можно приступать к написанию кода javascript:

  • Вначале проводим импорт зависимости, которые необходимы.
  • При использовании токена следует создать клиента и наименование в виде логина.

Затем при выполнении процедуры следует указать базовые варианты слушателей, которые исполняют способы console.log во время произведения запуска. После грамотного проведения операции, можно начинать использовать бота в зависимости от предназначения. Для использования бота можно применить команду node.

Тестирование бота

При помощи платформы пользователи могут произвести проверку работы работа. После проведения диагностики, пользователи могут понять моменты, которые необходимо доработать перед началом работы. После исправления проблем, и тестирования, можно вводить бот в эксплуатацию.

Как создать бота в Дискорд на Python?

Пользователи могут воспользоваться и сервисом Python дл того, чтобы произвести бот для выполнения конкретно выбранной задачи.

Инструкция по созданию бота внутри платформы Python:

  • Вначале перейти в пункт General Information, и произвести копирование информации о Client ID.
  • Затем вставляем скопированный текст в раздел для CLID.
  • Переходим во вкладку с ботами, и производим бот. Затем следует скопировать указанный токен.
  • Производим установку библиотеки.
  • Затем производим файл, и в рамках добавляем необходимый для применения в рамках программы словарь.
  • После выполнения операции следует произвести файл варианта main. При этом, пользователь может указать любое название.
  • Библиотека должна быть импортирована, и указанный файл.
  • Затем следует произвести для созданного бота туловище, и дать наименование.
  • После этого, можно заняться проектированием основного варианта кода.
  • Затем необходимо запустить бот в работу, и указать команды, которые будут располагаться на помощника.

Применение программы Discord Bot Maker

Программу Discord Bot Maker применяют для создания ботов в рамках текстовых или голосовых диалогов в мессенджере Дискорд. В рамках программы можно создать бот, который выполняет комбинацию необходимых команд. При этом, пользователь может выбирать варианты команд, которые будут выполняться помощников. Пользователи могут вкладывать необходимые задачи в бот при помощи платформы Discord Bot Maker. Преимущество использования сервиса заключается в том, что программы интегрированы с мессенджером, и поэтому установка созданного бота проводится по облегченному варианту.

Если бот, исчерпал заложенные опции и инструменты, то пользователь может удалить бот с канала. Пользователи могут удалить бота, если уверены, что не захотят вернуть помощника для выполнения работы. Для того, чтобы удалить бот следует:

Создаем бота для Discord

В этом ознакомительном HOWTO я расскажу, как можно немного занять себя на время карантина и сделать бота для своего Discord-сервера. Мы развернем NodeJS в Docker под Ubuntu 18.04 и запустим в нем бота с парочкой простых команд. В конце я оставлю ссылки на полезные источники информации, чтобы вы могли дальше развивать бота, наделяя его полезными функциями.

Программное обеспечение сервера, используемое в этом уроке:

  • Ubuntu 18.04
  • Docker 19.03.6
  • npm 6.14.5

В этой статье подразумевается, что вы обладаете навыками работы в командной строке Linux.

Первые шаги

New application

В появившемся окне нужно придумать имя своему приложению (будущему боту):

Бот Дискорд

После указания имени и создания приложения мы можем перейти к созданию бота. Для этого в левом меню выберите пункт “Bot” и нажмите на кнопку “Add Bot”.

Добавить бота в Discord

Последним шагом здесь будет копирование token по кнопке “Copy”. Держите в секрете ваш token и сохраните его куда-нибудь — он понадобится позже.

Токен Discord

Подготовка сервера

В качестве площадки для размещения бота я использую VDS под управлением операционной системы Ubuntu 18.04. Вы можете разместить бота и на других дистрибутивах, убедившись в том, что в них установлены нужные пакеты.

Команды для установки в Ubuntu 18.04:

Если вы используете другой дистрибутив, то установка необходимых пакетов может отличаться. Вы можете найти инструкцию для конкретного дистрибутива в документации или в поисковике.

Настройка Iptables для чайников

Как установить и настроить NTP на сервере

Создание основных файлов

Как я указал в начале статьи, мы будем использовать NodeJS для запуска бота. Дополнительно нам потребуются две библиотеки:

  • discord.js (основная библиотека для работы бота);
  • dotenv (будет использоваться для конфигурационного файла).

Создадим рабочую директорию проекта и файл package.json. В моем случае рабочая директория располагается в директории /home, но вы можете выбрать любую другую на свое усмотрение.

Примерный вид файла:

В нем мы указали имя будущего пакета (name), версию (version), описание (description), автора (author), основной файл (app.js) и список зависимостей (dependencies).

Запустим npm install и убедимся, что создался файл package-lock.json, который потом также будет скопирован в контейнер.

Теперь создадим файл самого бота app.js и запишем в него следующий код:

Учитывая, что здесь используется конфигурационный файл, создадим в рабочей директории .env и запишем в него:

Вместо “tokenbot” подставляется token бота, который был сохранен в начале статьи, а в качестве prefix указывается символ, после которого будут вводиться команды. Я выбрал в качестве префикса “!”, но вы можете выбрать другой удобный символ, если только он не используется самим Discord, как например “@” или “/”.

Создание Docker-контейнера

Теперь в рабочей директории нам нужно создать Dockerfile, который будет содержать инструкции для сборки образа, на основе которого будет запущен контейнер. В него мы запишем:

Создадим файл .dockerignore и запишем туда несколько локальных файлов, которые будут игнорироваться:

Соберем образ и запустим на его основе контейнер:

Вместо “authorname” можно ввести имя пользователя, от которого создается бот, и через “/” указать имя бота.

Проверим, что контейнер запустился, специальной командой:

Добавление бота на сервер

Бот запущен и работает в контейнере. Осталось только пригласить его на сервер и проверить его работу.

Для приглашения необходимо:

Выбор сервера для бота

Теперь мы можем проверить работу двух команд, созданных ранее:

Проверка команд бота

Заключение

В этой ознакомительной статье мы зарегистрировали новое приложение, создали бота, написали несколько простых команд, запустили контейнер и пригласили бота на сервер.

Далее бота можно развивать, наполняя его другими более сложными и полезными функциями. Для этого вам пригодятся знания JavaScript и следующие ссылки:

Надеюсь, этот материал будет полезен для всех, кто давно хочет создать собственного бота в Discord, но не знает, с чего начать.

Читайте также: