如何写一个脚本自动化发消息(完整实战指南)

📖 目录导读
- 自动化发消息的应用场景
- 核心工具与语言选择(Python vs 其他)
- 三步搭建基础脚本框架
- 关键防封与安全策略
- 实战案例:企业微信/钉钉自动提醒
- 常见错误与解决方案
- 问答:新手最常问的5个问题
自动化发消息的应用场景
在企业运营、个人工作中,经常需要重复发送通知、提醒或营销内容,常见场景包括:
- 电商客服:自动回复订单状态、物流更新
- 社群运营:定时推送活动信息
- IT运维:服务器异常告警
- 个人提醒:纪念日、待办事项弹窗
核心痛点:手动操作耗时、易遗漏,且无法保证时效性。
解决方案:用脚本模拟人工操作,实现精准、批量发送。
核心工具与语言选择
1 推荐语言:Python(理由如下)
- 库生态丰富:支持微信(itchat/uiautomation)、钉钉(dingtalk-sdk)、Telegram(python-telegram-bot)
- 跨平台:Windows/Mac/Linux均可运行
- 学习成本低:语法简洁,适合脚本快速开发
2 其他可选方案
| 工具 | 适用场景 | 缺点 |
|---|---|---|
| AutoIt | Windows GUI自动化 | 仅限Windows |
| Selenium | 网页端消息(如网站客服) | 需驱动浏览器 |
| Node.js | 实时消息(如WebSocket) | 回调处理较复杂 |
推荐方向:若需对接微信/钉钉,优先Python + uiautomation(模拟键盘鼠标)或API接口(企业版)。
三步搭建基础脚本框架
第一步:明确目标接口
- API型(如企业微信机器人):需获取Webhook URL,通过HTTP POST发送JSON数据。
- GUI模拟型(如个人微信):使用
uiautomation库定位窗口控件,模拟点击和输入。
第二步:编写核心逻辑
# 示例:企业微信机器人发送消息
import requests
import json
def send_wecom_msg(webhook_url, content):
headers = {'Content-Type': 'application/json'}
data = {
"msgtype": "text",
"text": {
"content": content
}
}
response = requests.post(webhook_url, headers=headers, data=json.dumps(data))
return response.json()
# 使用
send_wecom_msg("https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx", "今日待办事项:1. 提交周报 2. 会议提醒")
第三步:添加循环与条件
- 定时触发:结合
schedule库(如每天9点自动发送)。 - 条件触发:检测文件更新、网页内容变化后发送。
import schedule
import time
def job():
send_wecom_msg(webhook_url, "定时提醒:午休时间到!")
schedule.every().day.at("12:00").do(job)
while True:
schedule.run_pending()
time.sleep(1)
关键防封与安全策略
1 账号风控(微信/钉钉个人号)
- 模拟人类行为:每次操作间隔2-5秒,随机延迟。
- 避免高频发送:同一账号每分钟不超过5条消息。
- 不点击/不回复:脚本仅发送不互动,降低识别风险。
2 数据脱敏 涉及用户手机号、身份证,需先加密或脱敏。
- 推荐使用
hashlib对敏感字段做单向哈希。
3 错误处理
try:
response = requests.post(...)
response.raise_for_status()
except requests.exceptions.RequestException as e:
print(f"发送失败:{e}")
# 可写入日志文件
实战案例:企业微信/钉钉自动提醒
场景:将服务器资源告警推送到钉钉群
步骤:
- 在钉钉群添加自定义机器人,获取Webhook地址。
- 编写Python脚本监控CPU使用率:
import psutil import requests
def check_cpu():
usage = psutil.cpu_percent(interval=1)
if usage > 80:
send_dingtalk_msg("【告警】CPU使用率已超过80%,当前值:" + str(usage))
def send_dingtalk_msg(content):
url = "https://oapi.dingtalk.com/robot/send?access_token=xxx"
data = {
"msgtype": "text",
"text": {"content": content}
}
requests.post(url, json=data)
循环检查
while True:
check_cpu()
time.sleep(60)
---
## 6. 常见错误与解决方案
| 错误现象 | 原因 | 解决方法 |
|---------------------------|---------------------------|------------------------------|
| **消息发送无响应** | Webhook URL错误 | 检查地址是否包含`key=`参数 |
| **微信窗口无法定位控件** | 窗口标题或类名变化 | 使用`uiautomation.Inspect`抓取当前属性 |
| **脚本运行后闪退** | 缺少依赖库或权限不足 | 使用虚拟环境,以管理员身份运行 |
| **被平台临时封禁** | 发送频率过高或被举报 | 降低频率,更换IP或账号 |
---
## 7. 问答:新手最常问的5个问题
### Q1:脚本自动化发消息会被封号吗?
**A**:取决于平台规则和频率。**个人微信**严禁使用自动化工具,一旦检测到会限制登录。**企业版**(企业微信、钉钉)有官方API,合规使用不会封禁,建议优先使用API接口。
### Q2:我不会编程,能直接使用脚本吗?
**A**:可以,许多开发者已开源现成脚本(GitHub搜索`WeChat-AutoSend`),只需修改配置(Webhook地址、消息内容),若需定制功能,建议学习Python基础语法(2-3天可入门)。
### Q3:如何定时发送消息?
**A**:使用`schedule`库是最简单方案,若需更复杂调度(如每月最后一天),可搭配`cron`(Linux)或`Task Scheduler`(Windows)。
### Q4:脚本能在手机上运行吗?
**A**:可以,使用`Termux`(Android)运行Python脚本,或通过`Auto.js`(Android)模拟点击,但iOS限制较多,建议通过API远程调用。
### Q5:消息内容包含表情或图片怎么处理?
**A**:API接口支持Markdown格式(如钉钉`msgtype=markdown`),GUI模拟时,可将图片路径填入键盘快捷键(如`Ctrl+V`粘贴)。
---
***:自动化发消息的本质是“用机器替代重复劳动”,从明确接口、编写核心逻辑,到加入防封策略和异常处理,每一步都不复杂,关键在于**选择合规平台**(优先API)、**控制发送频率**,以及**做好日志记录**,打开你的Python环境,尝试发送第一条自动化消息吧!