Хотите узнать, как сделать бота в Дискорде на Python буквально за полчаса? В этом гайде — рабочий пример кода на discord.py, а не только описание кнопок в интерфейсе. Для создания бота Дискорд Python не придётся устанавливать платные программы: понадобится Python, бесплатная библиотека discord.py и аккаунт Discord. Если задача шире учебного бота — например, интеграция с CRM, базой данных или внешним API — команда YuSMP Group занимается backend-разработкой и интеграциями под ключ.
- Бот создаётся бесплатно: аккаунт на Discord Developer Portal, токен приложения и библиотека discord.py.
- Минимальный рабочий бот — 15–20 строк кода на Client с обработчиком on_message.
- Для набора команд с префиксом (!ping, !roll) удобнее commands.Bot из discord.ext.commands.
- Токен хранят только в .env и никогда не публикуют в коде или репозитории.
- Чтобы бот работал круглосуточно, его размещают на VPS или облачной платформе, а не держат запущенным на личном ноутбуке.
Что нужно для создания Discord-бота на Python?
Перед тем как писать код, подготовьте четыре вещи:
- Python 3.9 или новее — актуальные версии discord.py не поддерживают более старые релизы.
- Библиотеку discord.py — устанавливается командой
pip install discord.py. - Аккаунт Discord и сервер, на который вы можете добавлять ботов (нужны права администратора).
- Редактор кода — подойдёт VS Code, PyCharm или онлайн-среда вроде Repl.it, если не хотите ничего ставить локально.
Как создать учётную запись бота в Discord?
Зайдите на портал разработчиков Discord и нажмите «New Application» в правом верхнем углу. Задайте имя — это будет отображаемое имя вашего Discord бота на Python.
Внутри приложения откройте вкладку «Bot» и нажмите «Add Bot». После этого станет доступен уникальный токен — нажмите «Reset Token» или «Copy», чтобы его получить.

Токен — это пароль от вашего бота. Любой, у кого он есть, может управлять ботом от вашего имени. Не публикуйте токен в коде, скриншотах или репозитории — если он всё же попал в открытый доступ, сразу сгенерируйте новый через «Reset Token».
Как пригласить бота на сервер?
Чтобы бот появился на сервере, нужна ссылка-приглашение с нужным набором прав:
- Откройте раздел «OAuth2» → «URL Generator» в левой панели приложения.
- В списке «Scopes» отметьте bot.
- В блоке «Bot Permissions» ниже выберите конкретные разрешения — например, «Send Messages» и «Read Message History». Права администратора боту без явной необходимости давать не стоит: это лишний риск, если токен утечёт.
- Скопируйте сгенерированную ссылку внизу страницы (Generated URL).
- Откройте эту ссылку в браузере, выберите сервер из списка и подтвердите добавление. Добавлять ботов может только пользователь с правами администрирования сервера.
Как написать код Discord-бота на Python?
Вся логика бота строится на библиотеке discord.py — обёртке над Discord API, которая берёт на себя работу с вебсокетами и событиями.
Установка discord.py
В терминале выполните:
pip install discord.py python-dotenv
Пакет python-dotenv понадобится, чтобы безопасно читать токен из файла .env, а не хранить его прямо в коде.
Хранение токена в .env
Создайте в папке проекта файл .env и запишите в него токен:
DISCORD_TOKEN=ваш_токен_бота
Добавьте .env в .gitignore, чтобы случайно не закоммитить токен в репозиторий.
Базовый код бота
Вот минимальный рабочий бот, который отвечает «Hello!» на сообщение «$hello» и игнорирует собственные сообщения:
import os
import discord
from dotenv import load_dotenv
load_dotenv()
TOKEN = os.getenv("DISCORD_TOKEN")
intents = discord.Intents.default()
intents.message_content = True
client = discord.Client(intents=intents)
@client.event
async def on_ready():
print(f"Бот {client.user} запущен и готов к работе")
@client.event
async def on_message(message):
if message.author == client.user:
return
if message.content.startswith("$hello"):
await message.channel.send("Hello!")
client.run(TOKEN)

Разберём код построчно:
- Импортируем библиотеку
discord.pyиos— последний нужен, чтобы прочитать переменные окружения. load_dotenv()подгружает содержимое файла.env, аos.getenv("DISCORD_TOKEN")достаёт из него токен.discord.Intents— с 2022 года Discord API требует явно указывать, какие данные боту разрешено получать.message_contentнужен, чтобы бот вообще видел текст сообщений — без этогоon_messageне сработает.- Создаём объект
Client, который отвечает за соединение с Discord. - Декоратор
@client.eventрегистрирует обработчики событий:on_readyсрабатывает один раз при запуске,on_message— при каждом новом сообщении на сервере. - Проверка
if message.author == client.userнужна, чтобы бот не реагировал на собственные сообщения и не зацикливался. - Если текст сообщения начинается с «$hello», бот отправляет в тот же канал «Hello!».
- Последняя строка запускает бота с токеном из
.env.
Запустите файл — в терминале появится строка «Бот … запущен и готов к работе», а в списке участников сервера бот станет «онлайн». Напишите в любом канале «$hello» и проверьте ответ.
Как добавить команды с префиксом?
Если бот должен обрабатывать несколько разных команд, а не одно ключевое слово, удобнее использовать commands.Bot из discord.ext.commands — он даёт готовую систему команд с аргументами:
import os
import random
import discord
from discord.ext import commands
from dotenv import load_dotenv
load_dotenv()
TOKEN = os.getenv("DISCORD_TOKEN")
intents = discord.Intents.default()
intents.message_content = True
bot = commands.Bot(command_prefix="!", intents=intents)
@bot.command()
async def ping(ctx):
await ctx.send("Pong! Бот на связи.")
@bot.command()
async def roll(ctx, faces: int = 6):
await ctx.send(f"Выпало: {random.randint(1, faces)}")
bot.run(TOKEN)
Команда !ping отвечает «Pong!», а !roll 20 бросает виртуальный кубик с заданным числом граней (по умолчанию 6). Добавлять новые команды — это просто новые функции с декоратором @bot.command(), что гораздо проще, чем разбирать текст сообщения вручную через if.
Как улучшить бота: 5 идей для доработки
- Модерация. Команды
kick/ban, автоматическое удаление спама и фильтр нежелательных слов через событияon_message. - Слэш-команды. Современный формат команд Discord (
app_commands) — они подсказываются прямо в интерфейсе при вводе «/». - Интеграция с внешним API. Прогноз погоды, курс валют или ответы от нейросети — бот делает HTTP-запрос и пересылает результат в чат.
- Хранение данных. Очки участников, настройки сервера или список подписок — удобно держать в SQLite или PostgreSQL, а не только в памяти процесса.
- Постоянная работа 24/7. Для этого бота размещают на VPS, в контейнере с автоперезапуском или на платформе вроде Railway — запуск с личного компьютера прекращается вместе с выключением компьютера.
Частые вопросы
Нужно ли платить за создание Discord-бота на Python?
Нет, сама разработка бесплатна: Discord API, библиотека discord.py и большинство сред разработки (VS Code, PyCharm Community, Repl.it) не требуют оплаты. Платным может быть только постоянный хостинг для работы бота 24/7.
Какая версия Python нужна для discord.py?
Актуальные версии discord.py требуют Python 3.9 и выше. Для новых проектов рекомендуем ставить последнюю стабильную версию Python 3.11–3.12.
Почему бот не отвечает на сообщения?
Чаще всего причина — не включён привилегированный интент Message Content в настройках приложения на Discord Developer Portal и не выставлен intents.message_content = True в коде бота.
В чём разница между Client и commands.Bot?
Client подходит для простых реакций на отдельные события. Commands.Bot из discord.ext.commands даёт готовую систему команд с префиксом, аргументами и обработкой ошибок — удобнее для бота с несколькими командами.
Как запустить бота, чтобы он работал круглосуточно?
Для постоянной работы бота размещают на VPS или облачной платформе с поддержкой длительных Python-процессов, а не запускают с личного компьютера, который выключается.
Безопасно ли хранить токен бота в коде?
Нет, токен нельзя публиковать в коде или репозитории. Его хранят в переменных окружения через файл .env и добавляют .env в .gitignore, чтобы случайно не слить доступ к боту.
Теперь у вас есть рабочий бот с базовым обработчиком сообщений и набором команд с префиксом — дальше его можно развивать в любую сторону: от модерации до интеграции с внешними сервисами.
Веб-услуги и разработка в YuSMP Group активно использует этот простой и понятный язык программирования для различных задач. Вы можете узнать его азы вместе с нами. Больше статей читайте в блоге студии web-разработки YuSMP Group, а для вдохновения — посмотрите проекты, которые мы создали.
Обсудим ваш проект?
Соберём команду под вашу задачу и оценим проект за 2 дня — бесплатно.




