python实现微信自动发信息_python自动发微信api

python实现微信自动发信息_python自动发微信api前阵子部署zabbix监控系统,做了个微信报警,下面分享下微信调API发消息的脚本。要用微信发消息,自己首先要有微信企业号,如果没有申请也容易准备工作:1.申请微信企业号2.在企业号后台创建应用3.关注微信企业号脚本用Python3写的,内容如下:#!/usr/local/python3.5/bin/python3.5importjsonimportsysimportosimporttim…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

前阵子部署zabbix监控系统,做了个微信报警,下面分享下微信调API发消息的脚本。要用微信发消息,自己首先要有微信企业号,如果没有申请也容易

准备工作:

1.申请微信企业号

2.在企业号后台创建应用

3.关注微信企业号

脚本用Python3写的,内容如下:

#!/usr/local/python3.5/bin/python3.5

import json

import sys

import os

import time

import urllib.request

tkapi = ‘https://qyapi.weixin.qq.com/cgi-bin/gettoken‘

msgapi = ‘https://qyapi.weixin.qq.com/cgi-bin/message/send‘

corpid = ‘微信企业号corpid‘

corpsecret = ‘微信企业号corpsecret‘

agentid = ‘微信企业号创建的应用ID‘

tokentmp = ‘token.txt‘

url = “%s?corpid=%s&corpsecret=%s” % (tkapi,corpid,corpsecret)

senduser = sys.argv[1]

msg = sys.argv[2]

nowtime = int(time.time())

def gettoken():

try:

res = urllib.request.urlopen(url)

if res.status == 200:

result = res.read()

result = str(result, encoding = “utf-8”)

jresult = json.loads(result)

errcode = jresult[‘errcode‘]

if errcode == 0:

token = jresult[‘access_token‘]

token = token.strip(‘\r‘)

token = token.strip(‘\n‘)

f = open(tokentmp,‘w‘)

log = “%s:%s” % (nowtime,token)

f.write(log)

f.close()

return(‘0‘,token)

else:

return(‘1‘,‘get token fail‘)

else:

return(‘1‘,‘get token return http code error‘)

except Exception as e:

#print(Exception,”:”,e)

return(‘1‘,‘get token http request fail‘)

def sendmsg(token,senduser,msg):

SendMsgUrl = “%s?access_token=%s” % (msgapi,token)

data = {‘touser‘:senduser,‘msgtype‘:‘text‘,‘agentid‘:agentid,‘text‘:{‘content‘:msg}}

data = json.dumps(data)

data = data.replace(‘-n‘,‘\\n‘)

data = bytes(data,‘utf8‘)

try:

request = urllib.request.Request(SendMsgUrl)

res1 = urllib.request.urlopen(request,data)

if res1.status == 200:

result1 = res1.read()

result1 = str(result1, encoding = “utf-8”)

jresult1 = json.loads(result1)

errcode1 = jresult1[‘errcode‘]

if errcode1 == 0:

return(‘0‘,errcode1)

else:

return(‘1‘,‘send msg fail‘)

else:

return(‘1‘,‘send msg return http code error‘)

except:

return(‘1‘,‘send msg http request fail‘)

if os.path.exists(tokentmp):

tk = open(tokentmp,‘r‘).readline()

tk = str(tk)

tkstrs = tk.split(‘:‘)

lasttime = int(tkstrs[0])

if nowtime – lasttime < 3600:

token = tkstrs[1]

stat = ‘0‘

else:

(stat,token) = gettoken()

else:

(stat,token) = gettoken()

if stat == ‘0‘:

(stat1,msgresult) = sendmsg(token,senduser,msg)

if stat1 == ‘0‘:

print(‘send message success‘)

else:

print(‘get token success,send message fail errinfo:‘+msgresult)

else:

print(‘get token fail errinfo:‘+token)

脚本使用方法:

python3.5 wenxin.py 消息接收人 消息内容

python3.5 wenxin.py opsfans ‘微信测试消息‘

消息内容换行符为‘-n‘python水平有限,大牛勿喷

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/186648.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • c语言全局变量和局部变量的区别的代码_函数的形参都属于全局变量

    c语言全局变量和局部变量的区别的代码_函数的形参都属于全局变量局部变量和全局变量的区别背景:上午看书阅及这两对概念,有很多相似之处,故记之。一.局部变量&amp;全局变量1局部变量:“在函数内定义的变量”,即在一个函数内部定义的变量,只在本函数范围内有效。2全局变量:“在函数外定义的变量”,即从定义变量的位置到本源文件结束都有效。目的:增加函数间数据联系的渠道。由于同一文件中的所有函数都能引用全局变量的值,因此如果在一个函数中改变了全局变…

    2022年10月24日
  • java集合系列——Map之HashMap介绍(八)

    HashMap是基于哈希表的Map实现的的,一个Key对应一个Value,允许使用null键和null值,不保证映射的顺序,特别是它不保证该顺序恒久不变!也不是同步的。

  • 二进制的权展开式_进制按权展开方法

    二进制的权展开式_进制按权展开方法1.问题描述为什么二进制按权展开就是十进制?按照我们所学到的知识,来举例说明。比如:(1111)2按权展开就是:1×23+1×22+1×21+1×20=15我们得到了15对吧,那么两个问题为什么15这个就是十进制呢?为什么展开后相加就正好等于十进制的15呢?2.问题解答首先来看我们为什么按权展开?(1111)2因为逢二进一所以按权展开就是要这样:1×23+1×22+1×21+1×20由于我们习惯性的把加起来的和等于十进制的15所以我们会误认为,按权展开就是十进制其.

    2022年10月17日
  • 操作系统知识整理 – 进程控制块

    操作系统知识整理 – 进程控制块前提系统中需要有描述进程存在和能够反映其变化的物理实体,即进程的静态描述。进程的静态描述由3部分组成:进程控制块(ProcessControlBlock,PCB),有关程序段和该程序段操作的数据结构集。PCB是系统感知进程的唯一实体,用于描述进程的当前情况以及管理进程运行的全部信息,是操作系统中最重要的记录型数据结构。程序段以及数据结构集是进程完成所需功能的物质基础。一个进…

    2022年10月30日
  • 左连接 ,右连接,内连接和全外连接的4者区别[通俗易懂]

    左连接 ,右连接,内连接和全外连接的4者区别[通俗易懂]基本定义:  leftjoin(左连接):返回包括左表中的所有记录和右表中连接字段相等的记录。  rightjoin(右连接):返回包括右表中的所有记录和左表中连接字段相等的记录。  innerjoin(等值连接或者叫内连接):只返回两个表中连接字段相等的行。  fulljoin(全外连接):返回左右表中所有的记录和左右表中连接字段相等的记录。举个例子: …

  • struts2于validate要使用

    struts2于validate要使用

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号