Skip to main content

nonebot-plugin-crystelf

✨ 移植自 crystelf-plugin 的 NoneBot2 多功能群娱乐插件 ✨

license pypi python

功能

  • 60s 早报:发送 60s 或 早报,获取每日早报图片
  • 新人入群验证:支持数字验证(100 以内加减法)与手性碳验证两种模式,超时 / 超限自动踢出,错误答案自动撤回
  • 自定义入群欢迎:按群设置欢迎文案与欢迎图片,可与入群验证联动(验证通过后发送)
  • 表情回应:自动给群消息中的 QQ 表情 / emoji 贴上表情回应(需 NapCat 等支持扩展 API 的协议端)
  • 戳一戳:戳 bot 随机回复并按概率回戳;戳主人会被警告并回戳;主人戳人时 bot 跟着戳
  • 早晚安:早晚安关键词按时段随机回复,主人有专属词库

移植范围说明:原项目的「晶灵智能 AI 对话」「点歌」「RSS 订阅」功能不在本插件范围内。

安装

使用 nb-cli 安装

nb plugin install nonebot-plugin-crystelf

使用 pip 安装

pip install nonebot-plugin-crystelf

使用 poetry 安装

poetry add nonebot-plugin-crystelf

配置

在 NoneBot 项目的 .env 文件中添加(均有默认值,可零配置使用):

# 机器人昵称(用于戳一戳等文案中的名字替换)
CRYSTELF_NICKNAME=馒头
# 数据存储路径
CRYSTELF_DATA_PATH=data/crystelf

# 功能开关
CRYSTELF_60S=true
CRYSTELF_AUTH=true
CRYSTELF_WELCOME=true
CRYSTELF_FACE_REPLY=true
CRYSTELF_POKE=true
CRYSTELF_ZWA=true

# 60s 早报 API
CRYSTELF_60S_URL=https://60s.crystelf.top
# 手性碳验证 API
CRYSTELF_AUTH_URL=https://carbon.crystelf.top
# 戳一戳回戳概率(0~1)
CRYSTELF_REPLY_POKE=0.4
# 戳一戳惹馒头不高兴(倒扣 1 点好感)的概率(0~1),仅没有 poke 接口的旧版好感插件生效
CRYSTELF_POKE_NEGATIVE_CHANCE=0.1

「主人」使用 NoneBot 的 SUPERUSERS 配置。

使用方法

60s 早报

指令 权限 范围 说明
60s / 早报 所有人 群聊/私聊 获取每日早报图片

新人入群验证

bot 需要为群管理及以上,操作者需为主人或群管理员

指令 权限 范围 说明
#开启验证 群主/管理/主人 群聊 在本群开启验证,默认为数字验证(100 以内加减法)
#关闭验证 群主/管理/主人 群聊 在本群关闭验证
#切换验证模式 群主/管理/主人 群聊 在数字验证和手性碳验证模式之间切换
#重新验证@某人 群主/管理/主人 群聊 让这个人重新验证一次
#绕过验证@某人 群主/管理/主人 群聊 直接通过验证
#设置验证提示模式开启/关闭 群主/管理/主人 群聊 提示模式开启时图上用 * 标记手性碳位置
#设置验证困难模式开启/关闭 群主/管理/主人 群聊 困难模式需回答出全部手性碳位置
#设置验证次数+次数 群主/管理/主人 群聊 设置最大验证次数
#设置撤回开启/关闭 群主/管理/主人 群聊 是否撤回错误答案

自定义入群欢迎

指令 权限 范围 说明
#设置欢迎文案+欢迎词 群主/管理/主人 群聊 设置本群欢迎文案
#设置欢迎图片+图片(或引用图片) 群主/管理/主人 群聊 设置本群欢迎图片
#查看欢迎 所有人 群聊 查看当前群欢迎内容
#清除欢迎 群主/管理/主人 群聊 清除当前群欢迎设置

表情回应

指令 权限 范围 说明
(自动) - 群聊 监听群消息中的表情并贴表情回应
#回应+emoji 所有人 群聊 查看 emoji 对应类型及 id,并贴表情回应

早晚安

指令 权限 范围 说明
早 / 早安 / 早上好 / 早啊 等 所有人 群聊/私聊 早安问候(按时段随机回复)
晚安 / 安 / 睡了 / 睡觉 等 所有人 群聊/私聊 晚安问候(按时段随机回复)

示例

用户:早报
机器人:[早报图片]

新人加入群聊
机器人:@新人 请在180秒内发送 42 + 37 的计算结果..
新人:79
机器人:@新人 验证通过,欢迎加入本群~

用户:戳一戳 bot
机器人:被戳晕了……轻一点啦!

馒头好感度联动(可选)

同时加载 nonebot-plugin-mantou-affection 后,群友戳 bot 的判定交给好感插件:好感加多少、回哪句文案、 要不要戳出一道限时答题都由它决定,本插件只负责把 poke() 返回的文案发出去。戳一戳不再有扣分机制, 固定 +1(仍受好感插件的每日获取上限约束);另有约 1% 概率戳出一次限时答题事件,答错 -4、超时 -10, 是普通答题的两倍。事件消息由好感插件返回、本插件转发到本群,同时把 poke_notice.send 一并交给 poke(), 让好感插件在有人作答或超时后自己发送结算消息。文案来自好感插件文案库的 crystelf.poke / crystelf.poke.negative 场景,可通过 MANTOU_AFFECTION_TEXT_PATH 扩充到大量文案。

调用链逐级回退:带 send 的 poke() → 没有 send 参数的老版 poke() → 旧版好感插件接口 → 本地戳一戳词库。 任何一层失败(接口不存在、调用报错、文案为空)都会 logger.debug 后落到下一层,不影响戳一戳主流程; 完全没加载好感插件时一切照旧。

CRYSTELF_POKE_NEGATIVE_CHANCE(默认 0.1,即约 10%,0~1)只对没有 poke() 接口的旧版好感插件生效: 由本插件 roll 出负面分支,倒扣 1 点好感并改用 crystelf.poke.negative 场景的文案, 取不到文案时只回退本地词库,不会退回正面场景。

与原项目的对应关系

原项目功能 (Yunzai) 本插件实现位置 是否完成 备注
60s 早报 (apps/60s.js) apps/sixties.py 是 -
手性碳/数字验证 (apps/auth.js) apps/auth.py 是 redis 欢迎缓存改为内存缓存(300 秒过期)
验证设置 (apps/auth-set.js) apps/auth.py 是 配置改为 JSON 文件持久化,结构一致
入群欢迎 (apps/welcome.js) apps/welcome.py 是 redis 群冷却改为内存冷却(30 秒)
欢迎设置 (apps/welcome-set.js) apps/welcome.py 是 -
表情回应 (apps/face-reply*.js) apps/face_reply.py 是 统一走 NapCat set_msg_emoji_like
戳一戳 (apps/poke.js) apps/poke.py 是 masterQQ 改为 SUPERUSERS
早晚安 (apps/zwa.js) apps/zwa.py 是 -
晶灵智能 (apps/ai.js) - 否 不在移植范围内
点歌 (apps/music.js) - 否 不在移植范围内
RSS 订阅 (apps/rssPush.js) - 否 不在移植范围内

许可证

MIT

Metadata

Release files for nonebot-plugin-crystelf 0.1.9

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-crystelf 0.1.9
File Size Uploaded Provenance Actions
nonebot_plugin_crystelf-0.1.9.tar.gz 163.2 kB Without provenance Details for nonebot_plugin_crystelf-0.1.9.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for nonebot-plugin-crystelf 0.1.9
File Interpreter ABI Platform Actions
nonebot_plugin_crystelf-0.1.9-py3-none-any.whl Python 3 none any Details for nonebot_plugin_crystelf-0.1.9-py3-none-any.whl

Total release size: 328.3 kB

Release files / nonebot_plugin_crystelf-0.1.9.tar.gz

Download URL nonebot_plugin_crystelf-0.1.9.tar.gz
Size 163.2 kB
Tags Source
SHA-256 checksum
How to use checksums
3c5151839d99bf1981c41f9b4f3b01700a0bbd064856701c12c233c2b245a1c6
BLAKE2b-256 checksum
How to use checksums
6be24fa2e7c3a27f92d9f39c7b4388e249d69b6c6a413576473021312c15db4e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.9

Release files / nonebot_plugin_crystelf-0.1.9-py3-none-any.whl

Download URL nonebot_plugin_crystelf-0.1.9-py3-none-any.whl
Size 165.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
952fef4512ed474356faad122c78859ab775b46a6e9462fb807f6ac81e3b076e
BLAKE2b-256 checksum
How to use checksums
2581a14a7adb50bd59d5ae6e9f23bdd0cfb5a51e06c20db745a57bbc7a381423
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.9

Security for nonebot-plugin-crystelf 0.1.9

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

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.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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