龙空技术网

矿泉水喝完了,如何用python自动发送微信消息?

python数据分析 187

前言:

此时看官们对“python群发微信消息”都比较关切,小伙伴们都需要知道一些“python群发微信消息”的相关文章。那么小编也在网摘上网罗了一些关于“python群发微信消息””的相关资讯,希望你们能喜欢,我们快快来学习一下吧!

事情是这样的,我知道淘宝上有卖一种USB接口的大按钮,估计是给工厂或者医院之类的场景设计的,样子长这样:

然后我就一直挺想搞一个的,不为别的,就是玩,但是想来想去也没想到这玩意儿对我而言能有啥用途,就暂且搁置了这个想法。直到这几周来,每次发现办公室桶装矿泉水被喝完了之后,都需要微信通知订水师傅来送水,就萌生了个想法,我何不搞个夸张的大按钮,每次订水的时候直接拍一下按钮然后自动发送消息呢?

然后就是可行性研究,需要确认的地方有这些:

1. 如何实现自动发送微信消息?

2. 如果第一步可以,那如何通过这个按钮调用我写好的自动发消息的脚本?

关于如何发送微信消息这里,我粗略的查了下,发现微信这个坏东西比QQ还要严,压根不存在QQ机器人这类的框架或工具的,网页版微信也早就被抛弃了,没有API可以调用(其实也正常,真要出个能模拟用户的API,黑产不乐疯了)。那么咋办呢?

答案是Python的pyautogui图像自动化库。

哎呀,虽然以前就听说过什么“人生苦短,我用Python”这类的话,但是之前也没咋认真接触过,而这不看则已,一看惊人啊,这个Python的图像自动化库简直神器,完美契合了我的需求,他可以根据你提供的图片,自动在屏幕上寻找相似的地方,然后返回坐标,得到目标的具体坐标了岂不是什么都能干了。

第二个问题则更好解决,找一个可以自定义快捷键的大按钮即可。

然后就在网上找pyautogui这个库的代码,依葫芦画瓢的写了一个打开微信并发送消息的脚本:

# coding=utf8import pyautoguiimport pyperclipimport timecontacter = "订水"msg = '送两桶水,麻烦收到回复'#打开微信location=pyautogui.locateCenterOnScreen('WeChat.png',confidence=0.9)if location is not None:    print('打开微信')    pyautogui.click(location.x,location.y,clicks=1,interval=0,duration=0.2,button='left')    #搜索订水    location=pyautogui.locateCenterOnScreen('search.png',confidence=0.7)    if location is not None:        print('搜索用户')        pyautogui.click(location.x,location.y,clicks=1,interval=0,duration=0.2,button='left')        pyperclip.copy(contacter)        pyautogui.hotkey('ctrl', 'v')        time.sleep(1)        #打开聊天窗口,输入文字        location=pyautogui.locateCenterOnScreen('contacter.png',confidence=0.7)        if location is not None:            print("打开聊天框")            pyautogui.click(location.x,location.y,clicks=1,interval=0,duration=0.2,button='left')            #time.sleep(1)            #焦点在输入框,输入文字                        location=pyautogui.locateCenterOnScreen('input.png',confidence=0.7)            if location is not None:                print("输入文字并发送")                pyautogui.click(location.x,location.y,clicks=1,interval=0,duration=0.2,button='left')                pyperclip.copy(msg)                pyautogui.hotkey('ctrl', 'v')                pyautogui.press('enter')print("结束")

关于发送消息的那个地方,这个库就有些力不从心了,因为他能提供的功能是模拟鼠标和键盘的操作,但是打字嘛...特别是用拼音打出汉字,真就得输入拼音然后加空格,通过输入法打出来,而这个办法实际上不是很稳定。

那么什么办法实现汉字的输入呢?那自然是我们最熟悉的Ctrl+C、Ctrl+V了。

而Python还有个库(pyperclip)就提供了Windows剪贴板的功能,可以将字符串复制进剪贴板,然后就可以调用这个自动化库pyautogui里面的热键方法来触发Ctrl+V,将复制到的文字粘贴到目标位置。

至此,代码上的准备工作已经结束,保存后创建一个快捷方式,设置为Ctrl+数字键盘上的减号键。

然后将淘宝来的这个大按钮接到电脑上,设置这个按钮触发上述的快捷键,到此就大功告成了。

标签: #python群发微信消息