精华Telegram 群抽奖机器人,开源了!
- 楼主博主
Telegram 群抽奖机器人,这个是我接触 AI 后折腾的第一个 "项目"。在 Telegram 群组里,经常参与各个主办方搞的一些抽奖活动,感觉到 Telegram 抽奖机器人的功能还是非常的实用,便想着自己也搞一搞,但是奈何自己的水平有限且也没有使用刚需这个想法也就一直搁浅。把老张博客搬到酷鸭数据之后,和酷鸭数据的商家也经常的聊天,发现酷鸭没有 Telegram 群,便自告奋勇的创建了所谓的酷鸭数据官方 Telegram 群。为能想让 Telegram 群更为活跃,但想到了 Telegram 抽奖机器人。
在 Github 上也找了一些开源的 Telegram 抽奖机器人的源码,但是使用起来一些功能不是自己想要的。那段时间也正好买了年付的 minimax 的套餐,便开始了自己的折腾。对于一个门外汉想让 AI 帮自己做好一个项目,那最开始的 "项目方案" 必须要详细,方案里必须要把你的项目思路、项目后期功能等方方面面详细的罗列出来。当然了,你的初步方案出来之后,还可以和 AI 一起交流,对方案进行一些修改。我的这个 Telegram 抽奖机器人所谓的方案就是反反复复的修改了两三天时间。
第一次让 AI 做项目,没有经验,花了大量的时间和精力。连续两个星期都坐在电脑前,结果把自己的老病腰椎间盘突出又搞犯了。不过还好,前前后后花了三个多星期还是把这个 Telegram 抽奖机器人给搞了出来。
除了一般抽奖机器人常用功能外,我还增加了 "自动发奖" 的功能。抽奖结束之后,机器人可以将奖品如优惠卷、口令红包等直接分奖次等级私聊发给中奖者,省去了手动发奖的步骤。
有兴趣的请移步到我的 Github 仓库自取:https://github.com/laozhangge/telegram-lottery-bot
功能特性
✅ 单项奖抽奖 – 单个奖品抽奖
✅ 多等奖抽奖 – 支持一等奖、二等奖、三等奖等
✅ 定时开奖 – 到时间自动开奖
✅ 手动提前开奖 – 管理员可随时提前开奖
✅ 参与验证 – 验证群组成员身份 + 频道关注
✅ 防重复参与 – 数据库唯一约束
✅ 私聊通知 – 参与成功、开奖结果、取消通知全部私聊
✅ 群组通知 – 发布、开奖、取消群组通知
✅ 历史记录 – 查看历史抽奖、中奖者
✅ 管理员同步 – 自动从 TG API 同步群管理员
✅ 自动重启恢复 – 服务器重启后自动恢复定时任务快速开始
1. 安装依赖
pip install -r requirements.txt2. 配置机器人
编辑 config.yaml,填入以下信息:
telegram: bot_token: "你的BotToken" # 从 @BotFather 获取 group: chat_id: -1001234567890 # 群组ID channel: channel_id: -1001987654321 # 频道ID required: true # 是否强制关注频道3. 添加机器人为管理员
将机器人加入群组和频道,并设为管理员(否则无法读取成员列表和发送消息)。
4. 运行
# 初始化数据库 python scripts/init_db.py # 启动机器人 python bot.py5. systemd 守护进程(推荐)
# 复制 service 文件 sudo cp telegram-lottery-bot.service /etc/systemd/system/ # 重新加载 sudo systemctl daemon-reload # 启动 sudo systemctl start telegram-lottery-bot # 开机自启 sudo systemctl enable telegram-lottery-bot管理员命令
在群组内使用:
命令 说明 /create_single创建单项奖抽奖 /create_multi创建多等奖抽奖 /active查看进行中的抽奖 /participants查看参与人列表 /draw手动提前开奖 /cancel取消抽奖 /history查看历史记录 /sync_admins同步群组管理员 成员命令
命令 说明 /start打开主页 /lottery查看进行中的抽奖 /my_history我的参与记录 /help使用帮助 收藏 1支持 2反对打赏 1
这个可以用一下,感谢老张分享。
虽然用不到,还是感谢
支持老张
原创真厉害
@grok 分析这个项目 https://github.com/laozhangge/telegram-lottery-bot
关注各个 发起抽奖,用户 参与,进行抽奖,发布结果 的过程中,信息公开透明程度的分析?
作为没有系统操作权限的第三方,有没有办法监视整个过程的公开透明性?个性签名希望我分享的实践过程能让你也成为创造者, 自己动手解决问题.
grok:结论先说:按帖子里的说明,这个机器人是「群里看得见公告和结果」,不是「外人能复核开奖是否公平」。没有服务器权限的第三方,监视不了抽奖过程本身,只能看运营者愿意公开展示的那一层。
公开程度按环节看:
发起。 管理员用
/create_single、/create_multi建抽奖,群里会发通知。外人若在群里,能看到奖品、开奖时间、是否要关注频道这些文字。规则存在运营者自己的数据库里,帖子没写公告会不会被改、改了有没有留痕。第三方对不上「当时存进去的规则」和「后来拿来开奖的规则」。参与。 机器人用 Telegram 接口查是不是群成员、有没有关注频道,并用数据库唯一约束防重复。参与成功只私聊本人。
/participants写在管理员命令里,普通成员和群外的人开奖前看不到完整名单。所以你能确认自己报上了名,不能确认名单没有被删、被加,也不能确认别人是否被同样的条件放行。开奖。 到点自动开,管理员也可以
/draw随时提前开。帖子和给出的功能列表都没有公开随机源、开奖前锁定名单、公开种子或可复算过程。随机和名单都在跑机器人的那台机器上。运营者改数据库、换一批参与者再开、不满意再开一次,群里最终都只看到一条结果通知。开源仓库只能说明作者打算怎么写,不能证明正在跑的程序和数据就是仓库里那一份。公布与发奖。 群通知、私聊、
/history、/my_history能看到机器人声称的中奖者。自动发奖是机器人按奖级私聊发券或口令。中奖者能核对自己收到没有,其他人核对不了「这份奖是不是按事先公布的规则、从当时那份名单里抽出来的」。历史记录同样是机器人自己的账。没有系统权限的第三方,实际只能做这些:待在群里看发布、开奖、取消消息;核对自己的私聊;若命令对成员开放,再看历史。不能看到开奖瞬间的名单快照,不能重算随机结果,也不能发现静默改库。和本站抽奖用公开随机数、公布名单、页面上可复算不是一类东西。
真要让外人监得住,至少得:开奖前在群里公布不可更改的参与名单(或名单哈希),用事后才出现、谁都能查到的公开随机数开奖,并公开算法让人自己重算。以现在帖子里写的设计,做不到。
共 2 条回复自动发奖确实省事
个性签名我是joker,你好
这个牛逼啊
个性签名Google voice靓号见个人资料介绍页!