自用的使用浏览器ChatGPT接入Nonebot2,兼容 onebot v11 与 qq 适配器
需要纯净ip用来过cf,另外根据使用账号数量需要相应多的内存
在 nonebot2 项目的.env
文件中添加下表中的必填配置
配置项 | 必填 | 默认值 | 类型 | 说明 |
---|---|---|---|---|
gpt_session | 是 | 无 | List[Dict[str,str]] | openai账号密码 |
gpt_proxy | 否 | 无 | str | 使用的代理 |
arkose_status | 否 | false | bool | gpt是否开启了arkose验证 |
group_chat | 否 | true | bool | 群里开启多人识别 |
gpt_chat_start | 否 | [] | list | 聊天前缀,参考nb命令前缀 |
gpt_chat_start_in_msg | 否 | false | bool | 命令前缀是否包含在消息内 |
begin_sleep_time | 否 | false | bool | 关闭启动等待时间(建议账号数量大于5开启) |
gpt_chat_priority | 否 | 90 | int | gpt聊天响应优先级 |
gpt_command_priority | 否 | 19 | int | gpt命令响应优先级 |
gpt_white_list_mode | 否 | true | bool | 聊天白名单模式 |
gptplus_white_list_mode | 否 | true | bool | gptplus聊天白名单模式 |
gpt_replay_to_replay | 否 | false | bool | 是否响应"回复消息" |
gpt_ban_str | 否 | 无 | List[str] | 黑名单屏蔽词列表 |
gpt_manage_ids | 否 | 无 | List[str] | 超管群/频道id,通过日志等方式获得 |
gpt_lgr_markdown | 否 | false | bool | 以拉格兰md消息回复 |
gpt_httpx | 否 | false | bool | 使用httpx |
gpt_url_replace | 否 | false | bool | QQ适配器url输出时替换 |
gpt_auto_init_group | 否 | false | bool | 入群自动初始化人设 |
gpt_auto_init_friend | 否 | false | bool | 加好友后自动初始化人设 |
gpt_init_group_pernal_name | 否 | false | bool | 入群自动初始化的人设名 |
gpt_init_friend_pernal_name | 否 | false | bool | 加好友自动初始化的人设名 |
# gpt配置示例
# 当mode为空或者为openai时,建议提前手动登录一次获取session_token填入(成功使用后可删除session_token项),mode目前不支持苹果账号
gpt_session='[
{
"email": "xxxx@hotmail.com",
"password": "xxxx",
"session_token": "ey....",
},
{
"email": "aaaa@gmail.com",
"password": "xxxx",
"mode": "google",
},
{
"email": "bbb@sss.com",
"password": "xxxx",
"mode": "microsoft",
"help_email": "xxx@xx.com",
"gptplus": True,
},
]'
gpt_proxy='http://127.0.0.1:8080'
# gpt_proxy='http://username:password@127.0.0.1:8080'
arkose_status=false
group_chat=true
gpt_chat_start=[]
gpt_chat_start_in_msg=false
begin_sleep_time=true
gpt_chat_priority=90
gpt_command_priority=19
gpt_white_list_mode=true
gpt_replay_to_replay=false
gpt_ban_str='[
"我是猪",
"你是猪",
]'
# qq适配器使用的超管群id
gpt_manage_ids=['qq group id......']
# onebot适配器 拉格兰md消息兼容
gpt_lgr_markdown=false
# 使用httpx(暂不完善,请关闭)
gpt_httpx=false
# 开启QQ适配器url替换
gpt_url_replace=true
# 入群是否自动初始化人设
gpt_auto_init_group=false
gpt_init_group_pernal_name="猪" # 仅当上一条为true时生效
# 加好友是否自动初始化人设
gpt_auto_init_friend=false
gpt_init_friend_pernal_name="私人猪" # 仅当上一条为true时生效
# 插件需要一些其他的Nonebot基础配置,请检查是否存在
# 机器人名
nickname=["bot name"]
# 超管QQ(onebot用)
SUPERUSERS=["qq num"]
指令 | 适配器 | 权限 | 需要@ | 范围 | 说明 |
---|---|---|---|---|---|
@bot 聊天内容... | 兼容 | 无/白名单 | 是 | 群聊/私聊/频道 | @或者叫名+内容 开始聊天,随所有者白名单模式设置改变 |
初始化 | 兼容 | 无/白名单 | 是 | 群聊/私聊/频道 | 初始化(人设名) |
重置 | 兼容 | 无/白名单 | 是 | 群聊/私聊/频道 | 回到初始化人设后的第二句话时 |
重置上一句 | 兼容 | 无/白名单 | 是 | 群聊/私聊/频道 | 刷新上一句的回答 |
回到过去 | 兼容 | 无/白名单 | 是 | 群聊/私聊/频道 | 回到过去 <对话序号/p_id/最后一次出现的关键词> ,回到括号内的对话时间点 |
人设列表 | 兼容 | 无/白名单 | 是 | 群聊/私聊/频道 | 查看可用人设列表 |
查看人设 | 兼容 | 无/白名单 | 是 | 群聊/私聊/频道 | 查看人设的具体内容 |
添加人设 | 兼容 | 无/白名单 | 是 | 群聊/私聊/频道 | 添加人设 (人设名) |
历史聊天 | 兼容 | 无/白名单 | 是 | 群聊/私聊/频道 | 查看当前人格历史聊天记录 |
md状态开启 | 兼容 | 无/白名单 | 是 | 群聊/私聊/频道 | 用户自开启markdown输出内容 |
md状态关闭 | 兼容 | 无/白名单 | 是 | 群聊/私聊/频道 | 用户自关闭markdown输出内容 |
删除人设 | 兼容 | 超级管理员/超管群 | 是 | 群聊/私聊/频道 | 删除人设 (人设名) |
黑名单列表 | 兼容 | 超级管理员/超管群 | 是 | 群聊/私聊/频道 | 查看黑名单列表 |
解黑 | 兼容 | 超级管理员/超管群 | 是 | 群聊/私聊/频道 | 解黑<账号> ,解除黑名单 |
白名单列表 | 兼容 | 超级管理员/超管群 | 是 | 群聊/私聊/频道 | 查看白名单列表 |
工作状态 | 兼容 | 超级管理员/超管群 | 是 | 群聊/私聊/频道 | 查看当前所有账号的工作状态 |
添加plus | 兼容 | 超级管理员/超管群 | 是 | 群聊/私聊/频道 | 添加plus 群号/账号/QQ适配器openid |
删除plus | 兼容 | 超级管理员/超管群 | 是 | 群聊/私聊/频道 | 删除plus 群号/账号/QQ适配器openid |
plus切换 | 兼容 | 无/白名单 | 是 | 群聊/私聊/频道 | plus切换 <模型名称> ,如 4om/3.5/4/4o,白名单状态开启后,仅支持有plus状态的 |
全局plus | 兼容 | 超级管理员/超管群 | 是 | 群聊/私聊/频道 | 全局plus 开启/关闭,关闭后所有人的plus状态不可用,仅能使用3.5模型,超管自己除外 |
删除白名单 | 兼容 | 超级管理员/超管群 | 是 | 群聊/私聊/频道 | 删除白名单 <账号/群号> (个人/群) ,删除白名单,最后不写默认为群 |
添加白名单 | OneBot | 超级管理员/超管群 | 是 | 群聊/私聊 | 添加白名单(plus) <账号/群号> (个人/群) ,添加白名单,最后不写默认为群,加了plus字样则默认同时添加进plus状态 |
获取本地id | 无/白名单 | 是 | 群聊/频道 | 群聊内获取id | |
生成cdk | 超管群 | 是 | 群聊/频道 | 生成cdk <群号/其他信息>,以绑定信息方式生成白名单cdk | |
出现吧 | 无 | 是 | 群聊/频道 | 出现吧 \<cdk>,以绑定id形式使用cdk加入白名单 | |
结束吧 | 白名单 | 是 | 群聊/频道 | 结束吧 ,用户自主解除白名单 |
<为必填内容>,(为选填内容)
QQ适配器若添加plus状态,只能对方使用了cdk后,超管自己查看白名单列表,再手打openid到
添加plus
指令了,稍微有点麻烦,也许未来会优化不同模型的为独立会话,会分开保存,切换plus状态后会自动续接对应的会话
当触发验证后,会在启动目录生成带有启动账号名称的文件,键入收到的验证码并保存,即可自动验证。留意日志输出提示
请先从你的浏览器手动使用google登录chatgpt一次,然后访问https://myaccount.google.com/
,使用浏览器插件Cookie-Editor导出该页面的Cookie为json格式。 当"{email_address}_google_cookie.txt"文件出现时,将复制的json粘贴进去并保存。
协议bot的md似了,QQbot的md模板差不多也似了,如果你是QQBot原生md用户可以催我适配一下,不然这个功能就鸽了
见 nonebot_plugin_localstore 插件说明,通常为用户目录下
# linux
~/.local/share/nonebot2/nonebot_plugin_gpt/\{bot_name\}
# windows
C:\Users\UserName\AppData\Local\nonebot2\nonebot_plugin_gpt\\{bot_name\}
由于时间关系,仅测试了onebot适配器的群聊效果,onebot适配器私聊和QQ适配器群私聊理论上也支持,若有bug可发issue通知我改下;
还是由于时间关系,暂时没写与白名单相关适配,自动初始化人设若开启,优先级会比白名单高,例如非白名单群,入群也会在gpt账户上创建一个会话(3.5的会话),当然没白名单该群后续触发不了这个会话
2024.07.28 0.0.39
2024.07.21 0.0.37
2024.07.16 0.0.36
2024.07.15 0.0.35
2024.07.12 0.0.34
2024.07.11 0.0.33
2024.06.23 0.0.32
2024.06.15 0.0.31
2024.06.11 0.0.29
2024.06.04 0.0.28
2024.05.20 0.0.26
2024.05.16 0.0.25
2024.05.10 0.0.24
2024.05.07 0.0.23
2024.05.06 0.0.20
2024.05.04 0.0.18
2024.04.18 0.0.17
2024.04.17 0.0.15
2024.03.24 0.0.13
2024.03.22 0.0.12
2024.03.20
2024.03.17
2024.03.13
2024.03.11
2024.02.19
自用挺久了,匆忙改改发出来,很多东西还没补充