- 24.02.2024
- 15
- 1
- 28
- Награды
- 4
- 25
Репутация:
- Автор темы
- #1
Discord-боты позволяют автоматизировать модерацию, игры, музыку и многое другое. В этом гайде мы разберём, как создать своего первого бота на Python с использованием библиотеки discord.py.
bash
Copy
pip install discord.py python-dotenv
(Рекомендуется использовать виртуальное окружение venv.)
Copy
my_bot/
├── .env # Токен бота
├── main.py # Основной код
└── requirements.txt
ini
Copy
DISCORD_TOKEN=ваш_токен_бота
python
Copy
import os
import discord
from discord.ext import commands
from dotenv import load_dotenv
# Загрузка токена из .env
load_dotenv()
TOKEN = os.getenv('DISCORD_TOKEN')
# Настройка префикса команд (например, "!")
bot = commands.Bot(command_prefix="!", intents=discord.Intents.all())
# Событие при запуске бота
@bot.event
async def on_ready():
print(f"Бот {bot.user.name} запущен!")
# Команда !hello
@bot.command()
async def hello(ctx):
await ctx.send(f"Привет, {ctx.author.mention}!")
# Обработка сообщений
@bot.event
async def on_message(message):
if message.author == bot.user: # Игнорируем сообщения бота
return
if "привет" in message.content.lower():
await message.channel.send("И тебе привет!")
await bot.process_commands(message) # Важно для работы команд
# Запуск бота
if __name__ == "__main__":
bot.run(TOKEN)
bash
Copy
python main.py
Теперь бот должен быть активен на сервере!
python
Copy
@bot.command()
async def ping(ctx):
await ctx.send("Pong!
")
(Теперь !ping выведет "Pong!")
python
Copy
@bot.command()
async def say(ctx, *, text):
await ctx.send(f"
{text}")
(Пример: !say Привет, мир!)
python
Copy
@bot.command()
@commands.has_permissions(manage_messages=True)
async def clear(ctx, amount: int = 5):
await ctx.channel.purge(limit=amount + 1)
await ctx.send(f"Удалено {amount} сообщений!", delete_after=3)
(Требует права Manage Messages.)
python
Copy
@bot.command()
@commands.has_permissions(manage_roles=True)
async def addrole(ctx, member: discord.Member, role: discord.Role):
await member.add_roles(role)
await ctx.send(f"Роль {role.name} выдана {member.mention}!")
python
Copy
@bot.command()
async def embed(ctx):
embed = discord.Embed(
title="Заголовок",
description="Описание",
color=0x00ff00 # Зелёный
)
embed.add_field(name="Поле 1", value="Значение 1")
await ctx.send(embed=embed)
python
Copy
@bot.command()
async def play(ctx, url):
voice_channel = ctx.author.voice.channel
voice_client = await voice_channel.connect()
voice_client.play(discord.FFmpegPCMAudio(url))
(Требуется установка FFmpeg.)
Теперь у вас есть работающий Discord-бот! Дальше можно улучшать его:
Подключить базу данных (SQLite, PostgreSQL).
Добавить веб-панель управления (Flask/Django).
Создать сложные игры или экономику сервера.
Полезные ссылки:


Содержание
- Создание приложения Discord и бота
- Установка необходимых инструментов
- Написание кода бота (Python)
- Добавление команд и событий
- Развертывание бота на сервере (бесплатные варианты)
- Дополнительные функции (роли, эмбеды, музыка)
- Публикация бота и мониторинг
1. Создание приложения Discord и бота
Шаг 1: Регистрация приложения
- Перейдите в .
- Нажмите "New Application" → введите имя (например, MyBot).
Шаг 2: Создание бота
- В меню слева выберите "Bot".
- Нажмите "Add Bot" → подтвердите действие.
- Скопируйте токен бота (не передавайте его никому!).
Шаг 3: Добавление бота на сервер
- Перейдите в "OAuth2" → "URL Generator".
- Выберите "bot" в Scope и нужные права (например, Send Messages, Read Messages).
- Скопируйте сгенерированную ссылку и перейдите по ней → выберите сервер.
2. Установка необходимых инструментов
Требования
- Python 3.8+
- Библиотека discord.py
Установка
bashCopy
pip install discord.py python-dotenv
(Рекомендуется использовать виртуальное окружение venv.)
3. Написание кода бота (Python)
Создадим бота, который отвечает на команду !hello и реагирует на сообщения.
Структура проекта
Copy
my_bot/
├── .env # Токен бота
├── main.py # Основной код
└── requirements.txt
Файл .env (храним токен)
iniCopy
DISCORD_TOKEN=ваш_токен_бота
Код бота (main.py)
pythonCopy
import os
import discord
from discord.ext import commands
from dotenv import load_dotenv
# Загрузка токена из .env
load_dotenv()
TOKEN = os.getenv('DISCORD_TOKEN')
# Настройка префикса команд (например, "!")
bot = commands.Bot(command_prefix="!", intents=discord.Intents.all())
# Событие при запуске бота
@bot.event
async def on_ready():
print(f"Бот {bot.user.name} запущен!")
# Команда !hello
@bot.command()
async def hello(ctx):
await ctx.send(f"Привет, {ctx.author.mention}!")
# Обработка сообщений
@bot.event
async def on_message(message):
if message.author == bot.user: # Игнорируем сообщения бота
return
if "привет" in message.content.lower():
await message.channel.send("И тебе привет!")
await bot.process_commands(message) # Важно для работы команд
# Запуск бота
if __name__ == "__main__":
bot.run(TOKEN)
Как это работает?
- on_ready() — срабатывает при запуске бота.
- @bot.command() — регистрирует команду (например, !hello).
- on_message() — обрабатывает все сообщения.
Запуск бота
bashCopy
python main.py
Теперь бот должен быть активен на сервере!
4. Добавление команд и событий
Пинг-понг команда
pythonCopy
@bot.command()
async def ping(ctx):
await ctx.send("Pong!

(Теперь !ping выведет "Pong!")
Команда с аргументами
pythonCopy
@bot.command()
async def say(ctx, *, text):
await ctx.send(f"

(Пример: !say Привет, мир!)
Модерация: очистка сообщений
pythonCopy
@bot.command()
@commands.has_permissions(manage_messages=True)
async def clear(ctx, amount: int = 5):
await ctx.channel.purge(limit=amount + 1)
await ctx.send(f"Удалено {amount} сообщений!", delete_after=3)
(Требует права Manage Messages.)
5. Развертывание бота на сервере
Вариант 1: Replit (бесплатно)
- Загрузите код на .
- Добавьте токен в Secrets.
- Используйте UptimeRobot для автоперезапуска.
Вариант 2: VPS (Oracle Cloud Free Tier)
- Создайте бесплатный сервер в .
- Установите Python и зависимости:
bash
Copy
sudo apt update && sudo apt install python3-pip
pip3 install discord.py python-dotenv - Запустите бота в screen/tmux:
bash
Copy
screen -S bot
python3 main.py
6. Дополнительные функции
Выдача ролей
pythonCopy
@bot.command()
@commands.has_permissions(manage_roles=True)
async def addrole(ctx, member: discord.Member, role: discord.Role):
await member.add_roles(role)
await ctx.send(f"Роль {role.name} выдана {member.mention}!")
Эмбеды (красивые сообщения)
pythonCopy
@bot.command()
async def embed(ctx):
embed = discord.Embed(
title="Заголовок",
description="Описание",
color=0x00ff00 # Зелёный
)
embed.add_field(name="Поле 1", value="Значение 1")
await ctx.send(embed=embed)
Музыкальный бот (на основе FFmpeg)
pythonCopy
@bot.command()
async def play(ctx, url):
voice_channel = ctx.author.voice.channel
voice_client = await voice_channel.connect()
voice_client.play(discord.FFmpegPCMAudio(url))
(Требуется установка FFmpeg.)
7. Публикация бота и мониторинг
- Добавьте описание в Developer Portal.
- Настройте логирование ошибок:
python
Copy
@bot.event
async def on_command_error(ctx, error):
await ctx.send(f"Ошибка: {error}") - Используйте cogs для организации кода (если бот растёт).
Заключение
Теперь у вас есть работающий Discord-бот! Дальше можно улучшать его:


Полезные ссылки:


Последние темы в этом разделе:
- 🚀4 приложения, которые помогут написать научную статью или сделать хорошую аналитику
- Как написать нейросеть с нуля
- Как легально открыть оружейный бизнес в России
- Как заработать на перепродаже техники с Авито
- Как заработать на перепродаже техники из Китая
- Создание простого Telegram-бота с нуля
- Как создать майнинг ферму из б/у комплектующих
- 🎮 Как создать свою игру-платформер (с нуля до релиза)
- Как быстро раскрутить свой ютуб канал
- Полный гайд: Как правильно инвестировать в 2024 году