Подпишитесь на интересующие вас теги, чтобы следить за новыми постами и быть в курсе событий.
Создаём Discord-бота на Python
Сегодня мы напишем Discord-бота с помощью Python и discord.py. А также посмотрим на примеры ботов.
79828
Всем привет, сегодня мы напишем Discord-бота на Python и discord.py + бонусом посмотрим на примеры ботов. Приступим ?
Перед работой
Перед тем, как начать, вам нужны:
- Python 3;
- discord.py;
- Discord-аккаунт и свой сервер.
Для установки discord.py воспользуйтесь пакетным менеджером:
Создаём нашего бота
Перейдите на Developer Portal и нажмите на New application.
Вы создали своё приложение, на странице приложение перейдите в Bot >> Add Bot и создайте своего Discord-бота.
Сохраните токен бота! Дальше он нам понадобится!
Если всё прошло успешно, поздравляю, половина дела сделана ?
Добавление бота на сервер
Теперь можно добавить бота на сервер.
Перейдите в OAuth2 >> URL Generator, в Scopes выбираем Bot и ниже — права бота, копируем сгенерированный URL. Вставляем в браузер, и добавляем на наш сервер.
Эхо-бот
Напишем традиционного эхо-бота, и разберём каждую строчку кода.
Код:
Пример работы:
Разбор:
Нужные нам импорты.
Вспомогательный словарь config в котором храним токен и префикс команд (далее расскажу зачем нужен префикс команд).
Создаём нашего бота, в аргументе передаём префикс.
Декоратор, предназначенный для обработки событий, подробнее здесь.
Создаём асинхронную функцию, с параметром ctx, представляет из себя сообщение.
Проверка, не является ли автор сообщения нашим Discord-ботом. Дело в том, что если бот отправит сообщение, это будет новым событием, и тогда получается цикл.
Отвечаем на сообщение (ctx.reply), в аргументы передаём сообщение (ctx.content).
Запускаем нашего бота, в аргументы передаём токен бота.
Надеюсь вы разобрались с кодом, и мы можем переходить далее.
Обработка команд
Перед тем, как обрабатывать команды, нам пригодится наш префикс.
Рассмотрим код:
Результат работы:
Разбор:
Декоратор обработки команд
Асинхронная функция rand
Отвечаем на сообщение, в аргументы передаём случайное число от 0 до 100
Бонус
Проверка роли:
Выгнать пользователя
79828
Что думаете?
61 комментарий
Сначала интересные
Что сделать чтобы бот отвечал ещё и на серверах а не только в ЛС
всорк некринж, Добавь на сервак дискорда
всорк некринж, bot = commands.Bot(command_prefix='!', intents=discord.Intents.all())
Был бы очень рад если бы был человек который бы смог помочь сделать адекватного и хорошего бота для дискорда! как на Tenderly...
У меня выбивает ошибку, пишет: что не хватает intents
Matveka 45, В функции bot = commands.Bot(command_prefix=config['prefix']) добавь параметр intents в виде переменной, к примеру:
myintents = discord.Intents.Default()
bot = commands.Bot(command_prefix=config['prefix'],intents=myintents)
myintents = discord.Intents.default() Показать все комментарии