Universal constructor for creating Telegram bots | Универсальный конструктор для создания Telegram ботов
Create your bot in 5 minutes | Создай своего бота за 5 минут
- Modular architecture
- Simple configuration via config
- Ready-made command templates
- Inline and Reply keyboards
- Database support (JSON/SQLite)
- Plugin system
- FSM (Finite State Machine)
- Logging
- Middleware support
- Detailed documentation
# Clone repository
git clone https://github.com/yourusername/bot_constructor.git
cd bot_constructor
# Install dependencies
pip install -r requirements.txt# Copy .env example
copy .env.example .env
# Add your token to .env
BOT_TOKEN=your_bot_token_hereOpen config.py and customize:
# Bot name
BOT_NAME = "My Awesome Bot"
# Commands
COMMANDS = {
"start": "Start bot",
"help": "Help",
}python main.pyDone! Bot is running
bot_constructor/
├── main.py # Entry point
├── config.py # Bot settings
├── requirements.txt # Dependencies
├── .env.example # Environment variables example
│
├── handlers/ # Command handlers
│ ├── start.py # /start
│ ├── help_handler.py # /help
│ ├── about.py # /about
│ └── custom.py # Your commands
│
├── keyboards/ # Keyboards
│ ├── inline.py # Inline buttons
│ └── reply.py # Reply buttons
│
├── database/ # Database
│ └── db.py # DB operations
│
├── utils/ # Utilities
│ └── helpers.py # Helper functions
│
└── plugins/ # Plugins
└── __init__.py
Open handlers/custom.py:
@router.message(Command("mycommand"))
async def my_command(message: Message):
await message.answer("My command works!")from keyboards.inline import custom_keyboard
buttons = [
{"text": "Button 1", "callback_data": "btn1"},
{"text": "Button 2", "callback_data": "btn2"},
]
await message.answer("Choose:", reply_markup=custom_keyboard(buttons))from database.db import db
# Save user
db.save_user(user_id, username, first_name)
# Get user
user = db.get_user(user_id)
# Save data
db.set_user_data(user_id, "score", 100)# config.py
BOT_NAME = "Hello Bot"
COMMANDS = {"start": "Start", "help": "Help"}# handlers/custom.py
@router.message(Command("menu"))
async def show_menu(message: Message):
kb = InlineKeyboardBuilder()
kb.button(text="Option 1", callback_data="opt1")
kb.button(text="Option 2", callback_data="opt2")
kb.adjust(2)
await message.answer("Menu:", reply_markup=kb.as_markup())# Basic
BOT_NAME = "My Bot"
BOT_DESCRIPTION = "Description"
VERSION = "1.0.0"
# Database
DATABASE_TYPE = "json" # or "sqlite"
DATABASE_PATH = "data/database.json"
# Logging
LOG_LEVEL = "INFO"
LOG_TO_FILE = True
# Admins
ADMINS = [123456789]MIT License - use as you wish!
- Telegram: @YourUsername
- Issues: GitHub Issues
- Модульная архитектура
- Простая настройка через config
- Готовые шаблоны команд
- Inline и Reply клавиатуры
- База данных (JSON/SQLite)
- Система плагинов
- FSM (машина состояний)
- Логирование
- Middleware поддержка
- Подробная документация
# Клонируй репозиторий
git clone https://github.com/yourusername/bot_constructor.git
cd bot_constructor
# Установи зависимости
pip install -r requirements.txt# Скопируй пример .env
copy .env.example .env
# Добавь свой токен в .env
BOT_TOKEN=your_bot_token_hereОткрой config.py и настрой под себя:
# Название бота
BOT_NAME = "Мой Крутой Бот"
# Команды
COMMANDS = {
"start": "Начать работу",
"help": "Помощь",
}python main.pyГотово! Бот запущен
bot_constructor/
├── main.py # Точка входа
├── config.py # Настройки бота
├── requirements.txt # Зависимости
├── .env.example # Пример переменных окружения
│
├── handlers/ # Обработчики команд
│ ├── start.py # /start
│ ├── help_handler.py # /help
│ ├── about.py # /about
│ └── custom.py # Твои команды
│
├── keyboards/ # Клавиатуры
│ ├── inline.py # Inline кнопки
│ └── reply.py # Reply кнопки
│
├── database/ # База данных
│ └── db.py # Работа с БД
│
├── utils/ # Утилиты
│ └── helpers.py # Вспомогательные функции
│
└── plugins/ # Плагины
└── __init__.py
Открой handlers/custom.py:
@router.message(Command("mycommand"))
async def my_command(message: Message):
await message.answer("Моя команда работает!")from keyboards.inline import custom_keyboard
buttons = [
{"text": "Кнопка 1", "callback_data": "btn1"},
{"text": "Кнопка 2", "callback_data": "btn2"},
]
await message.answer("Выбери:", reply_markup=custom_keyboard(buttons))from database.db import db
# Сохранить пользователя
db.save_user(user_id, username, first_name)
# Получить пользователя
user = db.get_user(user_id)
# Сохранить данные
db.set_user_data(user_id, "score", 100)# config.py
BOT_NAME = "Hello Bot"
COMMANDS = {"start": "Начать", "help": "Помощь"}# handlers/custom.py
@router.message(Command("menu"))
async def show_menu(message: Message):
kb = InlineKeyboardBuilder()
kb.button(text="Опция 1", callback_data="opt1")
kb.button(text="Опция 2", callback_data="opt2")
kb.adjust(2)
await message.answer("Меню:", reply_markup=kb.as_markup())# Основные
BOT_NAME = "Мой Бот"
BOT_DESCRIPTION = "Описание"
VERSION = "1.0.0"
# База данных
DATABASE_TYPE = "json" # или "sqlite"
DATABASE_PATH = "data/database.json"
# Логирование
LOG_LEVEL = "INFO"
LOG_TO_FILE = True
# Админы
ADMINS = [123456789]MIT License - используй как хочешь!
- Telegram: Ghost
- Issues: GitHub Issues
Made with love for the community | Сделано с любовью для сообщества
Star if you like the project | Поставь звезду если проект понравился