Skip to content

Commit

Permalink
feat: make plugin compatible with LINKAI in most cases
Browse files Browse the repository at this point in the history
  • Loading branch information
lanvent committed Jun 10, 2023
1 parent d1b867a commit 419a3e5
Show file tree
Hide file tree
Showing 8 changed files with 20 additions and 7 deletions.
6 changes: 5 additions & 1 deletion bot/linkai/link_ai_bot.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,11 @@ def _chat(self, query, context, retry_count=0):

try:
# load config
app_code = conf().get("linkai_app_code")
if context.get("generate_breaked_by"):
logger.info(f"[LINKAI] won't set appcode because a plugin ({context['generate_breaked_by']}) affected the context")
app_code = None
else:
app_code = conf().get("linkai_app_code")
linkai_api_key = conf().get("linkai_api_key")

session_id = context["session_id"]
Expand Down
2 changes: 2 additions & 0 deletions channel/chat_channel.py
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,8 @@ def _generate_reply(self, context: Context, reply: Reply = Reply()) -> Reply:
reply = e_context["reply"]
if not e_context.is_pass():
logger.debug("[WX] ready to handle context: type={}, content={}".format(context.type, context.content))
if e_context.is_break():
context["generate_breaked_by"] = e_context["breaked_by"]
if context.type == ContextType.TEXT or context.type == ContextType.IMAGE_CREATE: # 文字和图片消息
reply = super().build_reply_content(context.content, context)
elif context.type == ContextType.VOICE: # 语音消息
Expand Down
2 changes: 1 addition & 1 deletion plugins/dungeon/dungeon.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ def on_handle_context(self, e_context: EventContext):
if e_context["context"].type != ContextType.TEXT:
return
bottype = Bridge().get_bot_type("chat")
if bottype not in [const.OPEN_AI, const.CHATGPT, const.CHATGPTONAZURE]:
if bottype not in [const.OPEN_AI, const.CHATGPT, const.CHATGPTONAZURE, const.LINKAI]:
return
bot = Bridge().get_bot("chat")
content = e_context["context"].content[:]
Expand Down
3 changes: 3 additions & 0 deletions plugins/event.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,3 +50,6 @@ def __delitem__(self, key):

def is_pass(self):
return self.action == EventAction.BREAK_PASS

def is_break(self):
return self.action == EventAction.BREAK or self.action == EventAction.BREAK_PASS
8 changes: 4 additions & 4 deletions plugins/godcmd/godcmd.py
Original file line number Diff line number Diff line change
Expand Up @@ -285,9 +285,9 @@ def on_handle_context(self, e_context: EventContext):
ok, result = False, "请提供一个GPT模型"
elif cmd == "gpt_model":
user_data = conf().get_user_data(user)
model = conf().get('model')
if 'gpt_model' in user_data:
model = user_data['gpt_model']
model = conf().get("model")
if "gpt_model" in user_data:
model = user_data["gpt_model"]
ok, result = True, "你的GPT模型为" + str(model)
elif cmd == "reset_gpt_model":
try:
Expand Down Expand Up @@ -320,7 +320,7 @@ def on_handle_context(self, e_context: EventContext):
load_config()
ok, result = True, "配置已重载"
elif cmd == "resetall":
if bottype in [const.OPEN_AI, const.CHATGPT, const.CHATGPTONAZURE]:
if bottype in [const.OPEN_AI, const.CHATGPT, const.CHATGPTONAZURE, const.LINKAI]:
channel.cancel_all_session()
bot.sessions.clear_all_session()
ok, result = True, "重置所有会话成功"
Expand Down
3 changes: 3 additions & 0 deletions plugins/plugin_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,9 @@ def emit_event(self, e_context: EventContext, *args, **kwargs):
logger.debug("Plugin %s triggered by event %s" % (name, e_context.event))
instance = self.instances[name]
instance.handlers[e_context.event](e_context, *args, **kwargs)
if e_context.is_break():
e_context["breaked_by"] = name
logger.debug("Plugin %s breaked event %s" % (name, e_context.event))
return e_context

def set_plugin_priority(self, name: str, priority: int):
Expand Down
2 changes: 1 addition & 1 deletion plugins/role/role.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ def on_handle_context(self, e_context: EventContext):
if e_context["context"].type != ContextType.TEXT:
return
btype = Bridge().get_bot_type("chat")
if btype not in [const.OPEN_AI, const.CHATGPT, const.CHATGPTONAZURE]:
if btype not in [const.OPEN_AI, const.CHATGPT, const.CHATGPTONAZURE, const.LINKAI]:
return
bot = Bridge().get_bot("chat")
content = e_context["context"].content[:]
Expand Down
1 change: 1 addition & 0 deletions plugins/tool/tool.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ def on_handle_context(self, e_context: EventContext):
const.CHATGPT,
const.OPEN_AI,
const.CHATGPTONAZURE,
const.LINKAI,
):
return

Expand Down

0 comments on commit 419a3e5

Please sign in to comment.