Archived
1
0
Fork 0
This repository has been archived on 2024-04-26. You can view files and clone it, but cannot push or open issues or pull requests.
akari-bot/modules/ask/tools/utils.py

49 lines
1.3 KiB
Python
Raw Normal View History

2023-04-08 04:25:48 +00:00
from typing import Callable
2023-04-19 07:41:39 +00:00
import ujson as json
2023-04-08 04:25:48 +00:00
from langchain.agents import Tool
from core.types.message import MessageSession, MsgInfo, Session
2023-04-19 07:41:39 +00:00
from core.utils.i18n import Locale
2023-04-08 04:25:48 +00:00
def to_json_func(func: Callable):
async def wrapper(*args, **kwargs):
return json.dumps(await func(*args, **kwargs))
return wrapper
2023-04-30 03:30:59 +00:00
2023-04-08 04:25:48 +00:00
def to_async_func(func: Callable):
async def wrapper(*args, **kwargs):
return func(*args, **kwargs)
return wrapper
2023-04-30 03:30:59 +00:00
2023-04-08 04:25:48 +00:00
def with_args(func: Callable, *args, **kwargs):
async def wrapper(*a, **k):
# if a is tuple with empty string
if len(a) == 1 and a[0] == '':
return await func(*args, **kwargs, **k)
return await func(*args, *a, **kwargs, **k)
return wrapper
2023-04-30 03:30:59 +00:00
2023-04-08 05:22:26 +00:00
def parse_input(input: str):
vals = input.split(',')
parsed = []
for v in vals:
parsed.append(v.strip().strip('"'.strip("'")))
return parsed
2023-04-08 04:25:48 +00:00
2023-04-30 03:30:59 +00:00
2023-04-08 04:25:48 +00:00
class AkariTool(Tool):
def __init__(self, name: str, func: Callable, description: str = None):
super().__init__(name, func, description)
self.coroutine = func
2023-04-30 03:30:59 +00:00
2023-04-08 04:25:48 +00:00
fake_msg = MessageSession(MsgInfo('Ask|0', 'Ask|0', 'AkariBot', 'Ask', 'Ask', 'Ask', 0),
Session('~lol lol', 'Ask|0', 'Ask|0'))
2023-04-15 08:18:51 +00:00
locale_en = Locale('en_us')
fake_msg.locale = locale_en