📁 Структура проекта
bot/
├── config/ # Конфигурация
│ ├── init.py
│ └── config.py # Менеджер конфигурации (JSON)
├── constants/ # Константы
│ ├── init.py
│ └── help_categories.py # Категории команд для !help
├── core/ # Ядро бота
│ ├── init.py
│ └── bot.py # Класс Bot с ролевым доступом
├── cogs/ # Команды бота
│ ├── init.py
│ ├── general.py # ping, help, serverinfo, userinfo, avatar, myroles, setlink
│ ├── moderation.py # ban, kick, mute, warn, purge, lock, unlock, warnings
│ ├── roles.py # role, roles, addrole, removerole, autorole
│ ├── tickets.py # Система тикетов (создание, закрытие, модерация)
│ ├── minecraft.py # Minecraft команды с RCON
│ ├── vk_news.py # Интеграция с VK (авто-публикация)
│ └── menu.py # Интерактивное меню с кнопками
├── extensions/ # Фоновые расширения
│ ├── init.py
│ └── message_verification.py # Анти-спам, анти-флуд, анти-капс, фильтры
├── main.py # Точка входа
├── bot_config.json # Конфигурация бота
├── data.json # Данные модерации (автоматически)
├── tickets_data.json # Данные тикетов (автоматически)
└── requirements.txt # Зависимости
🎮 Основные команды
Общие команды
| Команда | Описание |
|---|---|
| !ping | Проверка задержки бота |
| !help [команда] | Список команд / помощь по команде |
| !menu | Интерактивное меню сервера |
| !serverinfo | Информация о сервере |
| !userinfo @User | Информация о пользователе |
| !avatar @User | Аватар пользователя |
| !myroles | Ваши роли и доступные команды |
Модерация (🛡️)
| Команда | Описание |
|---|---|
| !ban @User [причина] | Забанить пользователя |
| !unban USER_ID | Разбанить по ID |
| !kick @User [причина] | Кикнуть пользователя |
| !mute @User 1h [причина] | Замутить на время |
| !unmute @User | Снять мут |
| !warn @User [причина] | Выдать предупреждение |
| !warnings @User | Список предупреждений |
| !purge 10 | Очистить N сообщений |
| !lock / !unlock | Заблокировать/разблокировать канал |
Minecraft (🎮)
| Команда | Описание |
|---|---|
| !mcstatus [сервер] | Статус сервера |
| !mconline [сервер] | Количество игроков |
| !mcplayers [сервер] | Список игроков |
| !mcadd Name host port | Добавить сервер |
| !mcremove host port | Удалить сервер |
| !mcban Сервер Игрок | Забанить игрока (RCON) |
| !mckick Сервер Игрок | Кикнуть игрока (RCON) |
| !mcexec Сервер команда | Выполнить команду (RCON) |
Тикеты (🎫)
| Команда | Описание |
|---|---|
| !ticket | Создать тикет через меню |
| !ticketstatus | Статус тикетов |
| !ticketenable | Включить систему тикетов |
| !ticketdisable | Выключить систему тикетов |
VK Новости (📰)
| Команда | Описание |
|---|---|
| !vksetup #канал | Настроить канал для VK |
| !vkstatus | Статус интеграции |
| !vkfetch | Ручная загрузка новостей |
| !vkpost Текст | Опубликовать пост |
Настройки (🔧)
| Команда | Описание |
|---|---|
| !setlink тип URL | Установить ссылку в меню (админ) |
| !filter слово | Добавить слово в фильтр |
| !filterremove слово | Удалить слово из фильтра |
| !filterlist | Список фильтруемых слов |
🔐 Ролевой доступ
Доступ к категориям меню настраивается в bot_config.json:"menu_roles": {
"moderation": ["🧑🎓 × Модератор", "👀 × Owner"],
"roles": ["👀 × Owner"],
"minecraft": ["🧑🎓 × Модератор", "👀 × Owner", "VIP"],
...
}
🎯 Интерактивное меню !menu
Бот имеет интерактивное меню с кнопками:- 🛡️ Модерация — команды для управления сервером
- 👤 Роли — управление ролями участников
- 🎮 Minecraft — мониторинг и управление сервером
- 📰 VK Новости — интеграция с ВКонтакте
- 🔍 Фильтр — автоматическая фильтрация сообщений
- ℹ️ Общая — полезные команды для всех
- 📜 Правила — правила сервера
- 🎫 Поддержка — создание тикетов
- 🎮 Сервер — проверка онлайна Minecraft серверов
⚙️ Конфигурация
Основные параметры
| Параметр | Описание |
|---|---|
| bot.token | Токен Discord бота |
| bot.prefix | Префикс команд |
| vk.token | Токен VK API |
| vk.group_id | ID группы VK |
| minecraft_servers | Список Minecraft серверов |
| allowed_ip_copy | IP адресов для копирования |
Настройка тикетов
"tickets": {
"enabled": true,
"moderator_role": "🧑🎓 × Модератор",
"channels": {
"channel_id": {
"name": "🎫-тикет-модераторы",
"roles": ["🧑🎓 × Модератор"]
}
}
}
Настройка модерации
"moderation": {
"anti_spam": true,
"anti_flood": true,
"flood_threshold": 5,
"flood_window": 3.0,
"anti_caps": true,
"caps_threshold": 80,
"anti_links": false,
"word_filter": ["badword1", "badword2"]
}
- ✅ Для установки есть команды , которые устанавливают каналы для тикетов.
🚀 Особенности
- ✅ Чистая модульная архитектура
- ✅ Интерактивное меню с кнопками (defer + edit_original_response)
- ✅ Система тикетов с авто-созданием каналов
- ✅ Minecraft мониторинг с RCON и mcstatus
- ✅ VK интеграция (авто-публикация постов, получение названия группы)
- ✅ Анти-спам, анти-флуд, анти-капс
- ✅ Фильтрация слов
- ✅ Ролевой доступ к категориям меню
- ✅ Централизованная конфигурация (Config с методом .save())
- ✅ Весь интерфейс на русском языке
- ✅ Оптимизированный код без дубликатов
- ✅ Исправленная работа с ephemeral сообщениями
- ✅ Валидация URL (только http, https, discord)
- ✅ Ограничение копирования IP через allowed_ip_copy
📝 Добавление новой команды
- Откройте соответствующий файл в cogs/
- Добавьте команду:
@commands.command(name='mycommand', help='Описание команды')
@commands.has_permissions(administrator=True)
async def my_command(self, ctx, arg1: str):
await ctx.reply(f'Вы ввели: {arg1}')- Перезапустите бота — новая команда автоматически загрузится.