首页 > 编程语言 >如何用程序向微信发送消息,实现程序的运行监控

如何用程序向微信发送消息,实现程序的运行监控

时间:2024-06-13 10:56:30浏览次数:27  
标签:微信 程序 json 发送 token template res config id

程序如下

import requests
import json
import os
def get_token(appID,appsecret):
    url_token = 'https://api.weixin.qq.com/cgi-bin/token?'
    res = requests.get(url=url_token,params={
             "grant_type": 'client_credential',
             'appid':appID,
             'secret':appsecret,
             }).json()
    # print(res)
    token = res.get('access_token')
    # print(res)
    return token
#读取配置文件
def rdconfig(filename):
    if (os.path.exists(filename)):
        with open(filename,"r") as f:
            config = json.load(f)
            # print("读取配置文件完成...")
            return config
    else:
        print('初始化配置文件')
        with open(filename, "w") as f:
            appID = input('appID:')
            appsecret = input('appsecret:')
            userid = input('userid:')
            template_id = input('template_id:')
            token = get_token(appID, appsecret)
            res = {"appID":appID,"appsecret":appsecret,"token":token,"userid":userid,"template_id":template_id}
            res = json.dumps(res)
            f.write(str(res))
            f.close()
#写入配置文件
def wrconfig(new_dict,filename):
    with open(filename, "w") as f:
        json.dump(new_dict, f)
    # print("写入配置文件完成...")
def sendtext(token,userID,text):
    url_msg = 'https://api.weixin.qq.com/cgi-bin/message/custom/send?'
    body = {
        "touser": "xxx",  # 这里必须是关注公众号测试账号后的用户id
        "msgtype": "text",
        "text": {
            "content": text
        }
    }
    res = requests.post(url=url_msg, params={
        'access_token': token  # 这里是我们上面获取到的token
    }, data=json.dumps(body, ensure_ascii=False).encode('utf-8'))
    return res
def sendmb(token,template_id,userID,text,color):
    url_msg = 'https://api.weixin.qq.com/cgi-bin/message/template/send?'
    body = {
        "touser": "xxx",  # 这里必须是关注公众号测试账号后的用户id
        "template_id": template_id,
        "url": "http://weixin.qq.com/download",
        "topcolor": color,
        "data": {
            "text":{
                "value": text,
                "color": color
            }
        }
    }
    res = requests.post(url=url_msg, params={
        'access_token': token  # 这里是我们上面获取到的token
    }, data=json.dumps(body, ensure_ascii=False).encode('utf-8'))
    return res
def send(text):
    config = rdconfig('token.json')

    print(config)
    userID = config['userid']
    template_id =config['template_id']
    res = sendtext(config['token'],userID,text)
    if(res.json()['errcode']==42001): # token两小时过期后重新获取
        config['token']=get_token(config['appID'],config['appsecret'])
        wrconfig(config,'token.json')
        res = sendtext(config['token'],userID,text)
    if(res.json()['errcode']==45047): # 客服消息如果长时间不回复将不能发,这边先换成模板消息
        res = sendmb(config['token'],template_id,userID,text+'(请及时回复以免消息发送失败)','#FF0000')
    return res.json()
# print(send('程序开始'))


上述代码运行后需要appID ,appsecret ,userid, template_id依次填入控制台,然后生成一个josn,之后就不用管了。
appID ,appsecret ,userid, template_id在:
申请好后会得到 applD 和 appsecret
userid 为关注公众号的用户id(扫码关注后随便发送一条消息)
template_id 为模板id(新增测试模板后会得到一个id)
模板如下所示

后续只需要在其他程序调用:

# -*- coding: utf-8 -*-
from test import send  # 我上面的程序文件名叫test

try:
    #里面写要监控的程序
    send('111')
except Exception as e:
    send('程序异常\n', + str(e))

标签:微信,程序,json,发送,token,template,res,config,id
From: https://www.cnblogs.com/nanguyhz/p/18245420

相关文章

  • Springboot计算机毕业设计影院订票选座微信小程序【附源码】开题+论文+mysql+程序+部
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着移动互联网的快速发展,人们的生活方式发生了深刻变化,特别是在娱乐消费领域。电影院作为重要的文化娱乐场所,其订票方式也逐渐从传统的线下购票转向......
  • Springboot计算机毕业设计影院购票微信小程序【附源码】开题+论文+mysql+程序+部署
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在当今数字化时代,移动互联网的普及率日益提升,智能手机成为人们生活中不可或缺的工具。微信小程序,作为一种轻量级应用,凭借其便捷性和易用性,受到了广大......
  • ab压测 ab会模拟10个并发用户向网站发送总共100个HTTP GET请求
    ab-n100-c10https://yiyan.baidu.com/-n100:指定总共要发送的请求数,这里是100个请求。-c10:指定并发用户数,即同时有多少个用户(或连接)在发送请求,这里是10个并发用户。https://www.163.com/:要测试的HTTPS服务器的URL。执行这个命令后,ab会模拟10个并发用户向https://w......
  • Springboot计算机毕业设计英语学习课程微信小程序【附源码】开题+论文+mysql+程序+部
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着移动互联网的迅猛发展,微信已成为人们生活中不可或缺的一部分。微信小程序作为微信生态系统的重要组成部分,以其便捷性、即用即走的特点,受到了广大......
  • Springboot计算机毕业设计英语学习小程序【附源码】开题+论文+mysql+程序+部署
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在全球化的大背景下,英语作为国际通用语言,其重要性不言而喻。然而,传统的英语学习方式往往受到时间、地点和资源的限制,使得学习者难以获得高效、便捷的......
  • 初始MyBatis ,详细步骤运行第一个MyBatis程序,同时对应步骤MyBatis底层剖析
    1.初始MyBatis,详细步骤运行第一个MyBatis程序,同时对应步骤MyBatis底层剖析@目录1.初始MyBatis,详细步骤运行第一个MyBatis程序,同时对应步骤MyBatis底层剖析每博一文案2.前沿知识2.1框架(framework)2.2三层架构2.3分析JDBC的缺点3.初始了解MyBatis4.MyBatis第一个入门程......
  • 【毕设源码含论文】基于PHP的校园代取快递小程序
    本项目含论文、开题报告完整截图:【源码】基于php的校园代取快递小程序_哔哩哔哩_bilibili源码购买:基于PHP的校园代取快递小程序【代码+开题报告+论文】功能1.登录:采用微信一键授权登录的形式2.个人信息:包括姓名学号和手机号3.发布任务:发布一个代取快递的任务,包括单号......
  • python-11-def函数 好比是sop 调用函数可以让程序听令
    学习内容:《python编程:从入门到实践》第二版知识点:定义函数、调用函数、形参、实参练习内容:练习8-1:消息编写一个名为display_message()的函数,它打印一个句子,指出你在本章学的是什么。调用这个函数,确认显示的消息正确无误。练习8-2:喜欢的图书编写一个名为favorite_book()......
  • 西电计科嵌入式程序设计课程实验源码
    前言博主是21级计科院的,在此澄清一下部分学长留存的实验经验:实验比较基础,并不像之前所说非常棘手;可以提前准备,但也没太大必要,认真做下午基本就能完全结束;实验三代码需要自己编写,但结构清晰,较为容易;用Qt编写嵌入式GUI程序——加减乘除四则运算器设计头文件#ifndefCAL......
  • 微信AI机器人使用说明-2024本地部署版(非wechaty)
     一、效果演示微信机器人实现的功能,先看视频的演示效果:2024年最新稳定的本地部署AI微信机器人使用方法演示可以对话可以语音可以绘画支持主账号管理好友权限管理免费体验AI好友: yuzitao-716二、支持功能1.绑定主账号:绑定主账号之后,主账号可以给其他用户、其他群组......