Advertisement
Guest User

Untitled

a guest
May 13th, 2024
736
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.72 KB | None | 0 0
  1. import asyncio
  2.  
  3. from g4f.client import AsyncClient
  4. from g4f.Provider import Aichatos
  5.  
  6. from aiogram import (Router, Bot, Dispatcher,
  7.                      F, types)
  8. import logging
  9.  
  10. router = Router(name=__name__)
  11. lock = asyncio.Lock()
  12.  
  13. logger = logging.getLogger(__name__)
  14. logging.basicConfig(level=logging.INFO)
  15.  
  16.  
  17. async def response_gpt(message):
  18.     client = AsyncClient(
  19.         provider=Aichatos
  20.     )
  21.  
  22.     try:
  23.         completion = await client.chat.completions.create(
  24.             model="gpt-3.5-turbo",
  25.             messages=message,
  26.         )
  27.  
  28.         return completion.choices[0].message.content
  29.  
  30.     except Exception as ex:
  31.         print(ex)
  32.         return None
  33.  
  34.  
  35. @router.business_message(F.text)
  36. async def handler_message(message: types.Message):
  37.     async with lock:
  38.         user_id = message.chat.id
  39.         logger.info(f"Received business message from {user_id}: {message.text}")
  40.  
  41.         messages = [
  42.             {"role": "system",
  43.              "content": "Привет! Ты - ИИ-помощник для бизнеса в Telegram. Отвечай на вопросы пользователей"},
  44.             {"role": "user", "content": message.text}
  45.         ]
  46.  
  47.         response = await response_gpt(messages)
  48.  
  49.         if response is None:
  50.             await message.answer("Я не понимаю вас. Попробуй еще раз.")
  51.         else:
  52.             logger.info(f"Response sent to business chat: {response}")
  53.             await message.answer(response)
  54.  
  55.  
  56. async def main() -> None:
  57.     bot = Bot(token="TOKEN")
  58.     dp = Dispatcher()
  59.  
  60.     dp.include_router(router)
  61.  
  62.     await bot.delete_webhook(drop_pending_updates=True)
  63.     await dp.start_polling(bot)
  64.  
  65.  
  66. asyncio.run(main())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement