Skip to content

Instantly share code, notes, and snippets.

@Aqendo
Created February 14, 2023 18:12
Show Gist options
  • Save Aqendo/11fc69dc681f9cd392565d309d80eb9a to your computer and use it in GitHub Desktop.
Save Aqendo/11fc69dc681f9cd392565d309d80eb9a to your computer and use it in GitHub Desktop.
шок слив сурсы бота chatgpt
# requires: openai python-dotenv aiogram==3.0.0b6
import os
import openai
import logging
import traceback
from aiogram import Bot, Dispatcher, types
from aiogram.filters import Command
from aiogram.types import Message
import asyncio
from dotenv import load_dotenv, find_dotenv
load_dotenv(find_dotenv())
TOKEN = os.getenv("BOT_TOKEN")
openai.api_key = os.getenv("OPEN_AI_TOKEN")
dp = Dispatcher()
logger = logging.getLogger(__name__)
awaiting = {}
from functools import wraps, partial
def wrap(func):
@wraps(func)
async def run(*args, loop=None, executor=None, **kwargs):
if loop is None:
loop = asyncio.get_event_loop()
pfunc = partial(func, *args, **kwargs)
return await loop.run_in_executor(executor, pfunc)
return run
@dp.message(Command(commands=["start"]))
async def command_start_handler(message: Message) -> None:
await message.answer(f"Привет, пиши свой запрос, на него ответят...наверное...")
@dp.message()
async def text_listener(message: types.Message) -> None:
if message.from_user.id in awaiting:
return
awaiting[message.from_user.id] = 1
messag = await message.reply("Падажжите, всё буде...")
query = message.text
try:
response = await wrap(openai.Completion.create)(
model="text-davinci-003",
prompt=query,
temperature=0.9,
max_tokens=500,
top_p=1,
frequency_penalty=0,
presence_penalty=0.6)
await messag.edit_text(response.choices[0].text.strip())
except:
traceback.print_exc()
await messag.edit_text("Чёто пошло не так.")
del awaiting[message.from_user.id]
if __name__ == "__main__":
bot = Bot(TOKEN, parse_mode="HTML")
dp.run_polling(bot)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment