Python 操控企业微信群机器人

Python016

Python 操控企业微信群机器人,第1张

企业微信群机器人常用来作为通知工具,群发消息给群内成员,充当小助手的角色。但若按照官方 API 文档来构建请求,也确实不太方便。本文通过 Python 第三方库来控制企业微信群机器人发送消息。

添加机器人之后,可以获取到 webhook 地址,假设 webhook 是: https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=633a31f6-7f9c-4bc4-97a0-0ec1eefa589

webhook 中的 633a31f6-7f9c-4bc4-97a0-0ec1eefa589 就是 Robot Key

发送纯文本消息

发送 Markdown 格式消息

发送图片

还支持直接发送一个在线的图片

发送图文

该第三方库还提供了命令行工具供用户执行,即使不会 Python 也能便捷的使用。

对参数进行一下说明:

说明:

发送文本消息,可以直接指定字符串内容:

也可以指定文本文件:

发送 markdown 格式的消息:

发送图片:

发送图文消息:

import os

import win32gui #pywin32-221.win-amd64-py3.7.exe

import win32con

from ctypes import *

import win32clipboard as w

import time

from PIL import Image #pip install pillow

import win32api

def setText(info):

w.OpenClipboard()

w.EmptyClipboard()

w.SetClipboardData(win32con.CF_UNICODETEXT, info)

w.CloseClipboard()

def setImage(imgpath):

im = Image.open(imgpath)

im.save('1.bmp')

aString = windll.user32.LoadImageW(0, r"1.bmp", win32con.IMAGE_BITMAP, 0, 0, win32con.LR_LOADFROMFILE)

def m_click(x,y):

win32api.SetCursorPos((x,y))

win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,x,y,0,0)

win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,x,y,0,0)

def pasteInfo():

win32api.keybd_event(17,0,0,0) #ctrl键位码是17

win32api.keybd_event(86,0,0,0) #v键位码是86

win32api.keybd_event(86,0,win32con.KEYEVENTF_KEYUP,0) #释放按键

win32api.keybd_event(17,0,win32con.KEYEVENTF_KEYUP,0)

def searchByUser(uname):

hwnd = win32gui.FindWindow('WeChatMainWndForPC', '微信')

setText(uname)

m_click(100,40)

time.sleep(0.5)

m_click(100,40)

pasteInfo()

time.sleep(1)

m_click(100,120)#搜索到之后点击

#win32api.keybd_event(13,0,0,0)#回车

#win32api.keybd_event(13,0,KEYEVENTF_KEYUP,0)

#win32gui.SendMessage(hwnd, win32con.WM_KEYDOWN, win32con.VK_RETURN, 0)

#win32gui.SendMessage(hwnd, win32con.WM_KEYUP, win32con.VK_RETURN, 0)

def sendInfo():

time.sleep(1)

pasteInfo()

time.sleep(1)

win32api.keybd_event(18, 0, 0, 0) #Alt

win32api.keybd_event(83,0,0,0) #s

win32api.keybd_event(83,0,win32con.KEYEVENTF_KEYUP,0) #释放按键

win32api.keybd_event(18,0,win32con.KEYEVENTF_KEYUP,0)

def closeByUser(uname):

hwnd = win32gui.FindWindow('WeChatMainWndForPC', '微信')

win32api.keybd_event(18,0,0,0) #Alt

win32api.keybd_event(115,0,0,0) #F4

win32api.keybd_event(115,0,KEYEVENTF_KEYUP,0)

win32api.keybd_event(18,0,KEYEVENTF_KEYUP,0)

'''

searchByUser('Tony老师')

setText('Tony老师理发师')

sendInfo()

time.sleep(1)

searchByUser('文件传输助手')

setText('地表最强CPU')

sendInfo()

'''

def getNosuffixImgName(imgname):

return os.path.splitext(imgname)[0]

imgdir='imgs/'

imgs=os.listdir(imgdir)

for img in imgs:

searchByUser(getNosuffixImgName(img))

setImage(imgdir+img)

sendInfo()

time.sleep(1)

http://www.manongjc.com/detail/22-xfnkrxxytyxkisz.html