📱 Telegram Бот для Модерации Контента Канала 📋 Описание проекта Это Telegram бот, созданный для управления пользовательским контентом на канале. Бот позволяет подписчикам канала отправлять свои идеи, предложения и контент, который проходит модерацию администраторами перед публикацией на канале. 🎯 Основное назначение Бот служит посредником между подписчиками и каналом, обеспечивая: Прием сообщений и изображений от пользователей Модерацию контента администраторами Автоматическую публикацию одобренного контента в канал Обратную связь с пользователями о статусе их предложений 🏗️ Структура проекта `` channel/ │ ├── bot/ # Основная конфигурация бота │ ├── bot.py # Инициализация бота, загрузка токенов │ └── main.py # Точка входа, запуск бота │ ├── handlers/ # Обработчики событий │ ├── handlers.py # Пользовательские команды и сообщения │ ├── callbacks.py # Обработка callback-кнопок админов │ └── admin.py # Уведомления администраторам │ ├── database/ # Работа с базой данных │ ├── users.py # Класс управления SQLite БД │ ├── functions.py # Вспомогательные функции (клавиатуры, изображения) │ └── constants.py # Текстовые константы │ ├── data/ # Данные приложения │ ├── .env # Переменные окружения (токены, ID) │ └── data.db # SQLite база данных │ └── requirements.txt # Зависимости проекта ` 🔧 Технологии Python 3.x aiogram 3.20.0 - асинхронный фреймворк для Telegram Bot API SQLite3 - база данных для хранения сообщений Pillow 11.2.1 - обработка изображений python-dotenv 1.1.0 - управление переменными окружения ⚙️ Функциональность Для пользователей: Отправка текстовых сообщений - пользователи могут отправлять текст с идеями Отправка изображений - возможность отправки фото с подписью Получение номера заявки - каждому сообщению присваивается уникальный номер Уведомления о статусе - пользователи получают ответ о принятии/отклонении Для администраторов: Просмотр предложений - все сообщения приходят администраторам Модерация контента - кнопки "Принять" / "Отказать" Автоматическая публикация - одобренный контент сразу публикуется в канал Защита от дублирования - если один админ уже обработал заявку, другие получают уведомление 💾 База данных Структура таблицы Messages: USERID - ID пользователя Telegram Num - уникальный номер сообщения Text - текст сообщения Image - изображение в base64 (или '-' если нет) Processed - статус обработки (0 - не обработано, 1 - принято, 2 - отклонено) NameUSER - имя пользователя 🚀 Запуск проекта Установите зависимости: `bash pip install -r requirements.txt ` Создайте файл data/.env с переменными: `env APITELEGRAM=ваштокенбота ADMINS=id1id2id3 CHANNELID=id_канала ` Инициализируйте базу данных (при первом запуске): `bash python database/users.py ` Запустите бота: `bash python bot/main.py `` 🛡️ Правила модерации Контент НЕ будет принят, если содержит: Запрещенный законом контент (наркотики, экстремизм, расизм) Материалы сексуального характера Рекламу Нецензурную лексику 📝 Рабочий процесс Пользователь отправляет сообщение/фото боту Сообщению присваивается уникальный номер Все администраторы получают уведомление с кнопками Админ принимает решение (Принять/Отказать) Пользователь получает уведомление о решении При принятии - контент автоматически публикуется в канал с пометкой "Прислано подписчиком" 🔐 Безопасность Доступ к функциям администрирования только для ID из списка ADMINS Проверка прав доступа на каждом этапе Защита от повторной обработки одного сообщения несколькими админами