一个通过指令随机发送你存储的图片的nonebot2插件
Project description
📖 介绍
这是由 nonebot-plugin-capoo 插件衍生而来的随机发送图片的插件,从使用上来看,这个插件远优于 nonebot-plugin-capoo 插件。
你可以很方便地直接通过在配置文件里设置好触发指令(支持多个触发指令)后,在群聊中发送对应指令,从而使 Bot 随机发送出你所存储的图片。
插件除了能随机发送图片,还能在群聊内直接通过指令存储图片,同时为了避免重复加入同一张图片,该插件添加了 md5 码检查。
随机发送图片是利用 sql 语句随机选择指令。
该插件的运行逻辑是:
- 自动在 Bot 所设路径下创建一个
randpic文件夹; - 在你预设指令(可以是多个)后,插件会检索指令,并在
randpic/img目录下生成所有你预设命令作为名字的文件夹,同时在randpic/database目录下生成一个data.db的数据库文件; - 之后你可以通过 Bot 存储图片,也可以直接在
<预设命令>文件夹下存储图片。
例如你设置了其中一个触发指令为capoo,并且你设置了存储路径为/data,你可以自己直接给bot运行的服务器的/data/randpic/img/capoo/文件夹上传你想要的图片,并且你在群聊中通过指令让bot存储的图片也会存储在/data/randpic/img/capoo/里。
你可以在bot未启动期间任意修改图片文件夹内的所有内容,因为在启动bot后插件会自动做图片配置检查,因此你不用担心自己修改图片后会导致数据库与文件夹内容不同步。
由于发送大储存的图片对于服务器来说压力很大,因此,图片大于1MB的将压缩至1MB以内再储存,请有高清图片保存需求的慎用!!!(毕竟发在群里的图片,画质太高也是浪费嘛)
在启动bot后不建议修改、删除以及添加图片,否则可能会造成一些未知bug。
不建议你存储过多图片(指几万张甚至更多),因为没做过存储大量图片的测试。
静态网页生成的方案
图片太多太杂,上服务器查看图片太过麻烦,你是不是想通过网页直接看到目前已经存储了哪些图片?自v1.0.0版本后,本插件可以配置生成静态网页,目前已有两种生成方案。
fastapi生成静态网页
Bot启动后,会尝试构建静态网页,如果drivers中没有配置fastapi,将无法生效。
启动完成后,访问 http://:/randpic 即可查看到内容。
阿里云OSS对象存储
适用对象:1、服务器配置较低的用户:部署一个Bot后,再拉起一个web服务,服务器吃不消;2、服务器没有公网IP的用户:没有公网IP的话,在服务器上拉起web服务,其他人也无法访问(内网还是能访问的)。
配置阿里云OSS对象存储,如果你自己手里有已备案的域名,可以用来搭建静态网页,方便 自己/群友 点击链接查看图片列表。
如何配置阿里云OSS对象存储?请自行百度搜索步骤。
想要在插件里启用阿里云OSS功能,你需要准备好以下数据,便于之后配置到.env文件中:
- randpic_endpoint:自定义域名。你的OSS bucket捆绑的哪个域名就填哪个。注意尾部不加
/; - randpic_bucket:阿里云OSS存储空间的名称;
- randpic_region:bucket所在的地域,例如
cn-beijing,各个地域ID可见OSS地域和访问域名; - randpic_oss_access_key_id、randpic_oss_access_key_secret:阿里云用户的AccessKey ID和AccessKey Secret。
以上的配置项不配齐的话静态网页功能将不生效。
bucket的访问权限至少要设置为公共读,否则通过域名也无法访问到图片。为了能网页访问,你需要给bucket配置好你自己的域名。
另外还需要如下图这样设置bucket的静态页面,跟下图一样地配置即可:
注意:静态页面要通过 上传oss 指令后才会构建页面,但是每次通过 添加 指令添加图片时,无需重复发送 上传oss 指令,图片会自动上传。构建静态页面的时间可能比较长,因此要尽可能减少构建频率。
若有不明白的地方可以尝试联系我。
💿 安装
使用 nb-cli 安装
在 nonebot2 项目的根目录下打开命令行, 输入以下指令即可安装nb plugin install nonebot-plugin-randpic
使用包管理器安装
在 nonebot2 项目的插件目录下, 打开命令行, 根据你使用的包管理器, 输入相应的安装命令pip
pip install nonebot-plugin-randpic
pdm
pdm add nonebot-plugin-randpic
poetry
poetry add nonebot-plugin-randpic
conda
conda install nonebot-plugin-randpic
打开 nonebot2 项目根目录下的 pyproject.toml 文件, 在 [tool.nonebot] 部分追加写入
plugins = ["nonebot_plugin_capoo"]
⚙️ 配置
在 nonebot2 项目的.env文件中添加下表中的必填配置,非必填配置不添加也能正常使用。
| 配置项 | 必填 | 默认值 | 说明 |
|---|---|---|---|
| randpic_command_list | 否 | ["capoo"] | 预设的触发指令,默认是capoo,即capoo触发发送图片 |
| randpic_store_dir_path | 否 | get_data_dir("nonebot_plugin_randpic") | 图片存储的路径,用户自定义路径,不定义路径则由localstore插件定义路径 |
| randpic_banner_group | 否 | [] | 不触发发图功能的群聊 |
| randpic_endpoint | 否 | None | 填写自定义域名,域名尾部不用加/ (后续实现相关功能) |
| randpic_bucket | 否 | None | 阿里云OSS对象存储空间名称(bucket) |
| randpic_region | 否 | None | 阿里云OSS对象存储bucket所在地域 |
| randpic_oss_access_key_id | 否 | None | 阿里云用户AccessKey ID |
| randpic_oss_access_key_secret | 否 | None | 阿里云用户AccessKey Secret |
| randpic_oss_no_upload_list | 否 | [] | 不上传到OSS的指令文件夹列表,该列表中对应的指令均不上传至OSS |
例如这样配置(这是例子,不代表你也需要这样配置):
randpic_command_list=["capoo", "马哥"]
randpic_store_dir_path="data/randpic"
randpic_banner_group=[574145050]
randpic_endpoint="https://xxx.huparry.cn"
randpic_bucket="randpic"
randpic_region="cn-beijing"
randpic_oss_access_key_id="xxxxxxxxxxxxxxxxxxxxxx"
randpic_oss_access_key_secret="xxxxxxxxxxxxxxxxxxxxx"
randpic_oss_no_upload_list=["capoo"]
🎉 使用
指令表
| 指令 | 权限 | 需要@ | 范围 | 说明 |
|---|---|---|---|---|
<你设置的指令> |
群员 | 否 | 群聊 | 随机发送一张对应指令的图片 |
添加<你设置的指令> |
群管 | 否 | 群聊 | 让 bot 存储图片到对应文件夹下 |
上传oss |
群管 | 否 | 群聊 | 若配置了阿里云OSS,则通过该指令生成静态网页上传至OSS |
效果图
capoo 指令
添加capoo 指令
马哥 指令
添加马哥 指令
上传oss 指令
静态页面网页效果(仅在正确配置OSS情况下生效)
TODO
- 指令触发 bot 发送图片
- 在 QQ 上让 bot 存储对应指令的图片
- 每次存储图片,判断图片是否已经存在,避免重复加入
- 由capoo插件衍生成一个模板插件,即仅需修改参数就能发送别的图片
- 添加图片压缩功能,避免图片文件夹空间过大
- 以阿里云OSS对象存储搭建静态网页,便于浏览器查看图片
- 完善权限管理机制,采用更详细的权限管理,避免插件滥用
- 添加智能识图选项(调用api),避免添加违禁图导致被风控
鸣谢
感谢以下开发者作出的贡献:
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 nonebot_plugin_randpic-1.0.6.tar.gz.
File metadata
- Download URL: nonebot_plugin_randpic-1.0.6.tar.gz
- Upload date:
- Size: 19.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b756ebe2384f9e43bc570e8b75822b370cd9f7f22a97c3a0c052834a56fb0ff9
|
|
| MD5 |
77f1f7bb0e9618aa328c637dda195b37
|
|
| BLAKE2b-256 |
90cd7dda6ad96d5b08d4909ee188b902e68ceddd59659902f2a82c1e9799ea04
|
File details
Details for the file nonebot_plugin_randpic-1.0.6-py3-none-any.whl.
File metadata
- Download URL: nonebot_plugin_randpic-1.0.6-py3-none-any.whl
- Upload date:
- Size: 18.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3a6114a4a944194b140d434bce0ca4f7eb525c51120fb1547ff435788322ee62
|
|
| MD5 |
e155a7b5d61aca920b39358e5e905cc6
|
|
| BLAKE2b-256 |
9ff35b5e6ed9fe36d5b93695b48a78eff327f51b84dbf5e7709a91b3bc251f93
|