Skip to main content
2024年是龙年...我都准备好了

nonebot-plugin-longtu

✨一个随机发送龙图的nonebot2插件✨

python pdm-managed
license pypi pypi download

💬 前言

2024年是龙年...我都准备好了.jpg

📖 介绍

一个非常简单的nonebot2插件,输入指令后会从神秘的龙图仓库(内含1500张精选龙图)中随机发送一张或多张(可爱)的龙图.

ps:攻击性较强,请酌情使用。

神秘的龙图仓库:https://github.com/Whiked/Dragonimg

💿 安装

使用包管理器安装 在 nonebot2 项目的插件目录下, 打开命令行, 根据你使用的包管理器, 输入相应的安装命令
pip
pip install nonebot-plugin-longtu
pdm
pdm add nonebot-plugin-longtu
poetry
poetry add nonebot-plugin-longtu
conda
conda install nonebot-plugin-longtu

打开 nonebot2 项目根目录下的 pyproject.toml 文件, 在 [tool.nonebot] 部分的 plugins 项里追加写入

[tool.nonebot]
plugins = [
    # ...
    "nonebot_plugin_longtu"
]

⚙️ 配置

在 nonebot2 项目的 .env 文件中添加下表中的配置

配置项 必填 默认值 说明
MAX_DRAGONS 否 5 一次最大发送龙图的数量
LONGTU_MODE 否 local local 优先本地图;remote 每次从远程取图,不写本地缓存
LONGTU_LOCAL_DIR 否 插件目录下的 images 本地图片目录,支持绝对路径;相对路径基于 bot 启动目录
LONGTU_AUTO_DOWNLOAD 否 true 本地模式下,在后台逐渐补齐图片库
LONGTU_REMOTE_FALLBACK 否 true 本地没有可用图片时尝试远程取图,并缓存成功下载的图片
LONGTU_DOWNLOAD_CONCURRENCY 否 3 后台每批最多并行下载的图片数,范围 1~8
LONGTU_DOWNLOAD_INTERVAL 否 0.1 后台每批成功下载后的等待秒数,可设为 0
LONGTU_IDLE_SECONDS 否 3 龙图请求结束后等待多久再继续后台下载
LONGTU_STARTUP_DELAY 否 5 启动后延迟多少秒开始后台同步
LONGTU_TIMEOUT 否 8 单次 HTTP 操作超时秒数
LONGTU_REQUEST_TIMEOUT 否 20 一次命令读取图片的累计等待上限秒数,不含 QQ 发送耗时

默认本地模式

不添加配置即可使用。首次没有图片时可以远程取图,后台分批并行补库;已经有本地图时,只从现有图片中随机抽取,无需等整个仓库下载完成。一次命令在图片数量足够时不会重复抽取。

“空闲”指没有龙图请求正在处理,且距离最近一次龙图请求结束超过指定时间,不是检测整机 CPU 或整个群是否安静。已经发起的一批下载会完成,后续批次等待前台请求结束。默认 3 张并行、批次间隔 0.1 秒,1516 张图片的批次间隔合计约 51 秒,不再固定等待两小时。实际完成时间还取决于网络、使用频率和失败重试,不能将间隔之和当作总耗时。HTTP 连接池另为前台预留容量。

内置 index.json 固定记录 1516 张图片的真实文件名、大小和 Git blob 校验值。随机取图与后台下载共用这份索引,不查询 GitHub API,不需要 token,也不会猜测文件后缀。失败批次按 5、10、20、40、60 秒退避,成功批次恢复正常速度;后续轮次只重试失败项,重启后跳过已完整保存的图片。全部下载完成后后台任务退出,不持续轮询。下载使用临时文件并校验后替换,不自动删除本地图。图片只在使用时读入内存,不把整个图库常驻内存。

希望更快补库时可将 LONGTU_DOWNLOAD_CONCURRENCY=5、LONGTU_DOWNLOAD_INTERVAL=0;带宽较小时可设并发为 1 并增加批次间隔。旧配置中的显式等待值会继续生效,升级后需移除或调整才能使用新默认值。

自定义目录示例:

LONGTU_MODE=local
LONGTU_LOCAL_DIR="./data/longtu"

也可以下载 Dragonimg 的 ZIP,将 drimg 内图片放入该目录,保持文件名不变。启动时仅收录本层索引内的图片;运行期间手动补入图片后重启 bot。默认插件目录不可写时,请设置可写目录,尤其是容器或系统级安装环境;容器建议挂载该目录,升级插件前也建议备份本地图片。图库若将来变化,需要维护者同步更新并发布索引。

完全离线使用已有图片:

LONGTU_MODE=local
LONGTU_LOCAL_DIR="./data/longtu"
LONGTU_AUTO_DOWNLOAD=false
LONGTU_REMOTE_FALLBACK=false

纯远程模式

LONGTU_MODE=remote

此模式使用插件内置清单,每次下载图片字节发送,不创建本地图片目录,不运行后台补库;更新内置清单随插件升级。它仍依赖 GitHub 网络,网络较差时建议使用默认本地模式。

两种模式都发送图片字节,适用于 NoneBot 与 OneBot 协议端位于不同机器的环境,不要求协议端能访问 NoneBot 的本地路径。

🎉 使用

现有指令列表:

dragon,龙龙,龙图:发送一张可爱的龙龙图片

龙图 3:发送三张可爱的龙龙图片

示例:示例

📞 制作者

黑纸折扇 [Perseus037] (https://github.com/Perseus037)

  • QQ: 1209228678

Whike [Whiked] (https://github.com/Whiked)

  • QQ: 274752001

🙏 感谢

student_2333 (https://github.com/lgc2333) 的无私帮助。

📝 更新日志

0.2.1

  • 默认后台 3 张并行,启动等待 5 秒、请求后空闲 3 秒、每批间隔 0.1 秒。
  • 前台请求优先,失败批次指数退避,仅重试失败图片,保留校验与重启续传。

0.2.0

  • 支持本地、远程两种模式,默认本地优先,目录可配置。
  • 空闲时单文件渐进下载,已有图片可立即使用,支持重启续传,补齐后自动结束。
  • 内置真实图片清单,校验下载内容,限制请求等待,复用 HTTP 连接。

0.1.2

  • 龙库换源:将图片资源迁移到 GitHub Raw(Whiked/Dragonimg/drimg/),提升可用性与稳定性

0.1.1.post1

  • 实现多张龙图发送
  • 增加新配置项

0.1.0.post4

  • 增加了更多类型的httpx错误处理
  • 修改FinishedException位置

0.1.0.post1-0.1.0.post3

  • 仓库内由测试的50张龙图扩展到了1500张精选龙图,随机范围更广(攻击性更强)。
  • 常规修正

Metadata

Release files for nonebot-plugin-longtu 0.2.1

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-longtu 0.2.1
File Size Uploaded Provenance
nonebot_plugin_longtu-0.2.1.tar.gz 78.6 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for nonebot-plugin-longtu 0.2.1
File Interpreter ABI Platform
nonebot_plugin_longtu-0.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 149.8 kB

Release files / nonebot_plugin_longtu-0.2.1.tar.gz

Download URL nonebot_plugin_longtu-0.2.1.tar.gz
Size 78.6 kB
Tags Source
SHA-256 checksum
How to use checksums
8dd016960e08bc5b15b2dec99222fec254945e1c5bcd80ce7a02ca639f7ec5e6
BLAKE2b-256 checksum
How to use checksums
0fe72be209dc8c5cd6869eb1747ad8816b01fcb0b7d7404cfbee5fed4a5e1a11
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.8

Release files / nonebot_plugin_longtu-0.2.1-py3-none-any.whl

Download URL nonebot_plugin_longtu-0.2.1-py3-none-any.whl
Size 71.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cfdb22ebaa684af154001750564475575a73817345a5ddd6486c9054e180c9e6
BLAKE2b-256 checksum
How to use checksums
7f1ef9fd648ba0783e26e02dc1aba36c53710181e0249229397413691c691b94
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.8

Security for nonebot-plugin-longtu 0.2.1

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