- 384
- 169
Доброго времени форумчане БластХак!
Сегодня я расскажу и покажу, как создать своего первого бота в Discord!
Данный гайд посвящается всем, кто знает базу Python (кто не знает - иди учи питон)
Первый этап - Создание приложения. Сегодня я расскажу и покажу, как создать своего первого бота в Discord!
Данный гайд посвящается всем, кто знает базу Python (кто не знает - иди учи питон)
Для начала вы должны создать приложение бота, для этого выполните все действия по порядку:
- Перейдите на страницу https://discord.com/developers/applications
- Нажмите на New Application.
- Введите название приложения, прочитайте 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.
! Если у вас включена двухфакторная аутентификация, вы должны ввести 6-значный код. Поздравляю! Ваше приложение создано абсолютно успешно.
Второй этап - Запуск нашего бота.
Для того чтобы получить токен бота, нажмите на кнопку View Token.
Далее, напишем первый код!
Для удобства буду использовать библиотеку 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")
Спасибо за внимание, возможно в будущем ИМЕННО ТЫ станешь успешным разработчиком (нет)
Последнее редактирование: