微信机器人对接ChatGPT

admin 2023年6月21日00:33:08评论128 views字数 2858阅读9分31秒阅读模式

如题

实现微信机器人的几种方案

一般来说有三种实现微信机器人的方式

  • 企业微信
  • 网页版微信
  • 微信HOOK

企业微信

企业微信 开发者中心 - https://developer.work.weixin.qq.com/

微信机器人对接ChatGPT

这玩意是需要营业执照的 所以没开公司之前别想了

网页版微信

网页版微信 https://wx.qq.com/

微信机器人对接ChatGPT

基于网页版微信登录实现的机器人其实就是封装了一层http,但是大部分微信都不能通过网页版登录,比如说我自己的微信,所以这个方法也不行

微信HOOK

蒽....这是我们采取的方式

下载指定版本的微信和注入器 就能够hook微信对应方法的接口,在代码中实现消息监听和发送等动作了

环境准备

下载指定版本的微信

https://github.com/tom-snow/wechat-windows-versions/releases?page=2

这里我使用 Wechat v3.2.1.121

微信机器人对接ChatGPT

安装之后记得取消掉自动升级

微信机器人对接ChatGPT

下载安装后还需要使用对应的DLL注入器

注入器地址

https://github.com/zhizhuoshuma/WechatBot

运行注入器

微信机器人对接ChatGPT

选择对应版本的微信并进行注入

微信机器人对接ChatGPT

基于NGCBot来修改

所有调用API的代码在Api_Server中,根据自己的需求裁剪

以获取各平台文章为例

# 获取各平台安全文章
def get_safety_news(self, ):
    news_list = ''
    output("[+]:正在爬取安全新闻... ...")
    news_list = self.get_xz_news(news_list)
    news_list = self.get_qax_news(news_list)
    news_list = self.get_anquanke_news(news_list)
    output("[+]:获取成功")
    news_list += f"n{self.system_copyright + '整理分享,更多内容请戳 #' + self.system_copyright if self.system_copyright else ''}n{time.strftime('%Y-%m-%d %X')}"
    return news_list.strip()

可以看到就是获取内容之后返回一个文本

具体调用这个方法的地方在

# 管理员功能-晚报推送
def send_evening_page(self, ws, roomid):
    msg = self.Asm.get_safety_news()
    ws.send(self.Ss.send_msg(msg=msg, wxid=roomid))

当然这里需要先实例化对象

# 实例化接口服务类
self.Asm = Api_Server_Main()

然后把消息发送出去

具体的判断关键字是在

# 判断关键词
def judge_keyword(self, keyword, custom_keyword, split_bool=False, one_bool=False):
    # 分割触发
    if split_bool:
        keyword = keyword.split(' ')
        for ckw in custom_keyword:
            for kw in keyword:
                if ckw == kw:
                    return True
    # 单个触发
    elif one_bool:
        return True if keyword.strip() == custom_keyword.strip() else False
    # 单个循环触发
    elif keyword and custom_keyword and not split_bool and not one_bool:
        return True if [ckw for ckw in custom_keyword if ckw == keyword] else False

裁剪之后API这部分变成了

class Api_Server_Main:
    def __init__(self):
        urllib3.disable_warnings()

    # AI对话接口
    def get_ai(self, keyword):
        msg=""
        return msg

我们在get_ai中编写自己的逻辑

合入GPT访问代码

因为之前一直在看gpt4free,所以这里直接对接这部分代码就行

目录结构为

微信机器人对接ChatGPT

/you文件夹就不用说了,就是之前gpt4free的,这里直接复制过来就行

Api_Server_Main里面的关键的代码如下

def get_answer(self,question: str) -> str:
    # Set cloudflare clearance cookie and get answer from GPT-4 model
    try:
        result = you.Completion.create(prompt=question)
        return result.text

    except Exception as e:
        # Return error message if an exception occurs
        return (
            f'An error occurred: {e}. Please make sure you are using a valid cloudflare clearance token and user agent.'
        )

# AI对话接口
def get_ai(self, keyword):
    question="请用中文回答,"+keyword
    answer=self.get_answer(question)
    msg=answer.encode().decode("unicode_escape")

    return msg

为啥question里面我自己拼接了这部分

question="请用中文回答,"+keyword

因为我发现在you.com网站回答问题的时候 大多数时候都是回答的英文,为了避免出现这个问题,所以进行了强制要求

最终效果

最后的效果是

微信机器人对接ChatGPT

所以在群里面提问的话就会有机器人进行响应了

END

建了一个微信的安全交流群,欢迎添加我微信备注进群,一起来聊天吹水哇,以及一个会发布安全相关内容的公众号,欢迎关注 微信机器人对接ChatGPT

加我拉你入群 黑糖安全公众号
微信机器人对接ChatGPT 微信机器人对接ChatGPT


原文始发于微信公众号(黑糖安全):微信机器人对接ChatGPT

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年6月21日00:33:08
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   微信机器人对接ChatGPThttp://cn-sec.com/archives/1821704.html

发表评论

匿名网友 填写信息