mirror of
https://github.com/zhayujie/chatgpt-on-wechat.git
synced 2026-02-09 07:48:52 +08:00
56 lines
2.3 KiB
Python
56 lines
2.3 KiB
Python
from bridge.context import Context, ContextType
|
|
from bridge.reply import Reply, ReplyType
|
|
from common.log import logger
|
|
from linkai import LinkAIClient, PushMsg
|
|
from config import conf, pconf, plugin_config
|
|
from plugins import PluginManager
|
|
|
|
|
|
chat_client: LinkAIClient
|
|
|
|
class ChatClient(LinkAIClient):
|
|
def __init__(self, api_key, host, channel):
|
|
super().__init__(api_key, host)
|
|
self.channel = channel
|
|
self.client_type = channel.channel_type
|
|
|
|
def on_message(self, push_msg: PushMsg):
|
|
session_id = push_msg.session_id
|
|
msg_content = push_msg.msg_content
|
|
logger.info(f"receive msg push, session_id={session_id}, msg_content={msg_content}")
|
|
context = Context()
|
|
context.type = ContextType.TEXT
|
|
context["receiver"] = session_id
|
|
context["isgroup"] = push_msg.is_group
|
|
self.channel.send(Reply(ReplyType.TEXT, content=msg_content), context)
|
|
|
|
def on_config(self, config: dict):
|
|
if not self.client_id:
|
|
return
|
|
logger.info(f"从控制台加载配置: {config}")
|
|
local_config = conf()
|
|
for key in local_config.keys():
|
|
if config.get(key) is not None:
|
|
local_config[key] = config.get(key)
|
|
if config.get("reply_voice_mode"):
|
|
if config.get("reply_voice_mode") == "voice_reply_voice":
|
|
local_config["voice_reply_voice"] = True
|
|
elif config.get("reply_voice_mode") == "always_reply_voice":
|
|
local_config["always_reply_voice"] = True
|
|
# if config.get("admin_password") and plugin_config["Godcmd"]:
|
|
# plugin_config["Godcmd"]["password"] = config.get("admin_password")
|
|
# PluginManager().instances["Godcmd"].reload()
|
|
# if config.get("group_app_map") and pconf("linkai"):
|
|
# local_group_map = {}
|
|
# for mapping in config.get("group_app_map"):
|
|
# local_group_map[mapping.get("group_name")] = mapping.get("app_code")
|
|
# pconf("linkai")["group_app_map"] = local_group_map
|
|
# PluginManager().instances["linkai"].reload()
|
|
|
|
|
|
def start(channel):
|
|
global chat_client
|
|
chat_client = ChatClient(api_key=conf().get("linkai_api_key"),
|
|
host="link-ai.chat", channel=channel)
|
|
chat_client.start()
|