NoneBot2 plugin for sending text and image messages to receipts-spooler
Project description
nonebot_plugin_receipts
一个面向 NoneBot2 的独立插件,用来把发送给 Bot 的文本和图片消息转成 ESC/POS 原始打印数据,再投递给 receipts-spooler。
当前实现面向 OneBot v11 适配器,适合 QQ 机器人消息场景。
功能
- 提供
ticket、小票、receipt指令,三者互为别名 - 支持命令后直接附带文本和图片
- 如果命令后没有内容,会继续追问下一条消息
- 将文本和图片合成为一张热敏小票图,再编码为 ESC/POS 栅格打印命令
- 通过
receipts-spooler的/api/v1/task/push_raw接口提交打印任务
安装
cd nonebot_plugin_receipts
pip install -e .
然后在你的 NoneBot2 项目中加载插件:
nonebot.load_plugin("nonebot_plugin_receipts")
配置
插件通过 NoneBot 全局配置读取以下环境变量:
| 变量 | 默认值 | 说明 |
|---|---|---|
RECEIPTS_SPOOLER_URL |
http://127.0.0.1:8000 |
receipts-spooler 服务地址 |
RECEIPTS_SPOOLER_TOKEN |
空 | 对应 X-Spooler-Token |
RECEIPTS_SPOOLER_TIMEOUT |
5.0 |
调用 spooler 的 HTTP 超时 |
RECEIPT_IMAGE_FETCH_TIMEOUT |
5.0 |
下载图片消息内容时的 HTTP 超时 |
RECEIPT_RENDER_MODE |
raster |
渲染模式,可选 raster/hybrid |
RECEIPT_PRINTER_WIDTH |
576 |
小票像素宽度,最大 576 |
RECEIPT_TEMPLATE_PATH |
空 | 可选,指向渲染模板 JSON 文件 |
RECEIPT_FONT_PATH |
空 | 可选,建议配置支持中文的 TTF/OTF 字体 |
RECEIPT_FONT_SIZE |
24 |
文本字号 |
RECEIPT_LINE_SPACING |
6 |
文本行距 |
RECEIPT_SECTION_GAP |
6 |
文本和图片之间的垂直间距 |
RECEIPT_FEED_LINES |
4 |
打印后走纸行数 |
RECEIPT_ENABLE_CUT |
true |
是否附加切纸命令 |
渲染模式
raster:把文本和图片一起渲染成整张位图,再输出 ESC/POS 栅格数据,兼容性最好。hybrid:文本走打印机原生字符输出,图片仍走位图,能减少大量文字被渲染成图片。
hybrid 模式下,中文是否正常输出取决于打印机对中英文字符集的支持情况。
渲染模板
如果你想单独调整小票布局,可以配置 RECEIPT_TEMPLATE_PATH 指向一个 JSON 文件。项目根目录里附带了一个示例文件 receipt_template.example.json。
支持的模板字段:
| 字段 | 默认值 | 说明 |
|---|---|---|
margin |
16 |
左右和顶部内边距 |
footer_enabled |
true |
是否渲染页脚 |
footer_text |
{sender_name}({sender_id}) @ {timestamp} |
页脚文字模板 |
footer_timestamp_format |
%Y-%m-%d %H:%M:%S |
时间格式 |
footer_timezone_offset_hours |
8 |
页脚时间使用的时区偏移 |
footer_text 支持这些占位符:
{timestamp}{sender_name}{sender_id}
示例:
{
"margin": 24,
"footer_enabled": true,
"footer_text": "{sender_name}({sender_id}) 打印于 {timestamp}",
"footer_timestamp_format": "%Y/%m/%d %H:%M",
"footer_timezone_offset_hours": 8
}
使用
直接在命令后附带内容:
/小票 今晚睡大觉
或者:
- 发送
/小票 - 按提示继续发送一条包含文本、图片或两者混合的消息
插件会把纯文本和图片消息段一起打印,并在提交成功后回复当前队列长度。
注意事项
- 如果你需要打印中文,最好配置
RECEIPT_FONT_PATH指向支持中文的字体文件。 - 图片消息需要 OneBot 事件中带有可访问的
url,或消息段file为base64://.../http(s)://...。 - 本插件不会直接连接打印机,只负责把任务提交到
receipts-spooler。
Project details
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 nonebot_plugin_receipts-0.1.0.tar.gz.
File metadata
- Download URL: nonebot_plugin_receipts-0.1.0.tar.gz
- Upload date:
- Size: 13.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3e3a8ac59c64159e4f39fc3e34902d8a1c0169778ca02ca0153f98d17f4268e0
|
|
| MD5 |
6f30c1b95c1e850919c423f66af87ba1
|
|
| BLAKE2b-256 |
3ce4b2bab619810b02fdd4ce03555169f3773b9fb177d695baee398c86cfb184
|
Provenance
The following attestation bundles were made for nonebot_plugin_receipts-0.1.0.tar.gz:
Publisher:
pypi-publish.yml on Effect-Wei/nonebot_plugin_receipts
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
nonebot_plugin_receipts-0.1.0.tar.gz -
Subject digest:
3e3a8ac59c64159e4f39fc3e34902d8a1c0169778ca02ca0153f98d17f4268e0 - Sigstore transparency entry: 1343465600
- Sigstore integration time:
-
Permalink:
Effect-Wei/nonebot_plugin_receipts@cc9e368c24c74f03a879e51292683162448c50ba -
Branch / Tag:
refs/heads/main - Owner: https://github.com/Effect-Wei
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi-publish.yml@cc9e368c24c74f03a879e51292683162448c50ba -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file nonebot_plugin_receipts-0.1.0-py3-none-any.whl.
File metadata
- Download URL: nonebot_plugin_receipts-0.1.0-py3-none-any.whl
- Upload date:
- Size: 12.0 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 |
64ae248eed9ad90afe06c0704d8f60f7b0983bbbba19cce5c2caad4b77ecd88a
|
|
| MD5 |
cd5be9a5044a516f7acf1f66aefc61ba
|
|
| BLAKE2b-256 |
962418c72cb63500ec74a902758bfc3a610a0488afdb230c3217c7fb2f412cca
|
Provenance
The following attestation bundles were made for nonebot_plugin_receipts-0.1.0-py3-none-any.whl:
Publisher:
pypi-publish.yml on Effect-Wei/nonebot_plugin_receipts
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
nonebot_plugin_receipts-0.1.0-py3-none-any.whl -
Subject digest:
64ae248eed9ad90afe06c0704d8f60f7b0983bbbba19cce5c2caad4b77ecd88a - Sigstore transparency entry: 1343465603
- Sigstore integration time:
-
Permalink:
Effect-Wei/nonebot_plugin_receipts@cc9e368c24c74f03a879e51292683162448c50ba -
Branch / Tag:
refs/heads/main - Owner: https://github.com/Effect-Wei
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi-publish.yml@cc9e368c24c74f03a879e51292683162448c50ba -
Trigger Event:
workflow_dispatch
-
Statement type: