python3 实现公众号自动发消息

  • 前言
  • 微信公众号测试号申请
    • 申请测试公众号
    • 测试号信息
    • 测试号二维码
    • 模板消息接口
      • 新增流程
  • python 脚本配置
    • access_token.py
    • send_message.py
    • information_message.py
    • main.py
  • 验证
  • 定时发送
  • 结尾

前言

最近给女朋友的问候公众号制作爆火,网上的教程有很多但都很零散,可能按着操作结果不知道消息发送去那了,因此本文章就详细地从头教到尾

微信公众号测试号申请

申请测试公众号

微信公众平台
点击登录,微信扫描二维码登录进去

测试号信息

后续脚本中需要测试号信息

测试号二维码

想要把信息发给谁,就让谁进行扫描二维码,扫描后刷新页面,右边用户列表就会出现微信号
后续脚本需要微信号

模板消息接口

新增流程

模板消息的配置(以第二个为例)

  1. 点击 新增测试模板

  • 填写标题
    陌生人,早上好!

  • 填写模板内容

{{date.DATA}}
{{leady.DATA}}
{{love_day.DATA}}{{ZH.DATA}}{{EN.DATA}}

模板详解:

  • {{date.DATA}} 当天年月日
  • {{leady.DATA}} 当天农历年月日
  • {{love_day.DATA}} 恋爱开始的时间
  • {{ZH.DATA}} 生日
  • {{EN.DATA}} 每日一句

4.效果

python 脚本配置

access_token.py

测试号信息(两处需要修改)

  • APPID 填写自己的appID
  • APPSEARCH 填写自己的appsecret
[root@wh wq]# cat access_token.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
@Time :2022/10/5 20:00
@Auth :王谦
@File :access_token.py
@Description:获取access_token
"""import requestsclass AccessToken(object):# 微信公众测试号账号(填写自己的)APPID = "填写自己申请的测试公众号ID"# 微信公众测试号密钥(填写自己的)APPSEARCH = "填写自己申请的测试公众号appsecret"def __init__(self, app_id=APPID, app_secret=APPSEARCH) -> None:self.app_id = app_idself.app_secret = app_secretdef get_access_token(self) -> str:"""获取access_token凭证:return: access_token"""url = f"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={self.app_id}&secret={self.app_secret}"resp = requests.get(url)result = resp.json()if 'access_token' in result:return result["access_token"]else:print(result)

send_message.py

用户列表以及模板消息接口(两处需要修改),这里也是上色的(设置的随机,每天都不一样)

  • TROUSER 发单人的启用单人的,多人的使用多人的,填写用户列表的微信号
  • TEMPLATE_ID 模板消息接口–>模板ID(用于接口调用)
[root@wh wq]# cat send_message.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
@Time :2022/10/5 20:00
@Auth :王谦
@File :send_message.py
@Description:发送微信公众号消息
"""import json
import requests
import random
from access_token import AccessTokenclass SendMessage(object):# 消息接收者# 模板 TROUSER = 'oDxxxxxxxxxxxxxxxxxxII',# 单人# TROUSER = '填写测试号二维码里边的微信号',# 多人TROUSER = '','',''# 消息模板idTEMPLATE_ID = 'sPEYDFXQmaFb_ta-tCkCgTWj2eQfY6xHdrSGtYFEUx4'def __init__(self, tosser=TROUSER, template_id=TEMPLATE_ID) -> None:"""构造函数:param touser: 消息接收者:param template_id: 消息模板id"""self.access_token = AccessToken().get_access_token()self.trouser = tosserself.template_id = template_iddef random_color(self):colors1 = '0123456789ABCDEF'num = "#"for i in range(6):num += random.choice(colors1)return numdef get_send_data(self, json_data,Recipient) -> object:"""获取发送消息data:param json_data: json数据对应模板:return: 发送的消息体"""content = {}for k,v in json_data.items():concrete_content = { k : {"value": v,"color": self.random_color()} }content.update(concrete_content)return {"touser": Recipient,"template_id": self.template_id,"topcolor": "#FF0000",# json数据对应模板"data": content}def send_message(self, json_data) -> None:"""发送消息:param json_data: json数据:return:"""# 模板消息请求地址url = f"https://api.weixin.qq.com/cgi-bin/message/template/send?access_token={self.access_token}"for Recipient in self.trouser:data = json.dumps(self.get_send_data(json_data,Recipient))requests.post(url, data=data)
[root@wh wq]#

information_message.py

对应模板信息
这个是跟模板进行对应的

如果要新增,新增def,以及最后的ALL里边进行添加

[root@wh wq]# cat information_message.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
@Time :2022/10/5 20:00
@Auth :王谦
@File :main.py
@Description:微信公众号内容
"""import requests
import datetime
import time
from zhdate import ZhDate
from dateutil.relativedelta import relativedeltaclass Information:# 当前年月日def Datum():today = datetime.date.today()return today# 当前星期几def Boche():local_time = time.localtime(time.time())   # 获取当前时间的时间元组# time.struct_time(tm_year=2022, tm_mon=4, tm_mday=9, tm_hour=13, tm_min=48, tm_sec=23, tm_wday=5, tm_yday=99, tm_isdst=0)week_index = local_time.tm_wday  # 获取时间元组内的tm_wday值# # 配置名称列表week_list = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"]return week_list[week_index]# 当前农历日期def Moneylender():from datetime import datetimelocal_time = time.localtime(time.time())   # 获取当前时间的时间元组dt_date4 = datetime(local_time.tm_year,local_time.tm_mon, local_time.tm_mday)date4 = ZhDate.from_datetime(dt_date4)return date4.chinese()# 恋爱至现在时长def LOVE(love_year):love_year = love_year  # 开始恋爱日期love_day1 = tuple(time.strptime(love_year, "%Y-%m-%d"))  # 将格式化时间 转化为 结构化时间love_hour = time.strftime("%Y-%m-%d")  # 获取当前的格式化时间d1 = datetime.date(love_day1[0], love_day1[1], love_day1[2])d2 = datetime.date(int(love_hour.split("-")[0]), int(love_hour.split("-")[1]), int(love_hour.split("-")[2]))d3 = (d2 - d1).daysreturn f'今天是我们相恋的第{d3}天'# 距离生日日期def Geburtstag(month,day,name):from datetime import datetime# 公立当前年月日时间获取today = datetime.now()oneDay = ZhDate(int(str(ZhDate.today())[2:6]), month, day).to_datetime()difference = oneDay.toordinal()-today.toordinal()if(difference < 0):e = today.strftime('%Y')oneDay = ZhDate(int(e), month, day).to_datetime()difference = oneDay.toordinal()-today.toordinal()return f'距离{name}明年生日还有{difference}天'elif(difference == 0):return f'{name}生日快乐'else:return f'距离{name}今年生日还有{difference}天'# 每日一句def Everyday():url = 'http://open.iciba.com/dsapi/'url1 = requests.get(url)Eng = eval(url1.text)['content']Ch = eval(url1.text)['note']combination = Eng + '\n' + Chreturn combinationdef whole():ALL = {'date': str(Information.Datum()) + ' ' + Information.Boche(),'leady':Information.Moneylender(),'love_day':str(Information.LOVE(love_year='2021-08-19')),'ZH':Information.Geburtstag(name='公举',month=8, day=15) + '\n' + Information.Geburtstag(name='王子',month=12, day=15),'EN': str(Information.Everyday())}return ALL

main.py

最后执行的文件

[root@wh wq]# cat main.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
@Time :2022/10/5 20:00
@Auth :王谦
@File :main.py
@Description:微信公众号发送消息主文件
"""import json
from send_message import SendMessage
from information_message import Informationclass Main(object):def main(self):# 实例SendMessagesm = SendMessage()# 获取接口返回数据json_data = Information.whole()     # 发送消息sm.send_message(json_data=json_data)if __name__ == '__main__':main = Main()main.main()

验证

[root@wh test]# ls
access_token.py  information_message.py  main.py  send_message.py
[root@wh test]# python3 main.py
[root@wh test]#

微信订阅号上边收到了信息

定时发送

linux定时任务

[root@wh test]# crontab -l
# 微信公众号定时(每天8点)
0 8 * * * /bin/python3 /data/script/test/main.py

结尾

没有服务器,也想要的,可以私信,目前是免费制定。(最终解释权归博主所有)

python3 实现公众号自动发消息相关推荐

  1. 使用easywechat给关注公众号用户发消息

    使用easywechat给关注公众号用户发消息 //获取昵称private function getnickname($openid=''){$nickname=DB::name('member')- ...

  2. 微信公众号-推发消息

    1:获取公众号信息 2:设置ip白名单 3:java代码 package com.eleadmin.common.test;/**@作者 yangshaoping.ex*@时间 2022/5/20*/ ...

  3. python微信自动发消息_如何利用python3实现微信定时自动发消息和图片?

    python代码: import itchat import time itchat.auto_login(hotReload=True) AutoList = [""," ...

  4. h5 修改title 微信_微信公众号客服消息不限次数推送如何设置?

    在公众平台发送客服消息,只能通过消息管理功能实现,仅支持一个个粉丝单独发送文本信息,如果想要实现更多功能效果,可以使用微号帮平台的48小时信息推送功能实现,或者通过公众号平台的接口编程开发实现功能,都 ...

  5. 云之家群组机器人如何定时自动发消息?

    什么是云之家?什么是云之家群组机器人? 云之家是专注于为企业提供新一代智能协同云服务数字化解决方案商,云之家提供一种创新工作方式,为企业每一名员工都配备一位智能办公小助手.云之家在IM的基础上提供审批 ...

  6. 【设计模式】之观察者模式——简单的“微信公众号推送消息给相关用户”

    目录 一.简单介绍 二.观察者模式涉及的4个角色 三.观察者模式demo:简单的"微信公众号推送消息给相关用户" 一.简单介绍 定义对象间"一对多"的依赖关系. ...

  7. 公众号 接收规则 消息_微信公众平台 发送模板消息(Java接口开发)

    前言:最近一直再弄微信扫码推送图文消息和模板消息发送,感觉学习到了不少东西.今天先总结一下微信公众平台模板消息的发送.因为这个自己弄了很久,开始很多地方不明白,所以今天好好总结一下. 微信公众平台技术 ...

  8. 微信公众号无限群发消息 v5.7.1 多功能版全开源 + 配置教程

    简介: 公众号无限群发消息模块,为运营而生 1.关于普通版与多功能版区别: 普通版:只能发文字,每次只能发500人,多了会卡死,需要再选下五百人(且不再更新). 多功能版:支持TD退订功能(用户发送t ...

  9. 自动打call机 qq伪自动发消息

    今天考完了工图,下一门考试是2号的c语言- 考工图考的我好悲伤啊-画不完啊嘤嘤嘤 于是开始今日份瞎搞抚慰自己弱小的心灵 想做个自动发消息的机器,之前尝试过很多方法没有成功.最近玩windows.h库比 ...

最新文章

  1. ubuntu12.04 启动mysql_Ubuntu 12.04 MySQL改utf-8 启动不了
  2. 从咨询公司学到的思考分析方法
  3. 收藏 | Redis 使用 10 个小技巧
  4. 如何更改jupyter notebook显示为中文?
  5. android m权限工具类,android M权限适配,简单工具类
  6. java 工厂模式的写法_设计模式-工厂模式
  7. WMS学习笔记:1.尝试加载WMS
  8. 不要错过这轮疫情的“洗牌”机会
  9. 让媒体播放控件,播放媒体 0201
  10. python链表_手把手实现 python 的链表数据结构
  11. [转]Mac OS X 下部分Android手机无法连接adb问题之解决方案
  12. Spring整合Struts2的两种方式
  13. 如何在苹果Mac上使用 Siri?
  14. laravel8-使用jwt
  15. Oracle long 类型转 varchar2
  16. 游戏测试-----------------第3章
  17. Repeating Annotations
  18. 服务器应该租用哪家好?如何选择适合自己的服务器?
  19. 5G mMTC场景下NB-IoT / eMTC增强技术
  20. 【区块链开发入门】(四) Truffle详解篇2

热门文章

  1. Google 三架马车:GFS、BigTable、MapReduce
  2. 川崎机器人示教盒维修_川崎机器人维修
  3. 东北大学计算机难度,东北大学考研难吗
  4. 如何将微信素材库的文章保留格式的复制到自己的博客论坛或者其他素材库
  5. 解决禅道(ZenTao)Mysql启动不了的问题
  6. 使用 nodeJs 实现 js/ts 文件翻译功能
  7. ubuntu apt安装java_Ubuntu 16.04 apt方式安装JDK并且配置Java开发环境详解
  8. 浅谈阻塞/非阻塞、同步/异步——从linux read()系统调用出发
  9. 其实我不怕过光棍节,我只是怕你不过光棍节~
  10. vex机器人 亚洲公开赛_喜报| HFI人工智能社勇夺VEX机器人亚洲公开赛最高荣誉“全能奖”等四奖项...