基于 chatGPT和WeChat的微信机器人

 

1、 灵活使用chatGPT

首先注册 openapi 账号是重中之重,网址:https://chat.openai.com/chat

拿到apikey

 

 

 其次这个有一个使用和收费政策,根据个人情况来试用,是按照词汇量来计算的

 

 

 2、接入到微信

2.1、使用wxauto来直接操作微信窗口

前面尝试过ITchat pyautogui(快捷键)pyperclip(剪切板) 效果不是很好

目前可实现自动回复的完整代码:(还需继续优化,望各路大神指点)

# -*- coding:utf-8 -*-
#!/usr/bin/python3
#####################################################################
#Author : zhoujt
#Tel : 917644912053
#Date : 2022-12-20
#FileName : main.py
#Description: The combination of AI and wechat
#####################################################################

import openai
from wxauto import *
from datetime import date, datetime
import time

wx = WeChat()
all_word = []
# Author's wechat
whoami = 'Anonymous'

# Answer the last piece of information
def answer_meg(question):
    # api needs to register on the official website
    openai.api_key = "skeiqwytsnavcsdvuyetrqwebfnmfdsbfgasnLGTMwMZ"
    completion = openai.Completion.create(
        engine="text-davinci-003",
        prompt=question,
        max_tokens=1024,
        temperature=1
    )
    an_info = completion.choices[0].text
    print("Answer: %s" % an_info)
    return an_info


# Get the last message
def get_endmegs():
    lastmsgs = wx.GetLastMessage
    print("Question: %s" % lastmsgs[1])
    return lastmsgs[1]


# Sending a Solution
def send_megs(meg_info):
    msg = meg_info
    # The "who" is chat sender, which can also be a group name
    who = 'About me'
    wx.ChatWith(who)
    wx.SendMsg(msg)


def diff_info():
    lastmsgs = wx.GetLastMessage
    print("The last piece of data: %s" % lastmsgs[2])
    last_word = lastmsgs[2]
    last_sender = lastmsgs[0]
    f = open('allmessage.txt', 'r')
    for line in f.readlines():
        line = line[-17:]
        line = line.replace("')", "")
        line = line.replace("\n", "")
        all_word.append(line)

    if last_word in all_word:
        print("No last message")
    elif last_sender in whoami:
        print("Robots speak without reply")
    else:
        print("I have a new message to respond")
        info = answer_meg(question=get_endmegs())
        send_megs(meg_info=info)


if __name__ == '__main__':
    while True:
        diff_info()
        # update the all message log
        lastinfo = wx.GetAllMessage
        with open('allmessage.txt', 'w') as f:
            for ilog in lastinfo:
                f.write(str(ilog) + '\n')
            f.close()
        print(datetime.now())
        time.sleep(10)

  结尾 end.....

 

posted @ 2022-12-20 12:07  Security  阅读(893)  评论(1编辑  收藏  举报