import os import asyncio import sys from datetime import datetime from pip._internal.cli.main import main def install_package(package): main(["install", "-U", package]) required_packages = [ "loguru", "aiogram", "g4f" ] for package in required_packages: try: __import__(package.replace("-", "_")) print(f"Пакет {package} уже установлен") except ImportError: print(f"Установка пакета {package}...") install_package(package) from loguru import logger from aiogram import Bot, Dispatcher, types from aiogram.enums import ParseMode from aiogram.filters import CommandStart from aiogram.types import InlineQuery, InlineQueryResultArticle, InputTextMessageContent from g4f.client import Client client = Client() logger.add("bot.log", rotation="100 MB", level="INFO") BOT_TOKEN = "ваш_токен_бота" bot = Bot(token=BOT_TOKEN) dp = Dispatcher() async def improve_text(text: str) -> str: try: prompt = f"""Ты - помощник делового человека. Улучши следующий текст, сделав его более профессиональным и деловым, сохраняя при этом основной смысл. Не добавляй никаких пояснений или комментариев, и давай текст будто ты настоящий человек просто верни улучшенную версию текста: {text} """ response = await asyncio.to_thread( lambda: client.chat.completions.create( model="gpt-4o", messages=[{"role": "user", "content": prompt}] ) ) return response.choices[0].message.content except Exception as e: logger.error(f"Ошибка при обработке текста: {e}") return "Произошла ошибка при обработке текста. Пожалуйста, попробуйте позже." @dp.inline_query() async def inline_query_handler(query: InlineQuery) -> None: text = query.query if not text: return result_id = f"text_{datetime.now().strftime('%Y%m%d%H%M%S')}" if len(text) < 5: await query.answer( results=[ InlineQueryResultArticle( id=result_id, title="Текст слишком короткий", description="Введите более длинный текст для улучшения", input_message_content=InputTextMessageContent( message_text="Введите более длинный текст для улучшения" ) ) ], cache_time=1 ) return improved_text = await improve_text(text) await query.answer( results=[ InlineQueryResultArticle( id=result_id, title="Улучшенный текст", description=improved_text[:100] + "..." if len(improved_text) > 100 else improved_text, input_message_content=InputTextMessageContent( message_text=improved_text, parse_mode=None ) ) ], cache_time=300 ) async def main() -> None: logger.info("Бот запущен") await dp.start_polling(bot) if __name__ == "__main__": asyncio.run(main()) Python import os import asyncio import sys from datetime import datetime from pip._internal.cli.main import main def install_package(package): main(["install", "-U", package]) required_packages = [ "loguru", "aiogram", "g4f" ] for package in required_packages: try: __import__(package.replace("-", "_")) print(f"Пакет {package} уже установлен") except ImportError: print(f"Установка пакета {package}...") install_package(package) from loguru import logger from aiogram import Bot, Dispatcher, types from aiogram.enums import ParseMode from aiogram.filters import CommandStart from aiogram.types import InlineQuery, InlineQueryResultArticle, InputTextMessageContent from g4f.client import Client client = Client() logger.add("bot.log", rotation="100 MB", level="INFO") BOT_TOKEN = "ваш_токен_бота" bot = Bot(token=BOT_TOKEN) dp = Dispatcher() async def improve_text(text: str) -> str: try: prompt = f"""Ты - помощник делового человека. Улучши следующий текст, сделав его более профессиональным и деловым, сохраняя при этом основной смысл. Не добавляй никаких пояснений или комментариев, и давай текст будто ты настоящий человек просто верни улучшенную версию текста: {text} """ response = await asyncio.to_thread( lambda: client.chat.completions.create( model="gpt-4o", messages=[{"role": "user", "content": prompt}] ) ) return response.choices[0].message.content except Exception as e: logger.error(f"Ошибка при обработке текста: {e}") return "Произошла ошибка при обработке текста. Пожалуйста, попробуйте позже." @dp.inline_query() async def inline_query_handler(query: InlineQuery) -> None: text = query.query if not text: return result_id = f"text_{datetime.now().strftime('%Y%m%d%H%M%S')}" if len(text) < 5: await query.answer( results=[ InlineQueryResultArticle( id=result_id, title="Текст слишком короткий", description="Введите более длинный текст для улучшения", input_message_content=InputTextMessageContent( message_text="Введите более длинный текст для улучшения" ) ) ], cache_time=1 ) return improved_text = await improve_text(text) await query.answer( results=[ InlineQueryResultArticle( id=result_id, title="Улучшенный текст", description=improved_text[:100] + "..." if len(improved_text) > 100 else improved_text, input_message_content=InputTextMessageContent( message_text=improved_text, parse_mode=None ) ) ], cache_time=300 ) async def main() -> None: logger.info("Бот запущен") await dp.start_polling(bot) if __name__ == "__main__": asyncio.run(main()) Не забудьте в botfather - включитье inline mode