⚠️ ВНИМАНИЕ: Этот репозиторий устарел
Поддержка шаблона дляaiogram 2.x
более не ведётся.
Мы рекомендуем перейти на новую актуальную версию для Aiogram 3.x:
🔗 Новый репозиторий — Sample-Template-Aiogram-3.x
Современный модульный шаблон для создания Telegram ботов на aiogram 2.x
- Модульная архитектура с классовыми структурами
- Готовая система администраторов с правами доступа
- Полноценная база данных с моделями пользователей, настроек и статистики
- Система модерации с банами, мутами и предупреждениями
- Inline клавиатуры с callback обработчиками
- Планировщик задач для автоматических операций
- Логирование с настраиваемыми уровнями
- Безопасность с защитой конфиденциальных данных
- Готовые команды для быстрого старта
- Python 3.8+
- Aiogram 2.25.2 - современный асинхронный фреймворк
- SQLite + Peewee ORM - легкая база данных с ORM
- APScheduler - планировщик задач
- python-dotenv - управление переменными окружения
- Redis - опциональное хранилище состояний
git clone https://github.com/your-username/aiogram-2x-template.git
cd aiogram-2x-template
pip install -r requirements.txt
cp env.example .env
# Отредактируйте .env файл, добавив свои данные
python main.py
ВАЖНО: Никогда не коммитьте файл .env
в репозиторий!
- Скопируйте
env.example
в.env
- Заполните в
.env
ваши реальные данные:BOT_TOKEN
- токен от @BotFatherOWNER_IDS
- ID администраторов (через запятую)CHAT_ID
- ID чата/группыSUPPORT_USERNAME
- username поддержки
- Токен бота: @BotFather →
/newbot
- ID пользователя: @userinfobot
- ID группы: @getidsbot
├── data/
│ ├── config.py # Конфигурация с классовыми структурами
│ └── image/ # Изображения и медиафайлы
├── handlers/
│ ├── users/ # Обработчики для пользователей
│ │ ├── message/ # Обработчики сообщений
│ │ │ ├── start.py # Команды /start, /menu, /about и др.
│ │ │ ├── admin_commands.py # Админские команды
│ │ │ └── user_commands.py # Пользовательские команды
│ │ └── callback/ # Обработчики callback кнопок
│ ├── groups/ # Обработчики для групп
│ ├── supergroups/ # Обработчики для супергрупп
│ └── errors/ # Обработчики ошибок
├── keyboards/
│ ├── inline/ # Inline клавиатуры
│ │ ├── keyboards.py # Классы клавиатур
│ │ └── __init__.py
│ └── reply/ # Reply клавиатуры
├── models/
│ ├── user.py # Модели пользователей, настроек, статистики
│ └── sqlite3_creator.py # Создание базы данных
├── states/ # FSM состояния
├── utils/ # Утилиты и вспомогательные функции
├── filters/ # Фильтры для обработчиков
│ ├── admin_filter.py # Фильтры для администраторов
│ └── user_filter.py # Фильтры для пользователей
├── loader.py # Инициализация бота и диспетчера
├── main.py # Точка входа с менеджером бота
├── requirements.txt # Зависимости
├── .env.example # Пример конфигурации
├── .gitignore # Исключения Git
└── README.md # Документация
/start
- Запустить бота и показать главное меню/menu
- Показать главное меню/help
- Показать справку/about
- Информация о боте/profile
- Показать ваш профиль/settings
- Открыть настройки/commands
- Показать все команды/feedback
- Отправить отзыв/support
- Связаться с поддержкой/version
- Версия бота/status
- Статус бота/ping
- Проверить соединение/uptime
- Время работы бота
/ban_user
- Забанить пользователя/unban_user
- Разбанить пользователя/warn_user
- Предупредить пользователя/stats
- Статистика бота/users
- Список пользователей/broadcast
- Отправить рассылку/backup
- Создать резервную копию/restore
- Восстановить из резервной копии/logs
- Показать логи/restart
- Перезапустить бота
- Создайте обработчик в
handlers/users/message/
- Используйте классовую структуру как в примерах
- Зарегистрируйте обработчик в конце файла
- Добавьте метод в соответствующий класс в
keyboards/inline/keyboards.py
- Создайте обработчик в
handlers/users/callback/
- Используйте в нужных обработчиках
- Создайте модель в
models/
- Используйте Peewee ORM для запросов
- Не забудьте создать миграции
python main.py
- Установите Redis
- Настройте переменные Redis в
.env
- Запустите с помощью systemd или supervisor
docker build -t aiogram-bot .
docker run -d --name bot aiogram-bot
from aiogram import types
from loader import dp
@dp.message_handler(commands=['hello'])
async def hello_handler(message: types.Message):
await message.answer("Привет! 👋")
from keyboards.inline.keyboards import KeyboardBuilder
def get_example_keyboard():
buttons = [
[
{'text': 'Кнопка 1', 'callback_data': 'btn_1'},
{'text': 'Кнопка 2', 'callback_data': 'btn_2'}
]
]
return KeyboardBuilder.create_keyboard(buttons)
from aiogram.dispatcher import FSMContext
from aiogram.dispatcher.filters.state import State, StatesGroup
class ExampleStates(StatesGroup):
waiting_for_input = State()
@dp.message_handler(state=ExampleStates.waiting_for_input)
async def process_input(message: types.Message, state: FSMContext):
await state.finish()
await message.answer("Спасибо за ввод!")
- Fork репозитория
- Создайте ветку для новой функции (
git checkout -b feature/amazing-feature
) - Commit изменения (
git commit -m 'Add amazing feature'
) - Push в ветку (
git push origin feature/amazing-feature
) - Откройте Pull Request
Этот проект распространяется под лицензией MIT. См. файл LICENSE
для получения дополнительной информации.
Если у вас есть вопросы или проблемы:
- 📧 Создайте Issue в GitHub
- 💬 Обратитесь к документации aiogram
- 🔗 Присоединитесь к сообществу aiogram
Создано с ❤️ для сообщества aiogram