小玩意儿使用Python自动化发送微信消息进行订水

Posted 不想秃头的晨晨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小玩意儿使用Python自动化发送微信消息进行订水相关的知识,希望对你有一定的参考价值。

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

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

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

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

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

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

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

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

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

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

 # coding=utf8
import pyautogui
import pyperclip
import time

contacter = "订水"
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自动化发送微信消息进行订水的主要内容,如果未能解决你的问题,请参考以下文章

itchat发送微信文本消息文件等python

Python 小程序-微信AI自动回复

python怎样给微信发送

Python博客信息爬取-微信消息自动发送

python调用企业微信api实现发送群机器人消息实例

微信小程序发送通知给他人