Python微信自动回复机器人

#!/usr/bin/python3.7
# -*- coding: utf-8 -*-
# @Time : 2019/2/2 0002
# @Email : [email protected]
# @Software : PyCharm
import requests
from fake_useragent import UserAgent
import json
import itchat
import os

# 全局请求头
files = {}
headers = {}
body = {}
timeouts = {}
resHeader = {}
app_id = '86760'
app_secret = 'ccece9bc703d4064b95f31ced8f84c42'
rec_tmp_dir = os.path.join(os.getcwd(), 'tmp/')
if not os.path.exists(rec_tmp_dir):
    os.mkdir(rec_tmp_dir)
oneself_name = None
one_run, run = False, True


class ShowApiRequest:
    def __init__(self, url, my_app_id, my_app_secret):
        self.url = url
        self.my_appId = my_app_id
        self.my_appSecret = my_app_secret
        body["showapi_appid"] = my_app_id
        body["showapi_sign"] = my_app_secret
        headers["User-Agent"] = UserAgent().random

    @staticmethod
    def add_file(key, value_url):
        with open("{}".format(value_url), 'rb')as f:
            files[key] = f.read()

    @staticmethod
    def add_body(key, value):
        body[key] = value

    # 设置连接时间和读取时间
    @staticmethod
    def set_timeout(connect_timout, read_timeout):
        timeouts["connect_timout"] = connect_timout
        timeouts["read_timeout"] = read_timeout

    def post(self):
        if not timeouts:
            res = requests.post(self.url, files=files, data=body, headers=headers)
        else:
            timeout = (timeouts["connect_timout"], timeouts["read_timeout"])
            res = requests.post(self.url, files=files, data=body, headers=headers, timeout=timeout)
        return res


show_api = ShowApiRequest('http://route.showapi.com/60-27","my_appId', app_id, app_secret)


def show_robot(info, nick_name, img_dir):  # 调用图灵机器人的接口
    show_api.add_body('userid', nick_name)
    if info:
        show_api.add_body('info', info)
    if img_dir:
        show_api.add_file('img', img_dir)
    res = show_api.post()
    data = json.loads(res.text)
    text = data['showapi_res_body'].get('text')
    return data, text


def public_message(msg):  # 返回公用信息
    global run, one_run
    send_name = msg['FromUserName']
    if msg.text == '禁止回复':
        run = False
    if msg.text == '启动回复':
        run = True

    if send_name == oneself_name:
        if msg.text == '启动回复':
            run = one_run = True
        if msg.text == '禁止回复':
            one_run = False
        if not one_run:
            return 0, 0
    if run:
        nick_name = msg['User']['NickName']
        remark_name = msg['User']['RemarkName']
        return send_name, nick_name or remark_name
    return 0, 0


@itchat.msg_register(itchat.content.TEXT)  # 获得文本信息
def text_reply(msg):
    send_name, call_name = public_message(msg)
    if send_name:
        _, text = show_robot(msg.text, call_name, None)
        if not text:
            text = '人工智障出现问题,等待主人抢修中!'
        text = '[自动回复]:' + text + '---------->>>[输入:禁止回复,就停止机器回复.输入:启动回复,就会启动机器回复]'
        itchat.send_msg(text, send_name)


@itchat.msg_register(itchat.content.PICTURE)  # 获得图片信息
def img_reply(msg):
    send_name, call_name = public_message(msg)
    if send_name:
        img_address = rec_tmp_dir + msg['FileName']
        msg.download(img_address)
        _, text = show_robot(None, call_name, img_address)
        if text:
            text = '[自动回复]:' + text
            itchat.send_msg(text, send_name)


def oneself(wx_name):  # 获得自己的信息
    global oneself_name
    one = itchat.search_friends(name=wx_name)
    oneself_name = one[0]['UserName']


def auto_start(wx_name):
    itchat.auto_login(hotReload=True)
    oneself(wx_name)  # 输入自己的微信名
    itchat.run()


if __name__ == '__main__':
    auto_start(wx_name='Jtyoui')  # 输入自己的微信名,这个是自己取的名字

 

查看我的代码托管地址: https://github.com/jtyoui/Jtyoui/tree/master/jtyoui/wx

安装

pip install jtyoui

使用方法

from jtyoui.wx import auto_start
if __name__ == '__main__':
    auto_start(wx_name='Jtyoui')  # 输入自己的微信名,这个是自己取的名字

更加自定义的定义

from jtyoui.wx import *
if __name__ == '__main__':
    itchat.auto_login(hotReload=True)
    oneself(wx_name='Jtyoui')  # 输入自己的微信名
    itchat.run()

你可能感兴趣的:(python)