Гайд Как создавать Discord бота

riverya4life

Известный
Автор темы
384
169
Доброго времени форумчане БластХак!
Сегодня я расскажу и покажу, как создать своего первого бота в Discord!
Данный гайд посвящается всем, кто знает базу Python (кто не знает - иди учи питон)


Первый этап - Создание приложения.
Для начала вы должны создать приложение бота, для этого выполните все действия по порядку:
  1. Перейдите на страницу https://discord.com/developers/applications
  2. Нажмите на New Application. new aplication.png
  3. Введите название приложения, прочитайте Developer Terms of Service (https://discord.com/developers/docs/policies-and-agreements/developer-terms-of-service) и Developer Policy (https://discord.com/developers/docs/policies-and-agreements/developer-policy) и также, я советую вам ознакомиться с https://discord.com/tos, после всего этого нажмите на кнопку Create.
    create an application.png
Примечание: Вы можете изменить название приложения, описание, теги, также вы можете получить айди бота и его Public Key. Ниже вы можете увидеть ещё 4 галочки, но там вы и сами все поймете.

general informatio.png
  1. Перейдите во вкладку Bot.
    selected app.png
  2. Нажмите Add Bot и подтвердите это действие.
    add bot.png
! Если у вас включена двухфакторная аутентификация, вы должны ввести 6-значный код. Поздравляю! Ваше приложение создано абсолютно успешно.

Второй этап - Запуск нашего бота.
Для того чтобы получить токен бота, нажмите на кнопку View Token.
bot token.png

Далее, напишем первый код!

Для удобства буду использовать библиотеку disnake (discord.py fork), но перед написанием кода мы должны создать файл с расширением .py!
Если создали файл - поздравляю, можем приступать к написанию кода!
Python:
# Импорт библиотеки disnake.
import disnake
from disnake.ext import commands

bot = commands.Bot(command_prefix="!") # Создание экземляра класса commands.Bot, в документации вы можете найти какие аргументы принимает этот класс.
# С помощью command_prefix задаём префикс нашему боту, к примеру здесь будет префикс !

# Когда бот запущен, то будет вызван ивент.
@bot.event
async def on_ready():
    print("Ваш бот готов!")

# Запуск дискорд бота, как найти токен написано в гайде.
bot.run("YOUR_DISCORD_BOT_TOKEN")

Дальше запускаем нашего бота. Можно запускать как через cmd, так и через созданный bat файл.
Готово!

Так-же приведу пример команды !ping, которая будет нам отвечать "Понг!"

Здесь мы используем уже декоратор @bot.command()
@bot.command()
принимает в себя аргументы, а именно - name (имя команды, можно сделать команду на русском языке), description (описание команды, больше подходит для команд косой черты) и usage (пример использования команды).

Python:
@bot.command(name = "ping", description = "Тест команда", usage = "ping") # в name задаём навзание команды
async def ping(ctx): # передаём аргумент ctx (контекст)
    await ctx.reply("Понг!") # отвечаем пользователю вызвавшему команду.

Теперь по команде !ping бот будет отвечать вам Понг!

UPD 30.04.
Сейчас покажу как создавать слеш команды (команды косой черты)!
Для этого нам нужно использовать декоратор @bot.slash_command()
Он принимает все те же аргументы, что и текстовые команды.
Пример команды !ping, но уже на слешах:
Python:
@bot.slash_command(name = "ping", description = "Тест команда", usage = "ping")
async def ping(inter): # теперь мы передаём в аргументе не ctx, а inter | interaction (интеракция)
    await inter.response.send_message("Понг!") # отправляем сообщение

Небольшое пояснение про Interaction (кратко inter)
Что вообще такое ваш Interaction и с чем его едят?

Interaction в переводе с английского означает взаимодействие.
Это, по сути, вебхуки под капотом (и для ответа на взаимодействие не требуется токен бота). Таким образом, у вас может быть приложение, предназначенное только для взаимодействия, к которому могут получить доступ пользователи, не имея пользователя-бота в гильдии.
Бот должен быть добавлен с разрешением applications.commands, чтобы создавать слэш команды на сервере. Это рекомендуется к добавлению этого разрешение к приглашениям вашего бота.

Итоговый код нашего бота:
Python:
# Импорт библиотеки disnake.
import disnake
from disnake.ext import commands

bot = commands.Bot(command_prefix="!") # Создание экземляра класса commands.Bot, в документации вы можете найти какие аргументы принимает этот класс.
# С помощью command_prefix задаём префикс нашему боту, к примеру здесь будет префикс !

# Когда бот запущен, то будет вызван ивент.
@bot.event
async def on_ready():
    print("Ваш бот готов!")

# Наша первая команда
@bot.command(name = "ping", description = "Тест команда", usage = "ping") # в name задаём навзание команды
async def ping(ctx): # передаём аргумент ctx (контекст)
    await ctx.reply("Понг!") # отвечаем пользователю вызвавшему команду.

# Наша слеш команда
@bot.slash_command(name = "ping", description = "Тест команда", usage = "ping")
async def ping(inter): # теперь мы передаём в аргументе не ctx, а inter | interaction (интеракция)
    await inter.response.send_message("Понг!") # отправляем сообщение

# Запуск дискорд бота, как найти токен написано в гайде.
bot.run("YOUR_DISCORD_BOT_TOKEN")

Спасибо за внимание, возможно в будущем ИМЕННО ТЫ станешь успешным разработчиком (нет)
 
Последнее редактирование:

TastyBread123

Известный
631
302
людям, которые знают базу python, гайды не нужны будут, а вот те кто не знают, как раз таки нужны
Вот ты знаешь же основы пайтон??? Так, сделай мне приложение на PyQT5 с привязкой по серийнику диска без гайдов, пжпжпж
 

sadasdasdasdasdasd

Известный
88
19
Вот ты знаешь же основы пайтон??? Так, сделай мне приложение на PyQT5 с привязкой по серийнику диска без гайдов, пжпжпж
какие основы, чувак, мы говорим про базу, а база, это умение читать и использовать документацию. не неси бреда, пожалуйста
 

TastyBread123

Известный
631
302
какие основы, чувак, мы говорим про базу, а база, это умение читать и использовать документацию. не неси бреда, пожалуйста
Умение читать документацию - навык, но никак не база)
База - это знание встроенных функций и конструкций, магических методов, ООП, PEP8 и другой информации о языке. Не неси бред кобылы, плз
 
Последнее редактирование:
  • Нравится
Реакции: riverya4life

sadasdasdasdasdasd

Известный
88
19
Умение читать документацию - навык, но никак не база)
База - это знание встроенных функций и конструкции, магических методов, ООП, PEP8 и другой информации о языке. Не неси бред кобылы, плз
ахахахахха, ладно чел))
 

Mamashin

Известный
1,095
588
Неплохой гайд. Ты молодец, продолжай в том же духе! ✌️