使用Python Flask 开发微信机器人

缘由
由于我个人有个小博客,然后还录制了一些课程,所有就建立了对应的微信群,但是微信群的二维码是变化的,总不能经常换了。所以就想搞一个微信机器人,自动加 微信,自动拉群。废话不多说,先上图

效果展示
大家可以试试效果,效果相当棒

在这里插入图片描述
在这里插入图片描述

需求
其他人可以通过二维码加我好友 自动通过

好友通过之后 主动发送一些邀请入群链接和介绍信

回复 邀请 、加群 可以发送邀请入群链接

所有聊天数据都要存储起来 并且可以通过Web展示

根据用户输入信息 回复相关内容

技术选型
Python3

Flask:轻量级的MVC 框架

itchat :实现微信API相关接口

MySQL:存储相关微信内容

图灵机器人:调用API实现主动场景回复

架构
本人没有使用flask 默认的MVC方式,使用了我自己实现过后的:结构分层明了的MVC框架 。结构如下

每一个文件夹都有自己明确的作用

├── application.py
├── common
│   ├── libs
│   └── models
├── config
│   ├── base_setting.py
│   ├── local_setting.py
│   ├── production_setting.py
├── controllers
│   ├── index.py
│   ├── member.py
├── interceptors
│   ├── Auth.py
│   ├── errorHandler.py
├── jobs
│   ├── launcher.py
│   ├── movie.py
│   └── tasks
├── manager.py
├── requirement.txt
├── static
│   ├── js
│   └── plugins
├── templates
│   ├── common
│   ├── index.html
│   ├── info.html
│   └── member
├── test
│   └── apsch_test.py
├── tornado_server.py
└── www.py

实现源码
这里将主要实现源码如下

# -*- coding: utf-8 -*-
from application import app,db
import itchat,signal,json,time,os,random
import multiprocessing
from ctypes import c_bool, c_int
 
from common.libs.tuling123.TuLingService import TuLingService
from common.libs.wxbot.WeChatBotService import WeChatBotService
from common.models.queue import QueueList
from common.libs.DateUtil import getCurrentTime
import traceback,requests
 
 
 
'''
python manage.py runjob -m wechatbot/index
'''
class JobTask():
    def __init__(self):
        pass
 
    def run(self, params):
        try:
            # 增加重试连接次数
            # requests使用了urllib3库,默认的http connection是keep-alive的,requests设置False关闭。
            s = requests.session()
            s.keep_alive = False
 
            itchat.auto_login( enableCmdQR=2,hotReload=True )
 
            threads = []
            t_queue_consumer = multiprocessing.Process(target = syncConsumer, args=("t_queue_consumer",) )
            t_queue_consumer.daemon = True
            threads.append( t_queue_consumer )
 
 
            app.logger.info( 'Parent process {0} is Running'.format( os.getpid() ) )
            for i in range( len(threads) ):
                threads[i].start()
 
 
            #初始化所有的朋友,存入队列,然后进程做事情
            queue_msg 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值