Создание Discord – бота на .NET Core с деплоем на VPS-сервер

Настройка Linux *Программирование *.NET *C# * Tutorial image Привет, Хабровчане! Сегодня вы ознакомитесь со статьей, в которой будет рассказано, как создать бота, используя C# на .NET Core, и о том, как его завести на удаленном сервере. Статья будет состоять из предыстории, подготовительного этапа, написания логики и переноса бота на удаленный сервер. Надеюсь, данная статья поможет многим начинающим.

Предыстория

Все началось в одну бессонную осеннюю ночь, которую я проводил на Discord – сервере. Так как я относительно недавно к нему присоединился, я стал его изучать вдоль и поперёк. Обнаружив текстовый канал «Вакансии», я заинтересовался, открыл его, и отыскал среди не интересующих меня предложений, это: «Программист (разработчик бота) Требования: знание языков программирования; способность к самообучению. Пожелания: умение разбираться в чужом коде; знание функционала DISCORD. Задачи: разработка бота; поддержка и сопровождение работы бота. Ваша выгода: Возможность поддержать и повлиять на приглянувшийся проект; Приобретение опыта работы в команде; Возможность продемонстрировать и улучшить имеющиеся навыки.» Это мгновенно меня заинтересовало. Да, за данную работу не платили, но от тебя никаких обязательств не требовали, да и в портфолио лишним не будет. Поэтому я написал админу сервера, и он попросил написать бота, который будет показывать статистику игрока в World of Tanks.

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

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

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

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

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

Software Тут уже имеется свобода выбора. Кто-то использует Visual Studio, кто-то Rider, кто-то вообще мощный, и пишет код в Vim (все же настоящие программисты используют только клавиатуру, верно?). Однако, чтобы не реализовывать Discord API, можно использовать неофициальную библиотеку для C# “DSharpPlus”. Его можно установить либо из NuGet, либо самому собрав исходники с репозитория. Для тех, кто не знает, или забыл, как устанавливать приложения из NuGet. Инструкция для Visual Studio

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

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

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

Всю логику приложения рассматривать не будем, я лишь покажу, как работать с перехватом сообщений ботом, и как работать с Wargaming API. Работа с Discord бот происходит через функцию static async Task MainTask(string[] args); Чтобы вызвать данную функцию, в Main необходимо прописать

MainTask(args).ConfigureAwait(false).GetAwaiter().GetResult();

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

discord = new DiscordClient(new DiscordConfiguration {     Token = token,     TokenType = TokenType.Bot,     UseInternalLogHandler = true,     LogLevel = LogLevel.Debug });

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

discord.MessageCreated += async e => {     string message = e.Message.Content;     if (message.StartsWith("&"))     {         await e.Message.RespondAsync(“Hello, ” + e.Author.Username);     } }; 

Где e.Author.Username – получение никнейма пользователя. Таким образом, когда вы отправите любое сообщение, которое начинается с &, бот будет приветствовать вас. В конце данной функции, необходимо прописать await discord.ConnectAsync(); и await Task.Delay(-1); Это позволит выполнять команды на фоне, не занимая основной поток. Теперь необходимо разобраться с Wargaming API. Тут все просто – пишете CURL-запросы, получаете ответ в виде JSON – строки, вытягиваете оттуда необходимые данные и делаете над ними манипуляции. Пример работы с WargamingAPI

public Player FindPlayer(string searchNickname)         {             //https://api.worldoftanks.ru/wot/account/list/?application_id=y0ur_a@@_id_h3r3search=nickname             urlRequest = resourceMan.GetString("url_find_player") + appID + "&search=" + searchNickname;             Player player = null;             string resultResponse = GetResponse(urlRequest);             dynamic parsed = JsonConvert.DeserializeObject(resultResponse);              string status = parsed.status;             if (status == "ok")             {                 int count = parsed.meta.count;                 if (count > 0)                 {                     player = new Player                     {                         Nickname = parsed.data[0].nickname,                         Id = parsed.data[0].account_id                     };                 }                 else                 {                     throw new PlayerNotFound("Игрок не найден");                 }             }             else             {                 string error = parsed.error.message;                 if (error == "NOT_ENOUGH_SEARCH_LENGTH")                 {                     throw new PlayerNotFound("Минимум три символа требуется");                 }                 else if (error == "INVALID_SEARCH")                 {                     throw new PlayerNotFound("Неверный поиск");                 }                 else if (error == "SEARCH_NOT_SPECIFIED")                 {                     throw new PlayerNotFound("Пустой никнейм");                 }                 else                 {                     throw new Exception("Something went wrong.");                 }             }              return player;         } 

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

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

После того, как вы закончили с ботом, его необходимо разместить на сервере, который постоянно работает 24/7. Это связанно с тем, что когда работает ваше приложение, то работает и бот. Как только вы выключаете приложение, засыпает и ваш бот. Много VPS серверов существует на этом свете, как на Windows, так и на Linux, однако в большинстве случаев, на Linux в разы дешевле размещать. На Discord – сервере мне посоветовали vscale.io, и я тут же создал на нем виртуальный сервер на Ubuntu и залил бота. Я не буду описывать, как работает данный сайт, а сразу перейду к настройки бота. Первым делом, вам необходимо установить необходимый софт, который будет запускать нашего бота, написанного на .NET Core. Как это сделать, описано здесь. Далее, вам необходимо залить бота на Git – сервис, вроде GitHub и ему подобные и склонировать на VPS — сервер, или, другими путями скачать вашего бота. Учтите, что у вас будет только консоль, GUI не будет. Совсем. После того, как вы скачали вашего бота, вам необходимо его запустить. Для этого, вам необходимо:

  • Восстановить все зависимости: dotnet restore
  • Построить приложение: dotnet build name_project.sln -c Release
  • Перейти к построенной DLL;
  • dotnet name_of_file.dll

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

  • Добавить запуск скрипта в /etc/init.d
  • Создать сервис, который будет запускаться при старте.

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

Выводы

Я рад, что я взялся за это задание. Это был мой первый опыт разработки бота, и рад, что получил новые знания по C#, и работе с Linux. Ссылка на Discord – сервер. Для тех, кто играет в игры Wargaming. Ссылка на репозиторий, где лежит Discord bot. Ссылка на репозиторий DSharpPlus. Спасибо за внимание!

1 августа, 00:57

Простая инструкция.

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

Для создания бота в Дискорде не придется устанавливать дополнительные программы или платить деньги – бот будет полностью существовать в облаке. В процессе мы воспользуемся несколькими инструментами: библиотеками Python, Discord API и Repl.it – так называется платформа для проведения облачных вычислений.

В этом гайде мы расскажем, как сделать бота в Дискорде.

Как зарегистрировать учетную запись Discord Bot

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

Для регистрации учетной записи Discord Bot:

  1. Залогиньтесь на сайте Discord в свой обычный аккаунт.
  2. Откройте веб-версию интерфейса для разработчиков.
  3. Нажмите кнопку New Application («Новое приложение») в правом верхнем углу страницы.
  4. Придумайте имя для своего приложения (бота) и нажмите Create («Создать»).
  5. Выберите вкладку Bot («Бот») в меню слева и нажмите Add Bot («Добавить бота»). Подтвердите действие, нажав кнопку Yes, do it! («Да, давайте!»).
  6. Настройки Public Bot и Require OAuth2 Code Grant менять не нужно.

Теперь у вас есть собственный бот – правда, пока бесполезный.

После этого нажмите Click to Reveal Token и скопируйте куда-нибудь токен бота Discord – это уникальный ключ доступа к нему. Комбинацию стоит передавать только другим разработчикам, которым вы доверяете, а иначе лучше держать при себе.

В случае, если кто-то все-таки узнает токен, можно нажать Regenerate – это действие сгенерирует новый токен.

Как добавить бота на сервер в Дискорде

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

Для добавления бота создайте URL-инвайт:

  1. Откройте вкладку OAuth2. Поставьте галочку рядом с пунктом bot в секции scopes.
  2. Далее необходимо предоставить боту разрешения, нужные для работы. Мы создаем простого текстового бота, так что ему потребуется всего несколько прав – в зависимости от задуманных функций их набор будет меняться. Главное, трижды подумайте, чем давать боту разрешение Administrator – оно может поставить под угрозу безопасность сервера.
  3. Как только укажите необходимые разрешения, можете нажать Copy выше этого меню. Так вы скопируете приглашение, которое понадобится для добавления бота на сервер.
  4. Вставьте скопированную ссылку в адресную строку бразуера, выберете сервер для бота и нажмите Authorize. Разумеется, приглашать бота на сервер могут только пользователи, имеющие право «Управление сервером» на конкретном сервере Discord.

Теперь бот создан и «заселен». Приступаем к самому интересному: написанию кода на Python для работы бота. Не переживайте: сейчас расскажем обо всем пошагово.

Как написать код для чат-бота в Дискорде

В процессе программирования бота мы воспользуемся библиотекой Python discord.py. Так называется API, созданный специально для упрощения написания кода ботов Discord.

Как установить discord.py

Можно писать код для бота в любом редакторе кода на своем компьютере или даже в блокноте – последний вариант, мягко говоря, не слишком удобен. В этом гайде мы воспользуемся онлайн-средой IDE Repl.it, доступ к которой можно получить прямо в браузере. Так работать с кодом будет намного проще.

В запущенной среде создайте новый Repl и укажите язык программирования Python.

Для подключения библиотеки discord.py просто введите команду import discord в начале main.py. Repl.it автоматически выполнит необходимые действия при нажатии Run.

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

py -3 -m pip install -U discord.py

На MacOS команда выглядит несколько иначе – если этот вариант не сработает, попробуйте заменить pip на pip3:

python3 -m pip install -U discord.py

Как задать события для бота Discord

События – это набор правил, которые позволяют боту в Дискорде выполнять различные функции, реагируя на происходящее в чатах: например, ответить на чье-то сообщение определенным образом. Библиотека discord.py основана на концепте событий, так что с ними стоит разобраться.

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

Для начала добавьте в файл main.py (его можно переименовать, только избегайте названия discord.py) следующий код:

import discordimport os

client = discord.Client()

@client.eventasync def on_ready(): print(‘We have logged in as {0.user}’.format(client))

@client.eventasync def on_message(message): if message.author == client.user: return

if message.content.startswith(‘$hello’): await message.channel.send(‘Hello!’)

client.run(os.getenv(‘TOKEN’))

Далее мы создадим файл с расширением .env для хранения токена бота, который вы скопировали ранее. Тем, кто создает бота локально, этот пункт можно пропустить: достаточно заменить код os.getenv(‘TOKEN’) самим токеном.

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

Для создания .env-файла нажмите «Добавить файл» и укажите расширение .env в конце названия документа.

Внутрь скопируйте строчку кода, указанную ниже, а также вставьте туда токен своего бота:

TOKEN=[вставьте токен сюда]

Настало время разобраться, как именно работает код бота для Дискорда, который вы скопировали ранее:

  1. Сперва код импортирует библиотеку discord.py;
  2. Вторая строка используется для подключения библиотеки os – она нужна исключительно для получения переменной TOKEN из файла .env. В локальных проектах эту строку можно удалить.
  3. Далее создается экземпляр Client, то есть устанавливается связь с самим Discord.
  4. @client.event() – декоратором для регистрации события. Он относится к асинхронным библиотекам, работающим через обратные вызовы – то есть с использованием функций, которые вызываются в результате какого-то события. В данном случае функция on_ready() срабатывает, когда бот включается, а on_message() вызывается, когда бот получает сообщение.
  5. Без дополнительных условий on_message() будет срабатывать каждый раз, когда кто-то пишет в чат. Только мы не хотим, чтобы бот отвечал самому себя, поэтому прописываем правило: если Message.author совпадает с Client.user, то функция просто возвращает return (бездействует).
  6. Далее бот проверяет Message.content (содержимое сообщения). Если оно начинается с ’$hello’, то бот отвечает приветствием ‘Hello!’.
  7. Последняя строка подсоединяет бота с помощью токена входа, который вызывается из файла .env.

Теперь, когда базовый код для бота написан (ну или скопирован), остается главное – запустить его в Discord.

Как запустить бота в Дискорде

В Repl.it нажмите специальную кнопку запуска вверху.

В локальном редакторе кода для запуска бота можно использовать специальные команды для терминала. 

Для ПК с Windows:

py -3 main.py

Для MacOS и других ОС:

python3 main.py

Чтобы проверить работоспособность бота, перейдите в свою комнату Discord и отправьте сообщение с текстом $hello. Бот должен ответить: Hello!

Делаем бота умнее

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

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

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

Кроме того, научим бота отправлять случайную вдохновляющую фразу каждый раз, когда кто-то напишет команду $inspire.

С этого и начнем.

Как добавлять в бота новые фразы

Можно прописывать все реплики вручную, но в случае с вдохновляющими цитатами мы воспользуемся готовой англоязычной API zenquotes.io. Также импортируем два дополнительных модуля Python, добавим функцию get_quote() и научим бота ее вызывать.

После всех манипуляций код выглядит так:

import discordimport osimport requestsimport json

client = discord.Client()

def get_quote(): response = requests.get(«https://zenquotes.io/api/random») json_data = json.loads(response.text) quote = json_data[0][‘q’] + » –» + json_data[0][‘a’] return(quote)

@client.eventasync def on_ready(): print(‘We have logged in as {0.user}’.format(client))

@client.eventasync def on_message(message): if message.author == client.user: return

if message.content.startswith(‘$inspire’): quote = get_quote() await message.channel.send(quote)

client.run(os.getenv(‘TOKEN’))

Вот, что мы добавили:

  • Модуль requests – с его помощью бот делает HTTP-запрос для получения данных из API. API возвращает модуль JSON, упрощает работу с возвращенными данными.
  • Функция get_quote() – она использует модуль запросов для запроса данных из URL-адреса API. API возвращает случайную вдохновляющую цитату.
  • Внутри предыдущей функции мы используем json.loads(), чтобы преобразовать ответа API в JSON. Цитата выводится в виде строки.
  • В конце кода мы поменяли логику бота. Раньше он реагировал на сообщения, начинавшиеся с $hello, а теперь триггером служит $inspire. Вместо строго определенного ответа Hello! он запрашивает случайную цитату quote = get_quote() и отправляет ее в чат.

Теперь вы можете запустить бота и протестировать его самостоятельно.

Как научить бота в Дискорде подбадривать пользователей

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

В первую очередь пропишек список Python, содержащий слова-триггеры.

После создания переменной client добавляем код:

sad_words = [«sad», «depressed», «unhappy», «angry», «miserable»]

Слова можно менять, в том числе на русскоязычные. 

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

После списка sad_words добавляем еще один:

starter_encouragements = [ «Cheer up!», «Hang in there.», «You are a great person / bot!»]

Опять-таки, можно менять фразы на свое усмотрение – это всего лишь пример.

Как научить бота Discord отвечать на сообщения

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

import random

Далее модифицируем функцию on_message() – нам нужно, чтобы она проверяла все сообщения пользователей на наличие триггеров из списка sad_words. Если оно обнаружится, то бот ответит.

Получился такой код:

async def on_message(message): if message.author == client.user: return

msg = message.content

if msg.startswith(‘$inspire’): quote = get_quote() await message.channel.send(quote) if any(word in msg for word in sad_words): await message.channel.send(random.choice(starter_encouragements))

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

* * *

Теперь вы знаете, как создать и настроить бота в Дискорде.

Как почистить Windows от хлама и ненужных файлов – гайд по очистке памяти Виндовс

Как играть в «Герои 3» по сети бесплатно

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

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

Содержание:

Чтобы затащить помощника в свой сервер, нужно выбрать бота, нажать «invite» или «пригласить» и следовать нашей инструкции, которая будет в конце статьи. А пока остановимся на том, где найти и как выбрать ботов.

8 полезных ботов для Дискорда

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

На сервере компании пригодятся боты, которые умеют, например:

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

Мы изучили существующих ботов и выбрали среди них полезных и работающих. Ниже – боты, которые стоят внимания.

Security Verification

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

Функции бота:

  • защита – настройка канала для верификации, защита от спама, модерация;
  • статистика – полная статистика сервера, пользователя, информация о канале, статистика верификации на сервере;
  • различные утилиты – игры, розыгрыши, найти участника по «id»;
  • взаимодействия – вы можете виртуально обнять, поцеловать, погладить покормить или ударить собеседника через этого бота.

Вызов помощи или команд-листа: «/help».

Читайте также: «Видео в Телеграме: как записать, отправить и удалить».

MEE6

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

Функции бота:

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

Вызов помощи или команд-листа: «!help».

Community Hubs

Полезный дискорд-бот в 2022 году для вашего сервера. С его помощью вы открываете участникам возможность создания собственного контента.

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

Чтобы создать свой собственный хаб, используйте команду «!hub create».

Функции бота:

  • создание отдельных каналов.

Вызов помощи или команд-листа: «!hub help».

Pancake

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

Как можно пользоваться этим ботом в Дискорде:

  • управление музыкой – бот может воспроизводить музыку из Ютуба, Саундклаба и Твича.
  • модерация – отправляет в баны, удаляет сообщения и т. д.
  • информация – по запросу дает информацию о сервере, пользователе, позволяет настроить приветствие и прощание с участниками.
  • поиск в Гугле – набрав определенную команду, вы сможете найти нужную информацию.

Вызов помощи или команд-листа: «p!help».

Кстати, о комментариях. Мы тут недавно разбирались, как работать с ними в Телеграме – «Комментарии в Телеграме: как их включить, настроить или отключить».

Easy Poll

Бот для создания голосований. Дайте ему команду, и он проведет голосование с 20 вариантами ответов, которые, конечно же, придется настраивать вам.

Функции бота:

  • создает голосования – если вам нужно провести опрос или голосование на сервере, введите команду;
  • создает опросы с ограничением по времени – вы получите результаты по окончании установленного времени.

Вызов команд-листа: «/help».

Lacuna

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

Функции бота:

  • Модерирование – защитит ваш сервер от спамеров и прочих нарушителей порядка. Фиксирует действия пользователей и создает журнал, чтобы вам было проще следить за модерированием и наказанием провинившихся. Система репостов позволяет участникам сервера отправлять жалобы на рассмотрение вам или модераторам сервера.
  • Оповещения и подписки – добавьте канал Twitch и YouTube и получайте оповещения о выходе видео или о прямой трансляции.
  • Уровни и награды – чем активнее участники сервера, тем выше у них опыт, а бот проследит, чтобы они получили свои награды.
  • Временные голосовые каналы – создавайте временные голосовые каналы для пользователей с помощью Лакуны. Если канал остается пустым, он автоматически удаляется. Можно делегировать права редактировать некоторые параметры в канале.

Вызов помощи или команд-листа: «/help».

RitaBot Translator

Обратите внимание на этот популярный и востребованный бот-переводчик для Дискорда, главным преимуществом которого считается поддержка более 50 языков.

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

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

Функции бота:

  • перевод сообщений – при переводе Rita использует Google Cloud Translate API, один из самых точных API-интерфейсов перевода;
  • определение языка – автоматически определяет язык и переводит на тот, который вы ей указали.

Вызов помощи или команд-листа: «!tr help commands».

Carl Bot

Бот, предназначенный для администрирования сервера, практически не имеет развлекательных команд. Carl Bot выполняет роль администратора и назначает роли пользователям сервера, которые только вошли на него. Распределяет отличившихся пользователей в черный или белый список. С его помощью можно забанить спамеров и удалить оставленные ими сообщения.

Функции бота:

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

Вызов помощи или команд-листа: «!help+1».

Мы много знаем о ботах. У нас есть статья о 34 полезных ботах для Телеграма, которые можно добавить в свой канал и упростить свою работу с каналами в мессенджере.

Как добавить и включить бота в Дискорде

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

Как установить бота в Дискорде

Мы покажем, как установить бота с помощью ПК, на примере Security Verification, которого мы взяли из Листа Ботов Дискорда. Чтобы установить бота из списка, нажмите «Пригласить» или «Invite», если устанавливаете с англоязычного сайта.

Кликните, чтобы пригласить бота на сервер

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

Чтобы войти по QR-коду, зайдите в мобильное приложение, на нижней панели инструментов нажмите на иконку Дискорда, которая находится справа.

Затем пролистайте вниз и выберите «Сканировать QR-код». Далее наведите камеру на экран вашего компьютера и отсканируйте QR-код.

Окно ввода данных учетной записи

И вот вы вошли в Дискорд. Далее выберите сервер, в который вы хотите установить бота. Чтобы предоставить ему доступ к вашему профилю, нажмите «Продолжить».

Бот хочет получить доступ к учетной записи

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

Предоставление прав боту

Если вы согласны с функциями и правами робота на сервере – нажмите «Авторизовать».

Жмите авторизовать бота

Бот еще раз попросит доступ к вашему профилю, но перед этим боту нужно доказать, что вы не являетесь ботом. Забавно, правда? :–) Для этого нужно поставить галочку напротив надписи «Я человек».

Помните, как было в сказках? Чтобы пройти к горе, герою по пути нужно было ответить на вопрос великана. Если герой не отвечал правильно, страж не пропускал его, а того хуже – съедал.

Так и тут, пользователей периодически задерживает КАПЧА, заставляя проходить еще один шаг и доказывать, что вы не робот. Спасибо, хоть не съедает при неправильном ответе.

Если повезет, вы проскочите, а если нет – пройдите тест по предложенной инструкции. Например, вам придется выбрать все трамваи среди троллейбусов или найти кабачок среди баклажан. Я вам скажу, не каждому это под силу :–)

Докажи боту, что ты человек

Нам повезло, и мы проскочили без теста. Это окно можно закрыть и перейти в сам Дискорд для настройки бота.

Мы установили бота, теперь пора его настроить

Как настроить бота в Дискорде

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

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

Бот на сервере

Чтобы вызвать список команд, введите «/help» в строке или скопируйте из сообщения от бота и вставьте.

Ввод команды «/help»

Бот отреагирует на запрос ответом со списком команд, которые умеет выполнять. Как использовать бота в Дискорде – выбрать нужную команду и смотреть, как бот ее выполняет.

Список команд бота Security Verification

В заключение

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

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

Если бот вам подходит, нажмите «invite».

Пусть боты модерируют сообщения, а посты в Дискорде публикуются через SMMplanner – вы в это время сможете заняться более важными делами. Заставьте алгоритмы работать за вас. Удачи!

21 мая в 2020 55K image

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

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

  • Ubuntu 18.04
  • Docker 19.03.6
  • npm 6.14.5 

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

Первые шаги

Первым шагом станет создание приложения на официальном сайте Discord (убедитесь, что вы зарегистрированы). Для этого потребуется пройти по ссылке и нажать на кнопку “New application”.

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

image

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

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

image

Комьюнити теперь в Телеграм Подпишитесь и будьте в курсе последних IT-новостей

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

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

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

  sudo apt update  sudo apt install docker npm

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

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

Настройка Iptables для чайников image
Как установить и настроить NTP на сервере image

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

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

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

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

  mkdir /home/my-discord-bot  cd /home/my-discord-bot  touch package.json

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

  {  "name": "my-discord-bot",   "version": "1.0.0",   "description": "My discord bot",   "author": "Me ",   "main": "app.js",   "keywords": [   "nodejs"    ],   "dependencies": {   "discord.js": "^12.1.1",   "dotenv": "^8.2.0"    }  }

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

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

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

  // Загрузка библиотек и конфигурационного файла  require('dotenv').config();    const Discord = require('discord.js');  const bot = new Discord.Client();  const token = process.env.token;  const prefix = process.env.prefix;    bot.login(token);    // Запуск бота  bot.on('ready', () => {   console.info(`Logged in as ${bot.user.tag}!`);   console.info(`Current prefix: ${prefix}`);  });    // Команда для приветственного сообщения  bot.on('message', message => {   if (message.content === `${prefix}hello`) {   console.log(message.content, message.author);   message.channel.send('hello!');    }  });    // Команда для вывода количества участников сервера  bot.on('message', message => {   if (message.content === `${prefix}server`) {   console.log(message.content, message.author);   message.channel.send(`Сообщество: ${message.guild.name}nУчастников: ${message.guild.memberCount}`);    }  });

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

  token=tokenbot  prefix="!"

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

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

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

  FROM node:14    WORKDIR /home/my-discord-bot  COPY package*.json ./    RUN npm install    COPY . .    EXPOSE 8080    CMD ["node", "app.js"]

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

  node_modules  npm-debug.log

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

  docker build -t authorname/my-discrod-bot  docker run -p 42150:8080 -d authorname/my-discrod-bot

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

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

  docker ps     9fbaf1176c7a        authorname/my-discrod-bot   "docker-entrypoint.s…"   6 seconds ago       Up 4 seconds        0.0.0.0:42150->8080/tcp   pensive_carson

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

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

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

  1. Вернуться обратно по ссылке.
  2. Выбрать созданное приложение.
  3. Перейти во вкладку “OAuth2”.
  4. В списке “Scopes” выбрать “bot”.
  5. Скопировать ссылку и перейти по ней в браузере.
  6. Выбрать сервер, на который будет добавлен бот.

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

Заключение

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

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

  • документация библиотеки discordjs;
  • справочная информация по JavaScript;
  • ознакомительный курс по Docker.

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

Вопросы и пожелания можно оставлять в комментариях. Спасибо за внимание!

Наши постоянные авторы и читатели делятся лайфхаками, основанными на личном опыте. Полная свобода самовыражения.

Оцените статью
Рейтинг автора
4,8
Материал подготовил
Егор Новиков
Наш эксперт
Написано статей
127
А как считаете Вы?
Напишите в комментариях, что вы думаете – согласны
ли со статьей или есть что добавить?
Добавить комментарий