Python:根据itchat编了一个3岁智商的机器人

前言:
1、目前新注册的微信号不能上网页版微信了,而itchat等目前主流微信api接口都是用的网页微信,所以我只能用老号登陆,可是腾讯以后肯定会逐步关闭网页版(老号以后可能也不能用了),所以还是期望有大神能开发出pc版微信的api
2、我翻了网上很多的攻略,绝大部分都正确,但是实际使用却有问题,可能是itchat的版本更新所致,现在这个是我看了itchat的py文档补充写的,所以亲测可用
3、四则运算写了一个简单的,只能+ - * /,而且如果是4*5 + 20之类的,会误算成25,以后再修正吧
4、其实机器人如果用好的话,完全可以顶一个甚至多个人力,比如群里报数据,根据标准格式进行汇总统计并督促,不过因为1的原因,实际使用上有被封号的风险

效果图:
在这里插入图片描述

#coding=utf8
import itchat
from itchat.content import *
import re

# 在注册时增加isGroupChat=True将判定为群聊回复
@itchat.msg_register(TEXT, isGroupChat = True)
def groupchat_reply(msg):
    '''
    msg['Content'],信息内容
    msg['FromUserName'],信息的发送方ID,如果是群信息的话就是群ID,是一长串数字,没有msg['NickName'],所以要用chatroom_dict()进行转化
    msg['ActualNickName'],信息发送者的昵称,注意如果是群里的话就是群里信息的实际发送者
    '''
    d = chatroom_dict()
    chatroom_id = msg['FromUserName']
    chatroom_name = d[chatroom_id]
    try:
        if chatroom_name == '软件测试': #这里指定了群
            text = msg['Content']
            if re.search('.*?\d+.*', text):
                answer = cal(text)
                itchat.send('答案是:{}'.format(answer), toUserName=chatroom_id)
            else:
                QA_len = len(content_dict)
                n = 0
                for key, value in content_dict.items():
                    if key in msg['Content']:
                        itchat.send(value, toUserName=chatroom_id)
                        break
                    else:
                        n += 1
                        if n == QA_len:
                            itchat.send('我还不知道呀, 等我长大一点再回答你哦!', toUserName=chatroom_id)
                            get_new_question(msg['Content'])
                        else: continue
        else:
            pass
    except:
        pass

def chatroom_dict():
    '''获得群的ID和群名称,并组合成字典'''
    d = {}
    chatrooms = itchat.get_chatrooms(update=True)
    for chatroom in chatrooms:
        d[chatroom['UserName']] = chatroom['NickName']
    return d

def get_new_question(content):
    '''把不在库里面的新问题保存到本地文件夹里'''
    with open('new_question.txt', 'a', encoding='utf-8') as file:
        file.write(content)
        file.write('\r\n')

def cal(text):
    '''简单的四则运算'''
    if re.search('\D*(\d+\+\d+)\D*', text):
        question = re.search('\D*(\d+\+\d+)\D*', text).group(1)
        f_num, s_num = question.split('+')
        answer = int(f_num) + int(s_num)
        return answer
    elif re.search('\D*(\d+-\d+)\D*', text):
        question = re.search('\D*(\d+-\d+)\D*', text).group(1)
        f_num, s_num = question.split('-')
        answer = int(f_num) - int(s_num)
        return answer
    elif re.search('\D*(\d+\*\d+)\D*', text):
        question = re.search('\D*(\d+\*\d+)\D*', text).group(1)
        f_num, s_num = question.split('*')
        answer = int(f_num) * int(s_num)
        return answer
    elif re.search('\D*(\d+/\d+)\D*', text):
        question = re.search('\D*(\d+/\d+)\D*', text).group(1)
        f_num, s_num = question.split('/')
        answer = int(f_num) / int(s_num)
        return answer
    else:
        return "太难了,我不会啊!"

content_dict = {
    '你好': '你好',
    '叫什么': '我叫图图',
    '名字': '我叫图图',
    '性别': '男孩子',
    '几岁': '我今年3岁啦',
    '算数': '会一点点',
    '考': '放马过来!',
    '聪明': '谢谢!',
    '唱歌': '暂时还不会,以后会加强!',
    '最爱': '肉肉!',
}

itchat.auto_login(True)
itchat.run()
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值