python 微信发送消息

目录

pyautogui 模拟点击发消息

微信wxauto 不错

可执行代码:

WeRoBot 还没测

pyautogui 免费不错


pyautogui 模拟点击发消息

Python发送微信消息(文字、图片、文件)给指定好友和微信群,零基础可看懂(附源码和教程)_python 本地文件发送到微信群-CSDN博客

微信wxauto 不错

GitHub - cluic/wxauto: Windows版本微信客户端(非网页版)自动化,可实现简单的发送、接收微信消息,简单微信机器人

可执行代码:

打开pc上的微信并登录,这个代码就可以自动和指定联系人发消息并获取聊天记录

from wxauto import WeChat

wx = WeChat()

# 发送消息
who = '辰辰'
for i in range(3):
    wx.SendMsg(f'wxauto测试{i+1}', who)
    
# 获取当前聊天页面(文件传输助手)消息,并自动保存聊天图片
msgs = wx.GetAllMessage(savepic=True)
for msg in msgs:
    print(f"{msg[0]}: {msg[1]}")

print('wxauto测试完成!')

【Python微信机器人】第六篇:优化使用方式,可pip安装_pip install wechathelper-CSDN博客

WeRoBot 还没测

探索WeRoBot:一个强大的微信机器人框架-CSDN博客

pyautogui 免费不错

参考博文

import pyautogui
import time
import win32api
import win32con
import win32gui
import win32clipboard as w
from PIL import ImageGrab
import requests
import base64


def FindWindow(chatroom):
    win = win32gui.FindWindow('WeChatMainWndForPC', chatroom)
    print("找到窗口句柄:%x" % win)
    if win != 0:
        win32gui.ShowWindow(win, win32con.SW_SHOWMINIMIZED)
        win32gui.ShowWindow(win, win32con.SW_SHOWNORMAL)
        win32gui.ShowWindow(win, win32con.SW_SHOW)
        win32gui.SetWindowPos(win, win32con.HWND_TOP, 0, 0, 500, 700, win32con.SWP_SHOWWINDOW)
        win32gui.SetForegroundWindow(win)  # 获取控制
        time.sleep(1)
        tit = win32gui.GetWindowText(win)
        print('已启动【' + str(tit) + '】窗口')
    else:
        print('找不到【%s】窗口' % chatroom)
        exit()


# 设置和粘贴剪贴板
def ClipboardText(ClipboardText):
    w.OpenClipboard()
    w.EmptyClipboard()
    w.SetClipboardData(win32con.CF_UNICODETEXT, ClipboardText)
    w.CloseClipboard()
    time.sleep(1)
    win32api.keybd_event(17, 0, 0, 0)
    win32api.keybd_event(86, 0, 0, 0)
    win32api.keybd_event(86, 0, win32con.KEYEVENTF_KEYUP, 0)
    win32api.keybd_event(17, 0, win32con.KEYEVENTF_KEYUP, 0)


# 模拟发送动作
def SendMsg():
    win32api.keybd_event(18, 0, 0, 0)
    win32api.keybd_event(83, 0, 0, 0)
    win32api.keybd_event(18, 0, win32con.KEYEVENTF_KEYUP, 0)
    win32api.keybd_event(83, 0, win32con.KEYEVENTF_KEYUP, 0)


# 模拟发送微信文本消息
def SendWxMsg(wxid, sendtext):
    # 先启动微信
    FindWindow('微信')
    time.sleep(1)
    # 定位到搜索框
    pyautogui.moveTo(143, 39)
    pyautogui.click()
    # 搜索微信
    ClipboardText(wxid)
    time.sleep(1)
    # 进入聊天窗口
    pyautogui.moveTo(155, 120)
    pyautogui.click()
    # 粘贴文本内容
    ClipboardText(sendtext)
    # 发送
    SendMsg()
    print('已发送')
    # 关闭微信窗口
    time.sleep(1)
    pyautogui.moveTo(683, 16)
    pyautogui.click()


# 模拟发送文件消息(图片、文档、压缩包等)
def SendWxFileMsg(wxid, imgpath):
    # 先启动微信
    FindWindow('微信')
    time.sleep(1)
    # 定位到搜索框
    pyautogui.moveTo(143, 39)
    pyautogui.click()
    # 搜索微信
    ClipboardText(wxid)
    time.sleep(1)
    # 进入聊天窗口
    pyautogui.moveTo(155, 120)
    pyautogui.click()
    # 选择文件
    pyautogui.moveTo(373, 570)
    pyautogui.click()
    ClipboardText(imgpath)
    time.sleep(1)
    pyautogui.moveTo(784, 509)
    pyautogui.click()
    # 发送
    SendMsg()
    print('已发送')
    # 关闭微信窗口
    time.sleep(1)
    pyautogui.moveTo(683, 16)
    pyautogui.click()


# 转发群里最新的一条消息
def ZhuanfaMsg(wxid, groupname):
    # 先启动微信
    FindWindow('微信')
    time.sleep(1)
    # 定位到搜索框
    pyautogui.moveTo(143, 39)
    pyautogui.click()
    # 搜索群
    ClipboardText(groupname)
    time.sleep(1)
    # 进入群窗口
    pyautogui.moveTo(155, 120)
    pyautogui.click()
    # 开始转发
    pyautogui.moveTo(484, 439)
    time.sleep(1)
    pyautogui.rightClick()
    pyautogui.moveTo(543, 454)
    time.sleep(1)
    pyautogui.click()
    # 搜索用户
    ClipboardText(wxid)
    time.sleep(1)
    pyautogui.moveTo(828, 406)
    pyautogui.click()
    time.sleep(1)
    # 确定转发
    pyautogui.moveTo(1108, 755)
    pyautogui.click()


# 获取你的个人信息(昵称、微信号)
def GetYourInfo():
    # 先启动微信
    FindWindow('微信')
    time.sleep(1)
    # 点击你的头像
    pyautogui.moveTo(28, 56)
    pyautogui.click()
    time.sleep(1)
    # 用户信息截图
    userinfo = (20, 60, 319, 284)
    userinfo_img = ImageGrab.grab(userinfo)
    userinfo_img.save('userinfo.png')
    # 识别用户信息截图
    request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic"
    f = open('userinfo.png', 'rb')
    img = base64.b64encode(f.read())
    params = {"image": img}
    access_token = '24.21008e8b243c5b2864a7cf0583d907e1.2592000.1661322017.282335-24796078'
    request_url = request_url + "?access_token=" + access_token
    headers = {'content-type': 'application/x-www-form-urlencoded'}
    response = requests.post(request_url, data=params, headers=headers)
    if response:
        print(response.json())
    time.sleep(1)
    # 关闭微信窗口
    time.sleep(1)
    pyautogui.moveTo(683, 16)
    pyautogui.click()


# 获取好友微信的个人信息(昵称、微信号)
def GetFriendInfo(wxid):
    # 先启动微信
    FindWindow('微信')
    time.sleep(1)
    # 定位到搜索框
    pyautogui.moveTo(143, 39)
    pyautogui.click()
    # 搜索微信
    ClipboardText(wxid)
    time.sleep(1)
    # 进入聊天窗口
    pyautogui.moveTo(160, 93)
    pyautogui.click()
    time.sleep(1)
    # 点击右上角···
    pyautogui.moveTo(678, 43)
    pyautogui.click()
    time.sleep(1)
    pyautogui.moveTo(801, 51)
    pyautogui.click()
    # 用户信息截图
    userinfo = (802, 54, 1085, 331)
    userinfo_img = ImageGrab.grab(userinfo)
    userinfo_img.save('userinfo.png')
    # 识别用户信息截图
    request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic"
    f = open('userinfo.png', 'rb')
    img = base64.b64encode(f.read())
    params = {"image": img}
    access_token = '24.21008e8b243c5b2864a7cf0583d907e1.2592000.1661322017.282335-24796078'
    request_url = request_url + "?access_token=" + access_token
    headers = {'content-type': 'application/x-www-form-urlencoded'}
    response = requests.post(request_url, data=params, headers=headers)
    if response:
        print(response.json())
    time.sleep(1)
    # 关闭微信窗口
    time.sleep(1)
    pyautogui.moveTo(683, 16)
    pyautogui.click()
    pyautogui.click()


# 获取群人数
def GetCharRoomUserNum(groupname):
    # 先启动微信
    FindWindow('微信')
    time.sleep(1)
    # 定位到搜索框
    pyautogui.moveTo(143, 39)
    pyautogui.click()
    # 搜索群
    ClipboardText(groupname)
    time.sleep(1)
    # 进入群窗口
    pyautogui.moveTo(155, 120)
    pyautogui.click()
    # 群人数区域截图
    userinfo = (310, 0, 659, 47)
    userinfo_img = ImageGrab.grab(userinfo)
    userinfo_img.save('chatroom.png')
    # 识别群人数截图
    # 开发文档:[url=https://cloud.baidu.com/doc/OCR/s/Ck3h7y2ia]https://cloud.baidu.com/doc/OCR/s/Ck3h7y2ia[/url]
    request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic"
    f = open('chatroom.png', 'rb')
    img = base64.b64encode(f.read())
    params = {"image": img}
    access_token = '24.21008e8b243c5b2864a7cf0583d907e1.2592000.1661322017.282335-24796078'
    request_url = request_url + "?access_token=" + access_token
    headers = {'content-type': 'application/x-www-form-urlencoded'}
    response = requests.post(request_url, data=params, headers=headers)
    if response:
        print(response.json())
    time.sleep(1)
    # 关闭微信窗口
    time.sleep(1)
    pyautogui.moveTo(683, 16)
    pyautogui.click()


# 发布群公告
def AddGorupNotice(groupname, NoticeText):
    # 先启动微信
    FindWindow('微信')
    time.sleep(1)
    # 定位到搜索框
    pyautogui.moveTo(143, 39)
    pyautogui.click()
    # 搜索群
    ClipboardText(groupname)
    time.sleep(1)
    # 进入群窗口
    pyautogui.moveTo(155, 120)
    pyautogui.click()
    # 定位到群名称
    pyautogui.moveTo(363, 33)
    pyautogui.click()
    # 定位到群公告
    time.sleep(1)
    pyautogui.moveTo(731, 509)
    pyautogui.click()
    # 粘贴群公告内容
    ClipboardText(NoticeText)
    # 确认发布群公告
    time.sleep(1)
    pyautogui.moveTo(288, 500)
    pyautogui.click()
    pyautogui.moveTo(312, 297)
    pyautogui.click()


# 邀请好友进群
def ReqFriendsToGroup(groupname, wxid):
    # 先启动微信
    FindWindow('微信')
    time.sleep(1)
    # 定位到搜索框
    pyautogui.moveTo(143, 39)
    pyautogui.click()
    # 搜索群
    ClipboardText(groupname)
    time.sleep(1)
    # 进入群窗口
    pyautogui.moveTo(155, 120)
    pyautogui.click()
    # 定位到群名称
    pyautogui.moveTo(363, 33)
    pyautogui.click()
    # 定位到邀请
    time.sleep(1)
    pyautogui.moveTo(852, 300)
    pyautogui.click()
    # 搜索好友
    ClipboardText(wxid)
    # 发出邀请
    time.sleep(1)
    pyautogui.moveTo(232, 197)
    pyautogui.click()
    time.sleep(1)
    pyautogui.moveTo(493, 561)
    pyautogui.click()
    time.sleep(1)
    pyautogui.moveTo(395, 427)
    pyautogui.click()


# 获取好友最新的聊天记录
def GetChatRecord(wxid):
    # 先启动微信
    FindWindow('微信')
    time.sleep(1)
    # 搜索微信号
    pyautogui.moveTo(166, 38)
    pyautogui.click()
    ClipboardText(wxid)
    time.sleep(1)
    pyautogui.moveTo(197, 123)
    pyautogui.click()
    # 聊天内容区域截图
    userinfo = (314, 68, 683, 549)
    userinfo_img = ImageGrab.grab(userinfo)
    userinfo_img.save('chatrecord.png')
    # 识别当前聊天窗口截图
    # 开发文档:[url=https://cloud.baidu.com/doc/OCR/s/Ck3h7y2ia]https://cloud.baidu.com/doc/OCR/s/Ck3h7y2ia[/url]
    request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic"
    f = open('chatrecord.png', 'rb')
    img = base64.b64encode(f.read())
    params = {"image": img}
    access_token = '24.21008e8b243c5b2864a7cf0583d907e1.2592000.1661322017.282335-24796078'
    request_url = request_url + "?access_token=" + access_token
    headers = {'content-type': 'application/x-www-form-urlencoded'}
    response = requests.post(request_url, data=params, headers=headers)
    if response:
        print(response.json())


# 置顶群或好友
def SetTop(groupname_wxid):
    # 先启动微信
    FindWindow('微信')
    time.sleep(1)
    # 定位到搜索框
    pyautogui.moveTo(143, 39)
    pyautogui.click()
    # 搜索群或好友
    ClipboardText(groupname_wxid)
    time.sleep(1)
    # 进入窗口
    pyautogui.moveTo(155, 120)
    pyautogui.click()
    # 打开设置
    pyautogui.moveTo(684, 38)
    pyautogui.click()
    time.sleep(1)
    # 置顶
    pyautogui.moveTo(914, 227)
    pyautogui.click()
    time.sleep(1)
    pyautogui.moveTo(682, 18)
    pyautogui.click()
    print('已将' + str(groupname_wxid) + '置顶')


# 添加微信
def AddWx(wxid):
    # 先启动微信
    FindWindow('微信')
    time.sleep(1)
    # 定位到添加微信位置
    pyautogui.moveTo(25, 151)
    pyautogui.click()
    time.sleep(1)
    pyautogui.moveTo(278, 39)
    pyautogui.click()
    time.sleep(1)
    pyautogui.moveTo(153, 39)
    pyautogui.click()
    time.sleep(1)
    # 搜索微信号
    ClipboardText(wxid)
    time.sleep(1)
    pyautogui.moveTo(183, 91)
    pyautogui.click()
    time.sleep(2)
    # 对搜索微信号结果进行截图
    userinfo = (306, 68, 565, 240)
    userinfo_img = ImageGrab.grab(userinfo)
    userinfo_img.save('addwx.png')
    # 对搜索微信号结果进行识别
    # 开发文档:[url=https://cloud.baidu.com/doc/OCR/s/Ck3h7y2ia]https://cloud.baidu.com/doc/OCR/s/Ck3h7y2ia[/url]
    request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic"
    f = open('addwx.png', 'rb')
    img = base64.b64encode(f.read())
    params = {"image": img}
    access_token = '24.21008e8b243c5b2864a7cf0583d907e1.2592000.1661322017.282335-24796078'
    request_url = request_url + "?access_token=" + access_token
    headers = {'content-type': 'application/x-www-form-urlencoded'}
    response = requests.post(request_url, data=params, headers=headers)
    if response:
        print(response.json())
    # 添加
    time.sleep(1)
    pyautogui.moveTo(435, 203)
    pyautogui.click()
    time.sleep(1)
    pyautogui.moveTo(300, 621)
    pyautogui.click()
    time.sleep(1)
    pyautogui.moveTo(278, 37)
    pyautogui.click()
    print('已向' + str(wxid) + '发送添加好友请求')
    pyautogui.moveTo(682, 18)
    pyautogui.click()

# 发送文本消息(微信号或微信昵称或备注,需要发送的文本消息)
SendWxMsg('文件传输助手','Python发送微信消息')

# 发送文件消息(图片、文档、压缩包等)
# SendWxFileMsg('微信号',r"文件路径")

# 转发群里最新的一条消息(微信号或微信昵称或备注,群名称)
# ZhuanfaMsg('微信号','群名称')

# 获取你的个人信息(昵称、微信号)
# GetYourInfo('微信号')

# 获取好友微信的个人信息(昵称、微信号)
# GetFriendInfo('微信号')

# 获取微信群人数
# GetCharRoomUserNum('群名称')

# 发布群公告
# AddGorupNotice('群名称','Python发布群公告')

# 邀请好友进群
# ReqFriendsToGroup('群名称','cbzqx88')

# 获取好友最新的聊天记录
# GetChatRecord('微信号')

# 置顶群或好友
# SetTop('微信号')

# 添加微信
# AddWx('微信号')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/574638.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

网盘——文件重命名

文件重命名具体步骤如下: 目录 1、具体步骤 2、代码实现 2.1、添加重命名文件的槽函数 2.2、关联重命名文件夹信号槽 2.3、添加重命名文件的协议 2.4、添加槽函数定义 2.5、服务器 2.6、添加重命名文件的case 2.7、客户端接收回复 3、测试 3.1、点击重命…

【AIGC调研系列】Bunny-Llama-3-8B-V与其他多模态大模型相比的优劣

Bunny-Llama-3-8B-V作为基于Llama-3的多模态大模型,其优势主要体现在以下几个方面: 性能超越其他模型:根据我搜索到的资料,Bunny-Llama-3-8B-V在多个主流Benchmark上表现良好,超越了LLaVA-7B、LLaVA-13B、Mini-Gemini…

汽车企业安全上网解决方案

需求背景 成立于1866年的某老牌汽车服务独立运营商,目前已经是全球最大的独立汽车服务网络之一,拥有95年的历史,在全球150多个国家拥有17,000多个维修站,始终致力于为每一位车主提供高品质,可信赖的的专业汽车保养和维…

智慧文旅:引领旅游产业智慧升级的创新模式

一、智慧文旅是什么? 智慧文旅是指以当地特色文化为核心,借助现代科技手段,实现旅游景区全面智慧升级的旅游模式。在智慧文旅中,新一代信息网络技术和装备得到充分运用,文化旅游基础设施得到新建和改善,特…

OpenCV鼠标绘制线段

鼠标绘制线段 // 鼠标回调函数 void draw_circle(int event, int x, int y, int flags, void* param) {cv::Mat* img (cv::Mat*)param;if (event cv::EVENT_LBUTTONDBLCLK){cv::circle(*img, cv::Point(x, y), 100, cv::Scalar(0, 0, 255), -1);} }// 鼠标回调函数 void dra…

牛客NC199 字符串解码【中等 递归,栈的思想 C++/Java/Go/PHP】

题目 题目链接: https://www.nowcoder.com/practice/4e008fd863bb4681b54fb438bb859b92 相同题目: https://www.lintcode.com/problem/575 思路 解法和基础计算器1,2,3类似,递归参考答案C struct Info {string str;int stopindex;Info(str…

react —— useState 深入

基础用法 useState Hook 提供了这两个功能: State 变量 在第一次重新渲染期间,这将具有作为参数传递的值State setter 函数 set 函数将允许将状态的值更新为不同的值,如果 set 函数中提供的值不同,则将触发重新渲染。 注意&…

【网站项目】书籍销售系统小程序

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

如何3分钟,快速开发一个新功能

背景 关于为什么做这个代码生成器,其实主要有两点: 参与的项目中有很多分析报表需要展示给业务部门,公司使用的商用产品,或多或少有些问题,这部分可能是历史选型导致的,这里撇开不不谈;项目里面也有很多C…

torch.cuda.is_avaliable()在命令行里是true,pycharm是false【省流:换Pycharm】

我的问题: 1、torch.cuda.is_avaliable()在命令行里是true,但是pycharm是false 2、pycharm选择pytorch所在的解释器,加载失败。 3、pytorch所在的解释器加载成功,但是里边的torch包莫名消失。 解决方法: 在调试了很…

SpringBoot+RabbitMQ实现MQTT协议通讯

一、简介 MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在 TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议,为此,它需要一个消息中间件 。此…

数据结构之堆

片头 嗨! 小伙伴们,上一篇中,我们学习了队列相关知识,今天我们来学习堆这种数据结构,准备好了吗? 我们开始咯 ! 一、堆 1.1 堆的概念 堆(Heap)是一种特殊的树,如果将一个集合中的所有元素按照完全二叉树的顺序存储方式存储在一个一维数组中,并满足一定…

物联网:从电信物联开发平台AIoT获取物联设备上报数据示例

设备接入到电信AIoT物联平台后,可以在平台上查询到设备上报的数据。 下面就以接入的NBIOT物联远传水表为例。 在产品中选择指定设备,在数据查看中可以看到此设备上报的数据。 示例中这组数据是base64位加密的,获取后还需要转换解密。 而我…

Oceanbase体验之(一)运维管理工具OCP部署(社区版4.2.2)

资源规划建议 ocp主机1台 内存:64G CPU1:2C及以上 硬盘大于500G observer服务器3台 内存32G CPU:4C以上 硬盘大于1T 建议存储硬盘与操作系统硬盘隔开实现IO隔离 一、OBD、OCP安装包准备 [rootobserver /]# chown -R admin:admin /software/ [rootobserver /]# …

【ensp实验】Telnet 协议

目录 Telnet 协议 telnet协议特点 Telnet实验 ​编辑 不使用console口 三种认证模式的区别 Telnet 协议 Telnet 协议是 TCP/IP 协议族中的一员,是 Internet 远程登录服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用…

【Leetcode每日一题】 穷举vs暴搜vs深搜vs回溯vs剪枝_全排列 - 子集(难度⭐⭐)(65)

1. 题目解析 题目链接:78. 子集 这个问题的理解其实相当简单,只需看一下示例,基本就能明白其含义了。 2.算法原理 算法思路详解: 为了生成数组 nums 的所有子集,我们需要对数组中的每个元素进行“选择”或“不选择…

三星电脑文件夹误删了怎么办?恢复方案在此

在使用三星电脑的过程中,我们可能会不小心删除了某个重要的文件夹,其中可能包含了工作文件、家庭照片、视频或其他珍贵的数据。面对这种突发情况,不必过于焦虑。本文将为您提供几种有效的恢复方案,希望能帮助您找回误删的文件夹及…

微软ML Copilot框架释放机器学习能力

摘要:大模型席卷而来,通过大量算法模型训练推理,能根据人类输入指令产生图文,其背后是大量深度神经网络模型在做运算,这一过程称之为机器学习,本文从微软语言大模型出发,详解利用大型语言模型&a…

【鸿蒙应用】理财App

目录 第一节项目讲解项目介绍 第二节:项目创建登录静态框架编写登录页面设稿新建项目控制台添加项目Login页面封装标题组件 第三节:登录页静态表单编写第四节—内容页架构分析底部栏组件第五节—底部栏组件切换第六节:首页静态页编写第七节&a…

【中级软件设计师】上午题12-软件工程(2):单元测试、黑盒测试、白盒测试、软件运行与维护

【中级软件设计师】上午题12-软件工程(2) 1 系统测试1.1 单元测试1.2 集成测试1.2.1 自顶向下1.2.2 自顶向上1.2.3 回归测试 2 测试方法2.1 黑盒测试2.1.1 McCabe度量法 2.2 白盒测试2.2.1 语句覆盖-“每个流程”执行一次2.2.2 判定覆盖2.2.3 条件覆盖-A…