登录

精华Telegram 群抽奖机器人,开源了!

15839
  • 楼主博主

    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.txt
    

    2. 配置机器人

    编辑 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.py
    

    5. 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支持 1反对打赏

39 条回复

发表回复