Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import asyncio
- from g4f.client import AsyncClient
- from g4f.Provider import Aichatos
- from aiogram import (Router, Bot, Dispatcher,
- F, types)
- import logging
- router = Router(name=__name__)
- lock = asyncio.Lock()
- logger = logging.getLogger(__name__)
- logging.basicConfig(level=logging.INFO)
- async def response_gpt(message):
- client = AsyncClient(
- provider=Aichatos
- )
- try:
- completion = await client.chat.completions.create(
- model="gpt-3.5-turbo",
- messages=message,
- )
- return completion.choices[0].message.content
- except Exception as ex:
- print(ex)
- return None
- @router.business_message(F.text)
- async def handler_message(message: types.Message):
- async with lock:
- user_id = message.chat.id
- logger.info(f"Received business message from {user_id}: {message.text}")
- messages = [
- {"role": "system",
- "content": "Привет! Ты - ИИ-помощник для бизнеса в Telegram. Отвечай на вопросы пользователей"},
- {"role": "user", "content": message.text}
- ]
- response = await response_gpt(messages)
- if response is None:
- await message.answer("Я не понимаю вас. Попробуй еще раз.")
- else:
- logger.info(f"Response sent to business chat: {response}")
- await message.answer(response)
- async def main() -> None:
- bot = Bot(token="TOKEN")
- dp = Dispatcher()
- dp.include_router(router)
- await bot.delete_webhook(drop_pending_updates=True)
- await dp.start_polling(bot)
- asyncio.run(main())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement