diff --git a/.gitignore b/.gitignore index 637f4dc0..c03c7d15 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ config.py .idea/ __pycache__/ database.db -qchatgpt.log \ No newline at end of file +qchatgpt.log +config.py \ No newline at end of file diff --git a/config-template.py b/config-template.py index b30da67a..a5d4b62f 100644 --- a/config-template.py +++ b/config-template.py @@ -3,11 +3,13 @@ import logging # [必需] Mirai的配置 # 请到配置mirai的步骤中的教程查看每个字段的信息 +# adapter: 选择适配器,目前支持HTTPAdapter和WebSocketAdapter # host: 运行mirai的主机地址 # port: 运行mirai的主机端口 # verifyKey: mirai-api-http的verifyKey # qq: 机器人的QQ号 mirai_http_api_config = { + "adapter": "HTTPAdapter", "host": "localhost", "port": 8080, "verifyKey": "yirimirai", @@ -28,9 +30,13 @@ openai_config = { }, } -# 管理员QQ号,用于接收报错等通知,为0时不发送通知 -admin_qq = 0 +# [可选] 机器人的配置 +#user_name: 管理员(主人)的名字 +#bot_name: 机器人的名字 +user_name = 'You' +bot_name = 'Bot' +# [可选] 情景预设(机器人人格) # 每个会话的预设信息,影响所有会话,无视指令重置 # 可以通过这个字段指定某些情况的回复,可直接用自然语言描述指令 # 例如: 如果我之后想获取帮助,请你说“输入!help获取帮助”, @@ -38,6 +44,9 @@ admin_qq = 0 # 可参考 https://github.com/PlexPt/awesome-chatgpt-prompts-zh default_prompt = "如果我之后想获取帮助,请你说“输入!help获取帮助”" +# 管理员QQ号,用于接收报错等通知,为0时不发送通知 +admin_qq = 0 + # 群内响应规则 # 符合此消息的群内消息即使不包含at机器人也会响应 # 支持消息前缀匹配及正则表达式匹配 diff --git a/pkg/openai/session.py b/pkg/openai/session.py index 56402fcb..7596b86c 100644 --- a/pkg/openai/session.py +++ b/pkg/openai/session.py @@ -53,7 +53,9 @@ def dump_session(session_name: str): # 从配置文件获取会话预设信息 def get_default_prompt(): - return "You:{}\nBot:好的\n".format(config.default_prompt) if hasattr(config, 'default_prompt') and \ + user_name = config.user_name if hasattr(config, 'user_name') and config.user_name != '' else 'You' + bot_name = config.bot_name if hasattr(config, 'bot_name') and config.bot_name != '' else 'Bot' + return user_name+":{}\n"+bot_name+":好的\n".format(config.default_prompt) if hasattr(config, 'default_prompt') and \ config.default_prompt != "" else '' @@ -81,8 +83,8 @@ class Session: prompt = get_default_prompt() - user_name = 'You' - bot_name = 'Bot' + user_name = config.user_name if hasattr(config, 'user_name') and config.user_name != '' else 'You' + bot_name = config.bot_name if hasattr(config, 'bot_name') and config.bot_name != '' else 'Bot' create_timestamp = 0 diff --git a/pkg/qqbot/manager.py b/pkg/qqbot/manager.py index 04e41e35..517b8f57 100644 --- a/pkg/qqbot/manager.py +++ b/pkg/qqbot/manager.py @@ -4,7 +4,7 @@ import os import threading import openai.error -from mirai import At, GroupMessage, MessageEvent, Mirai, Plain, StrangerMessage, WebSocketAdapter, FriendMessage, Image +from mirai import At, GroupMessage, MessageEvent, Mirai, Plain, StrangerMessage, WebSocketAdapter,HTTPAdapter, FriendMessage, Image import config import pkg.openai.session @@ -73,7 +73,8 @@ class QQBotManager: else: self.reply_filter = pkg.qqbot.filter.ReplyFilter([]) - bot = Mirai( + if mirai_http_api_config['adapter'] == "WebSocketAdapter": + bot = Mirai( qq=mirai_http_api_config['qq'], adapter=WebSocketAdapter( verify_key=mirai_http_api_config['verifyKey'], @@ -81,6 +82,15 @@ class QQBotManager: port=mirai_http_api_config['port'] ) ) + elif mirai_http_api_config['adapter'] == "HTTPAdapter": + bot = Mirai( + qq=mirai_http_api_config['qq'], + adapter=HTTPAdapter( + verify_key=mirai_http_api_config['verifyKey'], + host=mirai_http_api_config['host'], + port=mirai_http_api_config['port'] + ) + ) @bot.on(FriendMessage) async def on_friend_message(event: FriendMessage):