通用抽奖模块 - 使用 Dashboard 可视化管理、群聊报名、开奖动画和广播通知
Project description
ErisPulse-Raffle
通用抽奖模块 - 基于 ErisPulse Dashboard 可视化管理,支持群聊关键词报名、开奖动画、广播通知、兑奖系统。
功能
- Dashboard 管理 - 可视化创建/编辑活动、管理参与者、黑白名单、一键开奖
- 关键词报名 - 用户在群聊中发送指定关键词即可参与,无需 @机器人
- 多平台支持 - 通过适配器同时支持云湖、Telegram、OneBot 等平台
- 开奖撤回 - 开奖后可撤回结果,恢复为报名中状态
- 活动通知 - 从 Dashboard 向任意平台/会话发送活动开始通知(支持多目标批量发送)
- 开奖广播 - 开奖后自动向所有关联群聊广播结果
- 富文本降级 -
/raffle命令根据平台能力自动选择 Html / Markdown / 纯文本 - 模板自定义 - 所有回复消息(报名、广播、通知等)均可自定义
- 兑奖系统 - 支持三种兑奖方式:直接发送内容、自定义信息收集、自定义说明
- 好友添加提醒 - 中奖者添加机器人为好友时自动发送兑奖提醒
安装
epsdk install Raffle
使用
群聊报名
用户在已关联的群聊中发送活动关键词即可自动报名:
抽奖 # 发送配置的关键词即可参与
查看活动
/raffle # 查看自己已参与的活动 + 当前群聊的活动
/活动 # 同上,中文别名
Dashboard 管理
安装 ErisPulse-Dashboard 后,在侧边栏「工具」分组中找到「抽奖管理」。
活动配置项
| 配置 | 说明 |
|---|---|
| 活动 ID | 唯一标识,留空自动生成 |
| 活动名称 | 显示名称 |
| 活动描述 | 简短描述 |
| 开奖人数 | 抽取的中奖者数量 |
| 触发关键词 | 逗号分隔,用户发送包含关键词的消息即视为报名 |
| 自动确认参与 | 开启后跳过「待录入」状态,直接加入已确认组 |
| 白名单模式 | 仅白名单中的用户可以参与 |
| 允许的群聊 | 指定哪些平台/群聊可以参与本次活动 |
兑奖系统
开奖后,中奖者可通过兑奖关键词(如「兑奖」「领奖」)触发兑奖流程。管理员在创建/编辑活动时配置兑奖方式:
兑奖方式
| 方式 | 说明 |
|---|---|
| 直接发送内容 | 中奖者触发兑奖后,自动发送预设内容(支持按用户自定义内容) |
| 收集信息 | 中奖者触发兑奖后,通过多轮对话逐项收集管理员自定义的字段信息 |
| 自定义说明 | 中奖者触发兑奖后,发送自定义说明文字,引导用户完成兑奖 |
收集信息
管理员在活动表单中自定义收集字段(字段标识 + 提示语),兑奖时按顺序逐项询问中奖者。字段完全由管理员定义,无预设限制。
好友添加提醒
开启后,当中奖者添加机器人为好友时,自动发送兑奖提醒消息。系统会扫描所有已开奖活动,匹配中奖者身份。
兑奖配置项
| 配置 | 说明 |
|---|---|
| 兑奖方式 | 三选一:直接发送 / 收集信息 / 自定义说明 |
| 兑奖触发词 | 逗号分隔,用户发送包含触发词的消息即触发兑奖 |
| 发送内容 | 「直接发送」方式下发给中奖者的内容 |
| 收集字段 | 「收集信息」方式下自定义收集的字段列表 |
| 自定义说明 | 「自定义说明」方式下展示给中奖者的文字 |
| 监听好友添加 | 中奖者加好友时是否自动提醒 |
| 用户专属内容 | Dashboard 中按用户设置不同的直接发送内容 |
兑奖记录
Dashboard 中的「兑奖记录」面板展示所有兑奖记录,管理员可:
- 查看收集到的用户信息
- 标记兑奖状态为「已完成」
- 为特定用户编辑专属发送内容
通知功能
在 Dashboard 中点击活动旁的铃铛按钮,可向指定目标发送活动通知:
- 选择平台、会话类型(私聊/群聊/频道/服务器/话题)、目标 ID
- 可选指定机器人账号(多 Bot 场景)
- 支持添加自定义备注内容(追加到模板末尾)
- 支持多目标批量发送
- 发送历史记录 + 一键重发
回复模板
所有回复消息均可在 Dashboard「回复模板」区域自定义:
| 模板 | 触发场景 | 变量 |
|---|---|---|
| 报名成功 | 用户首次成功报名 | {name}, {count}, {activity_name} |
| 已报名提示 | 用户重复报名 | {name} |
| 待确认提示 | 手动确认模式下报名 | {name} |
| 开奖广播 | 开奖后广播到关联群聊 | {activity_name}, {winner_names}, {winner_count}, {total_participants} |
| 活动通知 | 从 Dashboard 发送通知 | {activity_name}, {description}, {draw_count}, {keywords} |
| 兑奖成功 | 中奖者完成兑奖流程 | {name} |
| 好友添加提醒 | 中奖者添加机器人为好友 | {name} |
| 黑名单拦截 | 黑名单用户尝试报名 | - |
| 非白名单拦截 | 白名单模式下非白名单用户尝试 | - |
界面
API
模块注册以下 HTTP API(需 Dashboard Token 认证):
| 路由 | 方法 | 说明 |
|---|---|---|
/Raffle/api/platforms |
GET | 获取已注册平台列表 |
/Raffle/api/settings |
GET/PUT | 读取/更新模块设置 |
/Raffle/api/activities |
GET/POST | 列出/创建活动 |
/Raffle/api/activities/{id} |
GET/PUT/DELETE | 查看/更新/删除活动 |
/Raffle/api/activities/{id}/participants |
GET | 获取参与者列表 |
/Raffle/api/activities/{id}/participants/{uid} |
PUT/DELETE | 确认/撤回/移除参与者 |
/Raffle/api/activities/{id}/draw |
POST | 开奖 |
/Raffle/api/activities/{id}/draw/revert |
POST | 撤回开奖 |
/Raffle/api/activities/{id}/result |
GET | 获取开奖结果 |
/Raffle/api/activities/{id}/blacklist |
GET/PUT | 黑名单管理 |
/Raffle/api/activities/{id}/whitelist |
GET/PUT | 白名单管理 |
/Raffle/api/activities/{id}/notify |
POST | 发送活动通知 |
/Raffle/api/activities/{id}/notify/history |
GET | 获取通知发送历史 |
/Raffle/api/activities/{id}/notify/resend/{hid} |
POST | 重发通知 |
/Raffle/api/activities/{id}/claims |
GET | 获取兑奖记录 |
/Raffle/api/activities/{id}/claims/{uid} |
PUT | 更新兑奖状态 / 编辑用户专属内容 |
命令
| 命令 | 别名 | 说明 |
|---|---|---|
/raffle |
/活动 |
查看已参与的活动和当前群聊的活动 |
许可证
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file erispulse_raffle-1.0.1.tar.gz.
File metadata
- Download URL: erispulse_raffle-1.0.1.tar.gz
- Upload date:
- Size: 27.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
93c115e37f7b98ed697236932ae228f823b305ef3acbaca59d3fdf7c962e8e7b
|
|
| MD5 |
7cb64ddfaf3a3b58a3512d201d271cf2
|
|
| BLAKE2b-256 |
2e6efe047c6d6c9e2736914c4f70c55c5772847c96ed116315c2bd87480bf955
|
Provenance
The following attestation bundles were made for erispulse_raffle-1.0.1.tar.gz:
Publisher:
python-publish.yml on ErisPulse/ErisPulse-Raffle
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
erispulse_raffle-1.0.1.tar.gz -
Subject digest:
93c115e37f7b98ed697236932ae228f823b305ef3acbaca59d3fdf7c962e8e7b - Sigstore transparency entry: 1583372180
- Sigstore integration time:
-
Permalink:
ErisPulse/ErisPulse-Raffle@eca49ad0060daa2398edd965b1cb4b2a83d4532a -
Branch / Tag:
refs/heads/main - Owner: https://github.com/ErisPulse
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@eca49ad0060daa2398edd965b1cb4b2a83d4532a -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file erispulse_raffle-1.0.1-py3-none-any.whl.
File metadata
- Download URL: erispulse_raffle-1.0.1-py3-none-any.whl
- Upload date:
- Size: 29.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
99ae1a85c57862677faf92ab6cd5a7011c571af5298a8bb2748bac0627319e6b
|
|
| MD5 |
a3928cc3e61c252a2f990ecc10966598
|
|
| BLAKE2b-256 |
9ad9cfbb15e2da80b97c3b499c15c043750af140544f9de3522d7b915e05a660
|
Provenance
The following attestation bundles were made for erispulse_raffle-1.0.1-py3-none-any.whl:
Publisher:
python-publish.yml on ErisPulse/ErisPulse-Raffle
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
erispulse_raffle-1.0.1-py3-none-any.whl -
Subject digest:
99ae1a85c57862677faf92ab6cd5a7011c571af5298a8bb2748bac0627319e6b - Sigstore transparency entry: 1583372278
- Sigstore integration time:
-
Permalink:
ErisPulse/ErisPulse-Raffle@eca49ad0060daa2398edd965b1cb4b2a83d4532a -
Branch / Tag:
refs/heads/main - Owner: https://github.com/ErisPulse
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@eca49ad0060daa2398edd965b1cb4b2a83d4532a -
Trigger Event:
workflow_dispatch
-
Statement type: