Skip to main content

Volt-Toy

群聊电击玩具。v0.1 只做手动电:群友互相电、电自己,记录次数、失败次数与度数,配一套「供电局」口吻的文案。图片检测留了挂点,暂不实现。

目录

main.py                     AstrBot 适配入口(仓库根目录即 AstrBot 插件目录)
metadata.yaml               AstrBot 插件元数据
_conf_schema.json           AstrBot 配置面板 Schema
volt_toy_core/              框架无关内核(纯标准库)
  model.py                  三步抽样:档位 → 能量 → 拆电压/电量
  records.py                受电账本:成功/失败/峰值/首电
  texts.py                  文案池与严格渲染
  storage.py                原子写 JSON 账本 + JSONL 日志
  state.py                  热状态:冷却/连击/额度/跳闸
  service.py                编排:校验 → 抽取 → 记账 → 文案
  rankings.py               榜单聚合
  render.py                 榜单/档案文本(两框架共用)
  settings.py               参数默认值
nonebot_plugin_volt_toy/    nonebot2 适配(Alconna + Uninfo + localstore)
  config.py                 pydantic 配置(volt_* 字段)
  runtime.py                配置/状态/服务单例
  store.py                  localstore 数据文件
  platform.py               跨协议会话:群 key / 名字 / 管理员 / 头像
  commands.py               Alconna 指令
tests/                      内核单测
doc/Agent_notes.md          开发笔记:决策、风险、待验证项
pyproject.toml              nonebot 插件发布用

快速开始(nonebot2)

pip install nonebot-plugin-volt-toy
# 或者从源码:
pip install .

在 bot 里加载插件:

nonebot.load_plugin("nonebot_plugin_volt_toy")

依赖:nonebot-plugin-alconna(多协议指令解析)、nonebot-plugin-uninfo(跨协议会话信息)、nonebot-plugin-localstore(数据目录)。三个都会在插件加载时用 require() 声明。

快速开始(AstrBot)

整个仓库就是 AstrBot 插件:把它放到 AstrBot 的 data/plugins/ 下,重载插件即可。main.py 与 volt_toy_core 同级,不需要额外安装依赖。

cd AstrBot/data/plugins
git clone https://github.com/Funny1Potato/Volt-Toy

配置项在 WebUI 的插件配置页中调整,由 _conf_schema.json 定义。

插件市场发布:仓库根目录已带 metadata.yaml 与 main.py,仓库体积约 50KB(远低于 16MB 上限), 可直接在 AstrBot Cloud 发布页 提交。 metadata.yaml 声明的支持平台是 QQ 系三个(aiocqhttp / qq_official / qq_official_webhook); 文本指令在其它平台理论上可用,但未实测,故未声明。

命令

命令 别名 说明
zap [@目标] 电 电击 雷 施电;不 @ 则电自己(0.8 倍)
zapkwh 度数榜 电费榜 累计度数 TOP5
zaptop 被电榜 受电次数 TOP5(括号标失败数)
zapmax 峰值榜 单次最高度数 TOP5
zapking 电王榜 成功施电次数 + 首电 × 2
zapinfo [@目标] 电档 总次数 / 失败次数 / 今日 / 累计度
zapclear [@目标] — 清除记录(管理员)
zapnodo [@目标] 绝缘 免电名单开关(管理员)
zapon / zapoff — 群内启停(管理员)

规则

  • 单目标每日上限 25 次:超出不拒绝,只记次数与失败,不加电量。
  • 过载:60 秒内 10 次 → 跳闸 300 秒。
  • 每日施电额度默认 不限(0);冷却默认 关闭(0)。
  • 统计口径:度(kWh);单次同时展示电压 V 与电量 Ah。
  • 电自己:0.8 倍效率,不额外占额度。

配置

字段名转大写下划线即环境变量,例如 VOLT_RECEIVE_CAP=25。

字段 默认 说明
volt_receive_cap 25 单目标每日受电上限,0 不限
volt_overload_window 60 过载窗口(秒)
volt_overload_threshold 10 窗口内最多施电次数
volt_overload_ban 300 跳闸时长(秒)
volt_daily_quota 0 每日施电额度,0 不限
volt_cooldown 0 同目标冷却秒数,0 关闭
volt_crit_prob 0.15 暴击概率
volt_self_efficiency 0.8 电自己的效率
volt_price_per_kwh 0.55 电价,仅影响展示
volt_is_log false 写逐条日志
volt_whitelist [] 免电名单初始值

数据

两边用同一套文件格式:

  • zap.json —— 群用电账本(原子写)
  • zap_log.jsonl —— 逐条审计(volt_is_log 为真时)
  • zap_whitelist.json —— 免电名单

nonebot 版放在 localstore 插件数据目录;AstrBot 版放在 data/plugin_data/<插件名>/。 两边的账本可以直接对拷(群 key 的前缀不同,需要少量改名,见 doc/Agent_notes.md)。

开发

pip install -e ".[dev]"
pytest          # 32 个内核用例

冒烟测试需要真实的 nonebot 项目:把仓库根加进 sys.path 后 nonebot.load_plugin("nonebot_plugin_volt_toy") 即可(/zap @某人 实测通过)。 注意 editable 安装的插件可能无法被 nonebot 识别:PEP 660 的 finder 会绕过 nonebot 的 PluginFinder,模块因而没有 __plugin__。用普通安装、或把插件目录放进 plugin_dirs,或手动把仓库根加进 sys.path。

发布(PyPI)

版本号在 nonebot_plugin_volt_toy/__init__.py 的 __version__,打包用 hatchling:

python -m build        # 产出 dist/*.whl 与 dist/*.tar.gz
pip install dist/*.whl # 本地验证

推 vX.Y.Z tag 会触发 .github/workflows/pypi-publish.yml:校验 tag 与 __version__ 一致、构建、检查 wheel 内容,再用 Trusted Publishing 上传(首次需在 PyPI 配一次 publisher)。

免责

这是熟人局玩具,不涉及任何真实惩罚。请勿用于骚扰陌生人。

Metadata

Release files for nonebot-plugin-volt-toy 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for nonebot-plugin-volt-toy 0.1.0
File Size Uploaded Provenance
nonebot_plugin_volt_toy-0.1.0.tar.gz 29.7 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for nonebot-plugin-volt-toy 0.1.0
File Interpreter ABI Platform
nonebot_plugin_volt_toy-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 61.9 kB

Release files / nonebot_plugin_volt_toy-0.1.0.tar.gz

Download URL nonebot_plugin_volt_toy-0.1.0.tar.gz
Size 29.7 kB
Tags Source
SHA-256 checksum
How to use checksums
a470870beecd7b38928ef2ee97b227eb9b86f53405264c90820f8cffae7cdd90
BLAKE2b-256 checksum
How to use checksums
658a92a0d3d73d44c2f87de11e853e66c0a0de6fb7ed23fa0b271b8df0d7c92a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.

Transparency log

Release files / nonebot_plugin_volt_toy-0.1.0-py3-none-any.whl

Download URL nonebot_plugin_volt_toy-0.1.0-py3-none-any.whl
Size 32.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1f913a1fd9c2f58429ad6704a6cb600396773a69ea51a440782ccb68a9d9f0a2
BLAKE2b-256 checksum
How to use checksums
4cfccc78537100336186c9e8f31542399aa251f740a3f2f5d61c79697da46a03
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.

Transparency log

Security for nonebot-plugin-volt-toy 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for nonebot_plugin_volt_toy-0.1.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page