mirror of
https://github.com/zhayujie/bot-on-anything.git
synced 2026-01-19 17:51:05 +08:00
41 lines
1.5 KiB
Python
41 lines
1.5 KiB
Python
# encoding:utf-8
|
|
|
|
import os
|
|
import plugins
|
|
from plugins import *
|
|
from common import log
|
|
from common import functions
|
|
|
|
|
|
@plugins.register(name="Selector", desire_priority=99, hidden=True, desc="A model selector", version="0.1", author="RegimenArsenic")
|
|
class Selector(Plugin):
|
|
def __init__(self):
|
|
super().__init__()
|
|
curdir = os.path.dirname(__file__)
|
|
try:
|
|
self.config = functions.load_json_file(curdir, "selector.json")
|
|
except Exception as e:
|
|
log.warn("[Selector] init failed")
|
|
raise e
|
|
self.handlers[Event.ON_HANDLE_CONTEXT] = self.select_model
|
|
self.handlers[Event.ON_BRIDGE_HANDLE_STREAM_CONTEXT] = self.select_model
|
|
log.info("[Selector] inited")
|
|
|
|
def get_events(self):
|
|
return self.handlers
|
|
|
|
def select_model(self, e_context: EventContext):
|
|
model=e_context['args'].get('model')
|
|
for selector in self.config.get("selector", []):
|
|
prefix = selector.get('prefix', [])
|
|
check_prefix=functions.check_prefix(e_context["context"], prefix)
|
|
if (check_prefix):
|
|
model=selector.get('model')
|
|
if isinstance(check_prefix, str):
|
|
e_context["context"] = e_context["context"].split(check_prefix, 1)[1].strip()
|
|
break
|
|
log.debug(f"[Selector] select model {model}")
|
|
e_context.action = EventAction.CONTINUE # 事件继续,交付给下个插件或默认逻辑
|
|
e_context['args']['model']=model
|
|
return e_context
|