基于python 开发 微信机器人自动回复 app

# coding:utf-8
__author__ = "zhou"
# create by zhou on 2020/3/3
from flask import Flask,render_template,request
import threading
import time
import pywinauto
from pywinauto.controls.hwndwrapper import DialogWrapper, BaseWrapper
import time
import typing
from PyQt5 import QtCore, QtWidgets, QtGui
from PyQt5.QtWidgets import QMainWindow,QApplication,QMessageBox
import json
import sys
from queue import Queue, Emptydesktop = pywinauto.Desktop()class WeChatApi(object):def __init__(self):self.chat_list = []self.chat_list_uptime = 0self._fresh_window()self.queue = Queue(10000)self.chat_window_titles = []def _fresh_window(self):global desktopbuff = []buff_1 = []for i in range(10):try:windows:typing.List[DialogWrapper] = desktop.windows()except Exception as e:print(str(e))desktop = pywinauto.Desktop()for i in windows:if i.friendly_class_name() == 'ChatWnd':_ = i.window_text()buff.append([i, _])buff_1.append(_)buff_1 = list(set(buff_1))buff_1.sort()self.chat_list = buffself.chat_window_titles = buff_1self.chat_list_uptime = time.time()def send_to_chat_window(self, window_title, message):self.queue.put((window_title, message), timeout=0.5)def _send(self, window_title, message):result = Trueif window_title not in self.chat_window_titles:result = False, ('%s聊天对话框暂未找到' % window_title)else:try:for _ in self.chat_list:i = _[0]try:if i.window_text() == window_title:i.set_focus()for msg in message.split('\n'):i.send_chars(msg)time.sleep(0.02)i.send_keystrokes("^~")time.sleep(0.1)i.send_keystrokes("~")result = Truebreakexcept Exception as _e:raise Exception(str(_e))else:passexcept Exception as e:result = False,str(e)return resultdef init(self):def target_fun():self._fresh_window()time.sleep(1)while 1:try:task = self.queue.get(timeout=0.1)except Empty:task = Noneif task:print(task, self.chat_list)if time.time() - self.chat_list_uptime >= 1:self._fresh_window()if task:try:result = self._send(*task)except:passprint(result)_thread = threading.Thread(target=target_fun)_thread.setDaemon(True)_thread.start()class Ui_Dialog(object):def setupUi(self, Dialog):Dialog.setObjectName("Dialog")Dialog.resize(353, 303)self.plainTextEdit = QtWidgets.QPlainTextEdit(Dialog)self.plainTextEdit.setGeometry(QtCore.QRect(20, 60, 311, 101))self.plainTextEdit.setObjectName("plainTextEdit")self.label = QtWidgets.QLabel(Dialog)self.label.setGeometry(QtCore.QRect(20, 20, 60, 16))self.label.setObjectName("label")self.label_2 = QtWidgets.QLabel(Dialog)self.label_2.setGeometry(QtCore.QRect(90, 20, 261, 16))self.label_2.setObjectName("label_2")self.label_3 = QtWidgets.QLabel(Dialog)self.label_3.setGeometry(QtCore.QRect(20, 40, 141, 16))self.label_3.setObjectName("label_3")self.label_4 = QtWidgets.QLabel(Dialog)self.label_4.setGeometry(QtCore.QRect(20, 170, 60, 16))self.label_4.setObjectName("label_4")self.label_5 = QtWidgets.QLabel(Dialog)self.label_5.setGeometry(QtCore.QRect(20, 200, 311, 101))self.label_5.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop)self.label_5.setObjectName("label_5")self.retranslateUi(Dialog)QtCore.QMetaObject.connectSlotsByName(Dialog)def retranslateUi(self, Dialog):_translate = QtCore.QCoreApplication.translateDialog.setWindowTitle(_translate("Dialog", "Dialog"))self.label.setText(_translate("Dialog", "接口地址:"))self.label_2.setText(_translate("Dialog", "http://0.0.0.0:99/send_message"))self.label_3.setText(_translate("Dialog", "可发送的对话:"))self.label_4.setText(_translate("Dialog", "使用说明:"))self.label_5.setText(_translate("Dialog", "1.本程序可用在32位系统 及64位系统\n"
"2.本程序提供api 对聊天窗口发送内容。\n"
"3.聊天窗口必须从微信windows端单独拖出才能识别\n"
"4.参数传递形式POST\n"
"5.参数共两个:dialog_name,message"))if __name__ == '__main__':app = Flask(__name__)api_obj = WeChatApi()api_obj.init()@app.route('/')def index():return str('wechat dialog api server')@app.route("/send_message", methods=['POST'])def send_message():status = Trueresult = ''try:assert request.method == 'POST',Exception('please use post method')dialog_name = request.form['dialog_name']message = request.form['message']assert dialog_name and message, Exception('dialog_name message必须全不为空')api_obj.send_to_chat_window(dialog_name, message)result = "已入队列,正在推送"except Exception as e :status = Falseresult = str(e)return json.dumps({'status': status, 'result': result})def run_flask():app.run('0.0.0.0', 99)thread = threading.Thread(target=run_flask)thread.setDaemon(True)thread.start()app = QApplication(['windows微信助手'])main_window = QMainWindow()ui_dialog = Ui_Dialog()ui_dialog.setupUi(main_window)main_window.setWindowTitle('windows微信助手')def state_sync():dialog_list = api_obj.chat_window_titlescontent = ''for i in dialog_list:content += '%s\n' % icontent = content.strip()if not content:content = "暂无可用的对话窗口"ui_dialog.plainTextEdit.setPlainText(content)state_timer = QtCore.QTimer()state_timer.timeout.connect(state_sync)state_timer.start(500)main_window.show()sys.exit(app.exec_())

测试代码

import requests
# data = {'dialog_name': 'Python开发_通知专用', 'message': 'hello机器人'}
data = {'dialog_name': "文件传输助手", 'message': 'hello python'}
res = requests.post('http://192.168.8.140:99/send_message', data=data)
print(res.json())

基于python 开发 微信机器人自动回复 app相关推荐

  1. Python itchat微信机器人自动回复

    ** Python itchat微信机器人自动回复 ** 第一次写博客,以后会继续更新; 以下是使用Pythobn写的自动微信回复功能,目前支持设置离开状态及机器人回复状态,适合新手学习: 环境:WI ...

  2. 基于 Wachaty 开发微信机器人 个人微信号小助手平台

    wxbot 微信机器人,个人微信号小助手平台, nodejs + nuxt + wechaty 技术栈 准备 微信机器人开源库调研,GitHub 找到以下 3 个开源作品: itchat itchat ...

  3. 基于python开发pepper机器人的人脸识别--使用facenet

    一:关于Facenet Facenet 是Florian Schroff等人2015年提出的一种人脸识别的模型,论文地址 FaceNet: A Unified Embedding for Face R ...

  4. 基于python的微信机器人开发_python 微信机器人

    [实例简介] [实例截图] [核心代码] from config import TOKEN,XML_STR from flask import Flask, request, make_respons ...

  5. 基于python实现微信接入ChatGpt进行自动回复

    基于python实现微信接入ChatGpt进行自动回复 教程说明 下载和使用python库 如何下载python库 如何使用python库 导入python库 chatgpt部分 申请openai的k ...

  6. python实现微信机器人: 登录微信、消息接收、自动回复功能

    这篇文章主要介绍了python实现微信机器人: 登录微信.消息接收.自动回复功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 ...

  7. 【毕业设计_课程设计】基于python的微信公众平台机器人的设计与实现

    文章目录 0 项目说明 项目介绍 项目工程 0 项目说明 基于python的微信公众平台机器人的设计与实现 提示:适合用于课程设计或毕业设计,工作量达标,源码开放 项目介绍 1.NGINX做负载均衡, ...

  8. 用python开发微信公众平台聊天机器人

    最近用python写了一个聊天机器人的微信公众号,网上找的开发文档参差不齐,官方文档也比较老旧,还有部分小问题.于是,分享一下我的思路. 开发环境 windows sever 2008+python3 ...

  9. 视频教程-基于python的微信公众号开发教程-微信开发

    基于python的微信公众号开发教程 微信企业号星级会员.10多年软件从业经历,国家级软件项目负责人,主要从事软件研发.软件企业员工技能培训.已经取得计算机技术与软件资格考试(软考)--"信 ...

最新文章

  1. 聊聊 HTTPS 和 SSL/TLS 协议
  2. 设计模式之-命令模式(Command Pattern)
  3. 冒泡、鸡尾酒、选择、插入、归并、快速排序的C++程序
  4. springMVC中添加命名空间(edit namespace)
  5. hive优化--增加减少map数
  6. 接口中定义的成员变量是( )。_C++:如何正确的定义一个接口类
  7. 干货分享 | 免费下载文库下载器,学生党必备神器
  8. K3 设置为AP,用于软件路由的后级。
  9. Sublime Text 3使用SublimeLinter配置JS,CSS,HTML语法检查(实用)
  10. 资江小票打印机js实现web打印(web通用打印)
  11. ExtJS初学——renderTo/applyTo区别
  12. 基于vscode的vue开发
  13. TensorFlow 系列案例(2):自然语言处理-TensorFlow + Word2Vec
  14. 如何制作一个商城小程序?
  15. android源码定制之初探--定制android关机界面
  16. 【第17天】Java集合(四)---Sorted接口实现的TreeSet集合及单值类型集合总结
  17. 蚌埠市哪有学计算机编程的,蚌埠小孩学习编程
  18. 艾司博讯:拼多多网店账号出现异常该怎么解决?
  19. 原来游戏技术行业最大的秘密竟然是...
  20. GPS时钟源(GPS时间同步服务器)的概述

热门文章

  1. 【Away3D代码解读】(二):渲染核心流程(简介、实体对象收集)
  2. 龙珠直播前50信息爬取并保存图片和天池排名爬取
  3. OwlCarousel使用
  4. iMeta | 南京农业大学韦中组开发多病原生物污染高通量快检平台
  5. python线程退出或应用程序请求_Python 线程和进程
  6. vmware合并LUN
  7. 快速理解内存对齐以及#pragma pack
  8. 一组常见的液压阀运动简图
  9. vue全局修改设置滚动条样式
  10. java poi读取excel,2147483647问题