重要提醒:本方法已失效,请寻找其他方法
注:此操作有封号风险,请谨慎使用
再次提醒:以下内容的方法已失效,请寻找其他方法
准备
- 一个有额度的API key
- 一台电脑
大脑
下载项目
配置
把他的项目用git克隆下来(下载个zip也行,记得解压(()
找到有个config-template.json文件,把他改名config.json,然后用记事本打开
具体配置是:
# config.json文件内容示例
{
"open_ai_api_key": "YOUR API KEY", # 填入上面创建的 OpenAI API KEY
"single_chat_prefix": ["bot", "@bot"], # 私聊时文本需要包含该前缀才能触发机器人回复
"single_chat_reply_prefix": "[bot] ", # 私聊时自动回复的前缀,用于区分真人
"group_chat_prefix": ["@bot"], # 群聊时包含该前缀则会触发机器人回复
"group_name_white_list": ["ChatGPT测试群", "ChatGPT测试群2"], # 开启自动回复的群名称列表
"image_create_prefix": ["画", "看", "找"], # 开启图片回复的前缀
"conversation_max_tokens": 1000, # 支持上下文记忆的最多字符数
"character_desc": "你是ChatGPT, 一个由OpenAI训练的大型语言模型, 你旨在回答并解决人们的任何问题,并且可以使用多种语言与人交流。" # 人格描述
}
配置说明:
1.个人聊天
- 个人聊天中,需要以 “bot”或”@bot” 为开头的内容触发机器人,对应配置项
single_chat_prefix
(如果不需要以前缀触发可以填写"single_chat_prefix": [""]
)- 机器人回复的内容会以 “[bot] ” 作为前缀, 以区分真人,对应的配置项为
single_chat_reply_prefix
(如果不需要前缀可以填写"single_chat_reply_prefix": ""
)2.群组聊天
- 群组聊天中,群名称需配置在
group_name_white_list
中才能开启群聊自动回复。如果想对所有群聊生效,可以直接填写"group_name_white_list": ["ALL_GROUP"]
- 默认只要被人 @ 就会触发机器人自动回复;另外群聊天中只要检测到以 “@bot” 开头的内容,同样会自动回复(方便自己触发),这对应配置项
group_chat_prefix
- 可选配置:
group_name_keyword_white_list
配置项支持模糊匹配群名称,group_chat_keyword
配置项则支持模糊匹配群消息内容,用法与上述两个配置项相同。(Contributed by evolay)3.其他配置
- 对于图像生成,在满足个人或群组触发条件外,还需要额外的关键词前缀来触发,对应配置
image_create_prefix
- 关于OpenAI对话及图片接口的参数配置(内容自由度、回复字数限制、图片大小等),可以参考 对话接口 和 图像接口 文档直接在 代码
bot/openai/open_ai_bot.py
中进行调整。conversation_max_tokens
:表示能够记忆的上下文最大字数(一问一答为一组对话,如果累积的对话字数超出限制,就会优先移除最早的一组对话)character_desc
配置中保存着你对机器人说的一段话,他会记住这段话并作为他的设定,你可以为他定制任何人格 (关于会话上下文的更多内容参考该 issue)
保存后,要装几个轮子
pip3 install itchat-uos==1.5.0.dev0
pip3 install --upgrade openai
运行app.py,没报错就会弹出一个二维码,报错了去他的官方文档逛逛
然后扫描二维码登录网页微信就好啦
tip要触发回复前缀才会回复
可以回图片,联系上下文
已知问题
1.群聊如何取消回复前缀?
为啥在配置那改成了“”没用啊!
解决方案:用python编辑器打开channel\wechat\wechat_channel.py
93行左右,就是在
config = conf()
和
if ('ALL_GROUP' in config.get('group_name_white_list') or group_name in config.get('group_name_white_list') or self.check_contain(group_name, config.get('group_name_keyword_white_list'))) and match_prefix:
中间那句,把等于号后边的那一串括号去掉(最好注释化,万一以后在用呢?),改成True
match_prefix = True
然后保存,运行app.py,在群聊里就不用前缀了
2.扫二维码time out超时,然后又让你扫,无限循环?
临时方案:可以在 itchat/components/login.py 的 login() 函数中,在进入 while not isLoggedIn 循环前增加一个延时
time.sleep(15)
itchat 源码在哪??
在cmd输入
pip3 show itchat-uos
那一串Location后边的就是,我这儿是Location: C:\Users\abc\AppData\Local\Programs\Python\Python311\Lib\site-packages
然后在那一串后边加上\itchat\components\
就成了C:\Users\abc\AppData\Local\Programs\Python\Python311\Lib\site-packages\itchat\components\
打开那个路径(appdata是隐藏的),找到login.py,用python编辑器打开,改源码就行~