forked from bemxio/sachiko-chan
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathutilities.py
41 lines (28 loc) · 1.16 KB
/
utilities.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
from openai.openai_object import OpenAIObject
from openai import ChatCompletion
import discord
import functools
import asyncio
import random
def random_chance(percent: int) -> bool:
return random.randint(1, 100) <= percent
def filter_markdown(text: str) -> str:
filtered = text.replace("\\", "\\\\")
filtered = filtered.replace("*", "\\*")
filtered = filtered.replace("_", "\\_")
filtered = filtered.replace("~", "\\~")
filtered = filtered.replace("`", "\\`")
filtered = filtered.replace(">", "\\>")
filtered = filtered.replace("|", "\\|")
return filtered
def is_mentioned(user: discord.User, message: discord.Message) -> bool:
if isinstance(message.channel, discord.DMChannel):
return True
if user.mentioned_in(message):
return True
return False
async def chat_request(messages: list, model: str = "gpt-3.5-turbo", loop: asyncio.AbstractEventLoop = asyncio.get_event_loop()) -> OpenAIObject:
function = functools.partial(ChatCompletion.create, model=model, messages=messages)
response = await loop.run_in_executor(None, function)
response = response.choices[0].message
return response