侧边栏壁纸
  • 累计撰写 57 篇文章
  • 累计创建 37 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

如何实现某个程序完成后推送到微信?

nankle
2025-04-16 / 0 评论 / 0 点赞 / 4 阅读 / 72950 字
温馨提示:
本文最后更新于 2025-04-18,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

来源:https://metaso.cn/search/8600647639133773824/interactive?dataId=8600647639255408640&targetType=undefined

微信推送功能概述

本指南详细介绍了如何使用Python脚本执行完成后,将结果推送到微信的多种实现方式。我们将探讨不同方案的优缺点、适用场景以及具体实现步骤,帮助您选择最适合您需求的方案。

实现方式选择与对比

方案

优点

缺点

适用场景

企业微信API

接口稳定,支持复杂消息类型

需注册企业微信账号

企业级应用,高频推送

微信公众号API

用户无需单独添加企业微信

需认证服务号,开发流程复杂

面向普通用户的通知

Server酱等第三方

无需开发,快速接入

依赖第三方服务,消息格式受限

个人或小规模推送

itchat库

直接操作微信客户端

可能封号,稳定性差

临时测试或非关键场景

具体实现步骤

方案1:使用Server酱(第三方服务)

步骤说明:

  1. 注册并绑定微信:访问Server酱官网,用GitHub账号登录。扫描二维码绑定微信,获取SendKey。

  2. Python脚本集成:使用requests库发送HTTP POST请求到Server酱API,传递消息内容。

Python代码示例:

import requests

def send_wechat(msg):
    send_key = "你的SendKey"  # 替换为实际值
    url = f"https://sctapi.ftqq.com/{send_key}.send"
    data = {"title": "脚本执行结果", "desp": msg}
    response = requests.post(url, data=data)
    return response.json()

# 脚本执行完成后调用
result = "任务完成,耗时5分钟"
send_wechat(result)复制

注意事项:

  • 免费版每日限额5条,企业版需付费。

  • 消息可能延迟1-3分钟,不适合实时性要求高的场景。

方案2:企业微信机器人(推荐)

步骤说明:

  1. 创建企业微信群机器人:在企业微信中创建群聊,右键群名选择【添加群机器人】。设置机器人名称,复制生成的Webhook URL。

  2. Python脚本集成:使用requests库发送HTTP POST请求到Webhook URL,传递消息内容。

Python代码示例:

import requests
import json

def send_wechat_robot(message):
    webhook_url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=你的KEY"
    headers = {"Content-Type": "application/json"}
    data = {
        "msgtype": "text",
        "text": {"content": message}
    }
    response = requests.post(webhook_url, headers=headers, data=json.dumps(data))
    return response.json()

# 调用示例
send_wechat_robot("脚本执行成功:数据已更新至数据库")复制

高级消息格式(支持Markdown/图文):

data = {
    "msgtype": "markdown",
    "markdown": {
        "content": "**任务报告**\n> 状态: 成功\n> 耗时: 5分钟\n[查看详情]"
    }
}复制

注意事项:

  • 频率限制:每分钟最多20条消息。

  • 安全性:Webhook URL泄露可能导致垃圾消息,需定期更换KEY。

方案3:微信公众号API(服务号)

步骤说明:

  1. 注册服务号并认证:在微信公众平台注册服务号,完成企业认证(费用300元/年)。

  2. 获取API权限:在【开发】→【基本配置】中获取AppID和AppSecret。启用【客服消息】接口权限。

  3. Python代码实现:使用requests库获取access_token,然后发送客服消息。

Python代码示例:

import requests

def get_access_token(appid, secret):
    url = f"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={appid}&secret={secret}"
    response = requests.get(url).json()
    return response.get("access_token")

def send_custom_message(openid, message):
    token = get_access_token("你的AppID", "你的AppSecret")
    url = f"https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token={token}"
    data = {
        "touser": openid,
        "msgtype": "text",
        "text": {"content": message}
    }
    return requests.post(url, json=data).json()

# 调用示例(需用户关注公众号并获取其openid)
send_custom_message("用户OPENID", "脚本执行完成")复制

关键限制:

  • 客服消息:用户需在48小时内与公众号互动,否则无法推送。

  • 频率限制:单个用户每分钟最多接收5条消息。

方案4:使用itchat库(个人微信)

步骤说明:

  1. 安装库并登录:使用pip安装itchat库,然后扫码登录微信。

  2. 指定用户推送:通过好友备注名查找好友,然后发送消息。

Python代码示例:

# 安装库
# pip install itchat

import itchat

# 扫码登录
itchat.auto_login(hotReload=True)

# 发送给文件助手
itchat.send("脚本完成", toUserName="filehelper")

# 指定用户推送
friend = itchat.search_friends(name='好友备注')[0]
friend.send("你的任务已处理完毕")复制

风险提示:

  • 微信可能封禁频繁登录的账号。

  • 不适合生产环境,仅建议临时测试使用。

安全与频率限制规避建议

消息内容合规

避免敏感词(如"中奖""转账"),防止触发微信风控。

频率控制

企业微信机器人:每分钟≤20条,可设置time.sleep(3)间隔发送。公众号API:用户维度限流,建议重要消息优先发送。

备用通道

结合邮件或短信通知,作为微信推送失败的补偿方案。

方案选型总结

需求场景

推荐方案

理由

个人/测试用途

Server酱

无需开发,5分钟快速接入

企业内部通知

企业微信机器人

稳定性高,支持复杂消息类型

面向客户的正式通知

服务号API

专业性强,用户无需额外操作

临时调试

itchat库

代码简单,但需承担封号风险

根据实际需求选择合适方案,优先考虑企业微信机器人或Server酱以实现平衡的开发成本与稳定性。

我的选择

Server酱

免费版每天限制5条

def send_wechat(title, msg):
    send_key = "SCT77408TERSce*********IoUJ2"  # 替换为实际值
    url = f"https://sctapi.ftqq.com/{send_key}.send"
    data = {"title": {title}, "desp": msg}
    response = requests.post(url, data=data)
    print(f"微信通知返回:{response}")
    return response.json()

iyuu

免费版每小时限制20条

def send_wechat(title, msg):
    send_key = "IYUU22916T430************1716af0927d761a980dae79"  # 替换为实际值
    url = f"https://iyuu.cn/{send_key}.send"
    data = {"text": {title}, "desp": msg}
    response = requests.post(url, data=data)
    print(f"微信通知返回:{response}")
    return response.json()

这两个方式都基本差不多,区别在于url地址和标题的关键词

也可以通过curl方式推送

curl -X POST https://iyuu.cn/IYUU22916T4301a5e1b764a89011716af0927d761a980dae79.send \
     -H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" \
     -d "text=测试" \
     -d "desp=内容"

也有get方式,适合很短的通知词,太长不支持

0

评论区