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

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

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

  1. Перейдите на страницу https://discord.com/developers/applications
  2. Нажмите на New Application.
New-Application..webp


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..webp

Примечание: Вы можете изменить название приложения, описание, теги, также вы можете получить айди бота и его Public Key. Ниже вы можете увидеть ещё 4 галочки, но там вы и сами все поймете.
Примечание.webp


Перейдите во вкладку Bot.
Перейдите-во-вкладку-Bot..webp


Нажмите Add Bot и подтвердите это действие.

Add-Bot.webp

! Если у вас включена двухфакторная аутентификация, вы должны ввести 6-значный код. Поздравляю! Ваше приложение создано абсолютно успешно.

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

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

Для удобства буду использовать библиотеку 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")


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