Categories: Новини

Як зробити свого дискорд бота

Як створити свій робот в дискорд безкоштовно?

Для початку зайдіть на офіційний сайт розробки дискорда. Натисніть на синю кнопку у правому верхньому кутку New Application, відкриється вікно зі створенням програми: у рядку Name введіть назву для майбутнього бота, потім натисніть Create.

Як додати свій бот на сервер дискорд?

Відкрийте сторінку бота та натисніть кнопку Invite, щоб додати його на власний сервер. Виберіть, на який сервер потрібно запросити бота (якщо у вас їх кілька) і натисніть Продовжити. Перегляньте список необхідних дозволів для бота та клацніть Авторизувати. Підтвердіть, що ви не робот, пройшовши капчу.

Як створити свій робот в Дискорді на телефоні?

Створити бота і додати його на сервер, скопіювати токен бота

  1. На вкладці Applications виберіть New Application.
  2. Введіть назву майбутньої програми (1) та натисніть Create (2).
  3. Програма створена.
  4. Погодьтеся додати бота у ваш додаток.
  5. Бот створено.

Habr
Створення бота Discord на основі discord.js / Хабр

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

Сьогодні ви ознайомитеся зі статтею, в якій буде розказано, як створити бота, використовуючи C# на .NET Core, та про те, як його завести на віддаленому сервері.

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

Сподіваюся, ця стаття допоможе багатьом початківцям.

Передісторія

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

Програміст (розробник робота)
Вимоги:

  • Можливість підтримати і вплинути на проект, що сподобався,
  • Набуття досвіду роботи у команді,
  • Можливість продемонструвати та покращити наявні навички.

Це миттєво мене зацікавило. Так, за цю роботу не платили, але від тебе жодних зобовязань не вимагали, та й у портфоліо зайвим не буде. Тому я написав адміну сервера, і він попросив написати бота, який показуватиме статистику гравця у World of Tanks.

Підготовчий етап

Discrod
Перш ніж приступити до написання нашого бота, його необхідно створити для Discord. Вам необхідно:

  1. Увійти до Discord аккаунт на посилання
  2. У вкладі “Applications” натиснути кнопку “New Application” і назвати бота
  3. Отримати токен бота, увійшовши до вашого бота і знайшовши у списку “Settings” вкладку “Bot”
  4. Зберегти десь токен

Також, необхідно створити програму в Wargaming, щоб отримати доступ до API Wargaming. Тут також все просто:

  1. Заходимо в обліковий запис Wargaming за цим посиланням
  2. Заходимо в Мої програми та натискаємо на кнопку Додати новий додаток, надавши імя програми та вибравши його тип
  3. Зберігаємо ID програми

Тут вже є свобода вибору. Хтось використовує 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 &lt, Token = token, TokenType = TokenType.Bot, UseInternalLogHandler = true, LogLevel = LogLevel.Debug &gt,),

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

discord.MessageCreated += async e =&gt, &lt, string message = e.Message.Content, if (message.StartsWith()) &lt, await e.Message.RespondAsync(“Hello, ” + e.Author.Username), &gt,&gt,, 

Де e.Author.Username – отримання нікнейму користувача.

Таким чином, коли ви відправите будь-яке повідомлення, яке починається з &, бот буде вітати вас.

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

Це дозволить виконувати команди на фоні, не займаючи основного потоку.

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

Приклад роботи з WargamingAPI

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

Увага! Всі токени та 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-бота на Python. Частина 1

Вітаю хабрівчани та інші користувачі інтернету. Сьогодні я почну цикл статей, присвячених створенню Discord-бота за допомогою бібліотеки discord.py. Ми розглянемо створення як і примітивного бота, так і просунутого бота з модулями. У цій статті ми зробимо стандартну команду та ще одну невелику команду. Почнемо!

Створення бота та отримання токена

Для того, щоб додати бота на сервер, потрібно створити свою програму і у вкладці General Information скопіювати Client ID.

Тут замінюємо CLID раніше скопійований Client ID.

https://discordapp.com/oauth2/authorize?&client_id=CLID&scope=bot&permissions=8

У вкладці Bot створюємо робота і копіюємо токен.

Написання коду

Встановлюємо бібліотеку.

Створюємо файл config.py (так зручніше) і створюємо там словник.

Створюємо main-файл, назва може бути будь-якою.
Імпортуємо бібліотеки та наш файл конфіга:

import discord from discord.ext import commands from config import settings

Створюємо тіло бота, назва може бути будь-якою:

bot = commands.Bot(command_prefix = settings[prefix]) # Оскільки ми вказали префікс у settings, звертаємося до словника з ключем prefix.

Починаємо писати основний код.

@bot.command() # Не передаємо аргумент pass_context, оскільки він був потрібний у старих версіях. async def hello(ctx): # Створюємо функцію та передаємо аргумент ctx. author = ctx.message.author # Оголошуємо змінну author та записуємо туди інформацію про автора. await ctx.send(fHello, !) # Виводимо повідомлення зі згадкою автора, звертаючись до змінної author.

В кінці запускаємо бота за допомогою:

bot.run(settings[token]) # Звертаємось до словника settings з ключем token, для отримання токена
import discord from discord.ext import commands from config import settings bot = commands.Bot(command_prefix = settings[prefix]) @bot.command() # Не передаємо аргумент pass_context, оскільки він був потрібен у старих версіях. async def hello(ctx): # Створюємо функцію та передаємо аргумент ctx. author = ctx.message.author # Оголошуємо змінну author та записуємо туди інформацію про автора. await ctx.send(fHello, !) # Виводимо повідомлення зі згадкою автора, звертаючись до змінної author. bot.run(settings[token]) # Звертаємось до словника settings з ключем token, для отримання токена

Бонусний туторіал!

Зробимо висновок випадкових картинок з лисицями
Для цього імпортуємо ще кілька бібліотек:

import json import requests

Приступимо до написання команди.

@bot.command() async def fox(ctx): response = requests.get(https://some-random-api.ml/img/fox) # Get-запит json_data = json.loads(response.text ) # Витягуємо JSON embed = discord.Embed(color = 0xff9900, title = Random Fox) # Створення Embeda embed.set_image(url = json_data[link]) # Встановлюємо картинку Embeda await ctx.send( embed = embed) # Відправляємо Embed

Кінець

У цьому 1 частина закінчено. Незабаром буде опубліковано 2 частини.

admin

Recent Posts

Будівельні матеріали: Різноманіття, Якість та Доступність

Будівництво та ремонт – це важливі етапи в житті кожного власника житла. Вибір матеріалів і…

14 години ago

Зовнішні жорсткі диски: найкраще рішення для зберігання даних

У сучасному світі зберігання інформації стало важливою частиною нашого повсякденного життя. Як для особистих, так…

14 години ago

Проект коттеджа от NsdGroup: ваш идеальный дом

Компания NsdGroup предоставляет полный спектр услуг по проектированию и строительству коттеджей, обеспечивая индивидуальный подход к…

2 дні ago

Mobile Proxies, Pricing and GEOs, OpenVPN for Windows

Mobile proxies are an essential tool for businesses and individuals who require secure, reliable, and…

7 днів ago

Канілірована сітка: чому обрати в «Парк Плюс»?

Канілірована сітка — це універсальний матеріал, який чудово підходить для облаштування огорож, будівництва та навіть…

3 тижні ago

Покрівля для комерційних будівель: Чому варто обрати Tegola Canadese?

При будівництві або реконструкції комерційних будівель вибір покрівельного матеріалу є одним із найважливіших рішень. Правильно…

3 тижні ago