太强了!基于公众号用 Python 开发一个抽奖程序

2023-10-21 01:40

本文主要是介绍太强了!基于公众号用 Python 开发一个抽奖程序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

大家好

上周在公众号做了个抽象的活动,程序是自己临时写的,就是下面这种效果。回复指定关键字系统会自动给你分配一个抽奖号码

回复另一个关键字可以查看当前有没有中奖,功能可以说非常简单。

有些小伙伴拿到代码之后,问有没有详细的教程,光是看代码不知道怎么运行。

于是就有了这篇文章。

本文假设你已经有一个自己的公众号,还没有公众号的可以在平台注册一个,地址是:http://mp.weixin.qq.com 。

首先登录公众号平台,填写服务器配置


URL 不能乱填,这个是你的服务器地址, 比如:http://123.33.44.55/wx ,IP 地址是服务器的公网IP,所以前提你还得有一台服务器。

你可以选择国内的虚拟主机服务商,比如阿里云、腾讯云或者Ucloud(三位厂商记得给我广告费啊)都可以

填写完直接提交会验证失败的,因为服务器还没接入进来。

所以要先验证服务器地址的有效性。

验证服务器地址的有效性就是下面的处理逻辑,我这里是用的flask框架。


微信服务器请求URL的时候,会传4个参数给你,分别是


所谓验证服务器地址的有效性,就是要确认请求是否来自微信服务器,因为发起请求的也有可能是某个黑客。我们可以通过检验signature对请求进行校验,若确认此次GET请求来自微信服务器,原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。

加密/校验流程如下:

  • 1)将token、timestamp、nonce三个参数进行字典序排序

  • 2)将三个参数字符串拼接成一个字符串进行sha1加密

  • 3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信。

将代码部署到自己服务器之后,这时候再去提交,会提示你提交成功。验证成功后,就可以开始实现业务逻辑了。

实现抽奖逻辑

当用户在公众号发送消息时,微信会以POST请求的方式将消息转发给业务服务器(就是我们自己处理业务逻辑的程序),然后我们根据用户发送的内容进行相应的逻辑处理。

微信会通过POST请求,以xml的格式发送给我们业务服务器,里面的内容包括发送的消息内容、时间、还有open_id, open_id 唯一对应用户。虽然你不知道用户的昵称,但是只要知道open_id 就可以唯一确定是哪个用户。

定义数据模型

实现抽奖系统,我们首先定义了数据模型


只要三个字段就够了,number 是抽奖号码,open_id 表示谁获得了该抽奖号码, 初始为空, valid 表示该号码是否为中奖号码。初始化系统时,我们会随机给一些数据设置valid有True, 比如你想抽3个奖品,就随机弄3条数据为True。

模型建立完成后,接下来就可以处理具体的业务逻辑了。当用户发送抽奖关键字时,我们要做3件事。

1、判断当前用户是否还有抽奖资格
2、生成抽奖号码
3、查询剩余抽奖次数

回复另一个关键字查询是否中奖时,我们只需要判断它的抽奖号码里面有没有匹配的valid为True的数据即可。我都这些逻辑都封装在models里面,所以看起来也没几行代码。


以上就是整个抽奖小程序的全部思路。剩下的事情就是把代码部署到服务器,就能实现文章开头的效果了。

是不是超级简单。源代码获取请回复“公众号”

如果你正想实现一个类似的小程序,例如做个天气预报查询等有趣味的程序,如果编程过程中总是遇到各种问题卡壳,可以加我微信 "yueryounali",好的问题胜过无数个好答案。我们的python交流群也有很多高手。

学编程关键在于动手,提高在于实践。

推荐:
“痛苦地去死”,Linus再次怒喷Intel再见,Navicat!这个Pycharm的兄弟真香!说多了都是泪,一个项目上线的真实过程…

这篇关于太强了!基于公众号用 Python 开发一个抽奖程序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/251067

相关文章

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学