Telegram бот для команды Codev, который служит админ-панелью для управления портфолио проектов компании.
- ✅ Авторизация по Telegram ID (только админы имеют доступ)
- ✅ Просмотр списка проектов с пагинацией (по 10 на страницу)
- ✅ Добавление новых проектов (название, описание, ссылка, изображение)
- ✅ Редактирование существующих проектов (все поля)
- ✅ Удаление проектов
- ✅ Управление админами (добавление, редактирование, удаление, просмотр списка)
- ✅ Отображение фото меню на всех сообщениях (настраивается через БД)
- ✅ Автоматическая загрузка изображений в imgbb
- ✅ Прогрессивный интерфейс добавления проектов с удалением предыдущих сообщений
- Python 3.8+
- PostgreSQL
- Telegram Bot Token
-
Клонируйте проект (если нужно) или используйте существующую папку
-
Установите зависимости:
pip install -r requirements.txt
-
Создайте .env файл в корне проекта:
BOT_TOKEN=your_telegram_bot_token_here DB=postgresql://user:password@localhost:5432/database_name IMGBB_API_KEY=your_imgbb_api_key_here
Для получения IMGBB_API_KEY:
- Зарегистрируйтесь на https://imgbb.com/
- Перейдите в настройки API: https://api.imgbb.com/
- Скопируйте ваш API ключ
-
Создайте структуру базы данных в PostgreSQL:
-- Таблица настроек CREATE TABLE settings ( id SERIAL PRIMARY KEY, key TEXT NOT NULL UNIQUE, value TEXT, created_at TIMESTAMP DEFAULT NOW() NOT NULL, updated_at TIMESTAMP DEFAULT NOW() NOT NULL ); -- Настройка списка администраторов (JSON формат) INSERT INTO settings (key, value) VALUES ('admin_telegram_ids', '["1215831955", "987654321", "111111111", "222222222"]'); -- Таблица проектов CREATE TABLE projects ( id SERIAL PRIMARY KEY, title TEXT NOT NULL, description TEXT, image_url TEXT, project_url TEXT, created_at TIMESTAMP DEFAULT NOW() NOT NULL, updated_at TIMESTAMP DEFAULT NOW() NOT NULL ); -- Функция для автообновления updated_at CREATE OR REPLACE FUNCTION update_updated_at_column() RETURNS TRIGGER AS $$ BEGIN NEW.updated_at = NOW(); RETURN NEW; END; $$ language 'plpgsql'; -- Триггеры для автообновления updated_at CREATE TRIGGER update_settings_updated_at BEFORE UPDATE ON settings FOR EACH ROW EXECUTE FUNCTION update_updated_at_column(); CREATE TRIGGER update_projects_updated_at BEFORE UPDATE ON projects FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
-
Настройка фото меню (опционально): Для отображения фото на всех сообщениях бота добавьте запись в таблицу settings:
INSERT INTO settings (key, value) VALUES ('menu_photo', 'https://your-image-url.com/photo.jpg') ON CONFLICT (key) DO UPDATE SET value = 'https://your-image-url.com/photo.jpg';
-
Миграция для существующей базы данных (если у вас уже есть проекты):
psql -d your_database -f migration_add_project_url.sql
python main.pyПри первом запуске бота используйте команду /add_admin чтобы добавить себя как админа:
- Напишите боту
/start - Если у вас нет доступа, напишите
/add_admin - Если в базе данных еще нет админов, вы станете первым админом
- После этого вы сможете добавлять других админов через команду
/add_admin USER_ID
/start- запуск бота и главное меню (только для админов)/add_admin- добавить себя как админа (только если нет других админов)/add_admin USER_ID- добавить пользователя как админа (только для существующих админов)
- 📂 Просмотреть проекты - показать список всех проектов
- ➕ Добавить проект - добавить новый проект с названием, описанием и изображением
- 🔧 Управление админами - управление правами доступа
- При просмотре проекта доступны кнопки редактирования и удаления
- Можно редактировать название, описание и URL изображения отдельно
- Удаление требует подтверждения
main.py- основной файл запуска ботаconfig.py- конфигурация и загрузка переменных окруженияdatabase.py- работа с PostgreSQL базой данныхhandlers.py- обработчики команд и callback'овkeyboards.py- инлайн клавиатуры для ботаrequirements.txt- зависимости Python
- aiogram 3.4.1 - современная библиотека для Telegram Bot API
- asyncpg - асинхронный драйвер для PostgreSQL
- python-dotenv - загрузка переменных окружения
- FSM (Finite State Machine) - для обработки многошаговых диалогов
- Inline клавиатуры - для удобного управления через кнопки
- Доступ к боту имеют только пользователи с Telegram ID, сохраненными в таблице
settings - Все операции логируются
- Подтверждение для критических действий (удаление проектов)
При возникновении проблем проверьте:
- Правильность настройки .env файла
- Доступность PostgreSQL базы данных
- Валидность Telegram Bot Token
- Логи приложения для диагностики ошибок