/
doubley
/
Anton
Обзор
Документация
Войти
/
doubley
/
Anton
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
bot.py
107 строк
4 KB
Fr0undi
fix: imports
12 ноя 2025, 15:33
12 ноя 2025, 15:33
18bfd23
Код
Авторство
О чём код?
import os import logging from func import format_document from telegram import Update from telegram.ext import Application, CommandHandler, MessageHandler, filters, ContextTypes # Настройка логирования logging.basicConfig( format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO ) logger = logging.getLogger(__name__) # Токен бота (получите у @BotFather) BOT_TOKEN = "8415395467:AAGcV7OP7rvoMpmbhzPPboHxpkNoYLJ8jeA" # Создаем временную папку if not os.path.exists('temp'): os.makedirs('temp') async def start(update: Update, context: ContextTypes.DEFAULT_TYPE): """Обработчик команды /start""" welcome_text = """ 🤖 Добро пожаловать в бот для форматирования Word документов! 📎 Просто отправьте мне файл .docx, и я отформатирую его согласно вашим правилам. ⚡ Бот обработает документ и вернет отформатированную версию. """ await update.message.reply_text(welcome_text) async def handle_document(update: Update, context: ContextTypes.DEFAULT_TYPE): """Обработчик документов""" try: # Получаем информацию о файле document = update.message.document # Проверяем, что это Word документ if not document.file_name.lower().endswith(('.docx', '.doc')): await update.message.reply_text("❌ Пожалуйста, отправьте файл в формате .docx") return # Отправляем сообщение о начале обработки processing_msg = await update.message.reply_text("⏳ Обрабатываю документ...") # Скачиваем файл file = await context.bot.get_file(document.file_id) input_path = f"temp/input_{document.file_id}.docx" await file.download_to_drive(input_path) # Обрабатываем документ output_path = f"temp/output_{document.file_id}.docx" success = format_document(input_path, output_path) if success: # Отправляем обработанный файл await update.message.reply_document( document=open(output_path, 'rb'), filename=f"formatted_{document.file_name}" ) await processing_msg.edit_text("✅ Документ успешно отформатирован!") else: await processing_msg.edit_text("❌ Произошла ошибка при обработке документа") # Удаляем временные файлы cleanup_files([input_path, output_path]) except Exception as e: logger.error(f"Error processing document: {e}") await update.message.reply_text("❌ Произошла ошибка при обработке файла") cleanup_files([input_path, output_path]) def cleanup_files(file_paths): """Очистка временных файлов""" for file_path in file_paths: try: if os.path.exists(file_path): os.remove(file_path) except Exception as e: logger.warning(f"Could not delete {file_path}: {e}") async def error_handler(update: Update, context: ContextTypes.DEFAULT_TYPE): """Обработчик ошибок""" logger.error(f"Exception while handling an update: {context.error}") # Отправляем сообщение об ошибке пользователю if update and update.message: await update.message.reply_text("❌ Произошла непредвиденная ошибка") def main(): """Запуск бота""" # Создаем приложение application = Application.builder().token(BOT_TOKEN).build() # Добавляем обработчики application.add_handler(CommandHandler("start", start)) application.add_handler(MessageHandler(filters.Document.ALL, handle_document)) application.add_error_handler(error_handler) # Запускаем бота print("🤖 Бот запущен...") application.run_polling() if __name__ == "__main__": main()