<div align="center">
<a href="https://v2.nonebot.dev/store"><img src="https://raw.githubusercontent.com/A-kirami/nonebot-plugin-template/refs/heads/resources/nbp_logo.png" width="180" height="180" alt="NoneBotPluginLogo"></a>
<br>
<p><img src="https://raw.githubusercontent.com/A-kirami/nonebot-plugin-template/refs/heads/resources/NoneBotPlugin.svg" width="240" alt="NoneBotPluginText"></p>
</div>
<div align="center">
# nonebot-plugin-image-symmetry
_✨ NoneBot 图像对称处理插件 ✨_
<a href="./LICENSE">
<img src="https://img.shields.io/github/license/GT-610/nonebot-plugin-image-symmetry.svg" alt="license">
</a>
<a href="https://pypi.python.org/pypi/nonebot-plugin-image-symmetry">
<img src="https://img.shields.io/pypi/v/nonebot-plugin-image-symmetry.svg" alt="pypi">
</a>
<img src="https://img.shields.io/badge/python-3.9+-blue.svg" alt="python">
<a href="https://v2.nonebot.dev/">
<img src="https://img.shields.io/badge/NoneBot-v2-green.svg" alt="NoneBot2">
</a>
</div>
## 📖 介绍
一个 NoneBot 2 插件,提供图像的四个方向对称变换功能:
- 对称左:将图片左半部分镜像翻转后覆盖到右半部分
- 对称右:将图片右半部分镜像翻转后覆盖到左半部分
- 对称上:将图片上半部分镜像翻转后覆盖到下半部分
- 对称下:将图片下半部分镜像翻转后覆盖到上半部分
## 💿 安装
此插件需要 `httpx` 驱动器下载图片,请在 `DRIVER` 变量中添加 `~httpx`。
驱动器安装和配置参考 [NoneBot 选择驱动器](https://nonebot.dev/docs/advanced/driver)。
<details open>
<summary>使用 nb-cli 安装</summary>
在 nonebot2 项目的根目录下打开命令行, 输入以下指令即可安装
nb plugin install nonebot-plugin-image-symmetry
</details>
<details>
<summary>使用包管理器安装</summary>
在 nonebot2 项目的插件目录下, 打开命令行, 根据你使用的包管理器, 输入相应的安装命令
<details>
<summary>pip</summary>
pip install nonebot-plugin-image-symmetry
</details>
<details>
<summary>pdm</summary>
pdm add nonebot-plugin-image-symmetry
</details>
<details>
<summary>poetry</summary>
poetry add nonebot-plugin-image-symmetry
</details>
<details>
<summary>conda</summary>
conda install -c conda-forge nonebot-plugin-image-symmetry
</details>
打开 nonebot2 项目根目录下的 `pyproject.toml` 文件, 在 `[tool.nonebot]` 部分追加写入
plugins = ["nonebot_plugin_image_symmetry"]
</details>
## ⚙️ 配置
### 环境变量配置
插件支持通过环境变量自定义最大缓存图片数量:
| 环境变量 | 类型 | 默认值 | 范围 | 说明 |
| :------- | :--- | :----- | :--- | :--- |
| `IMAGE_SYMMETRY_MAX_CACHE` | 整数 | 100 | [5, 9999] | 控制before和after两个目录中图片的总缓存数量上限 |
> 注意:如果设置的值超出有效范围或无效,插件将自动使用默认值100,并记录警告日志。
### 示例
在你的环境配置文件(如`.env`)中添加:
```
IMAGE_SYMMETRY_MAX_CACHE=200
```
## 🎉 使用
注意:下列命令需要加命令前缀。命令前缀为你的 NoneBot2 环境配置中, `COMMAND_START` 变量的值。
### 指令表
| 指令 | 权限 | 需要@ | 范围 | 说明 |
|:-----:|:----:|:----:|:----:|:----:|
| 对称左 | 群员 | 否 | 群聊/私聊 | 将图片左半部分镜像到右半部分 |
| 对称右 | 群员 | 否 | 群聊/私聊 | 将图片右半部分镜像到左半部分 |
| 对称上 | 群员 | 否 | 群聊/私聊 | 将图片上半部分镜像到下半部分 |
| 对称下 | 群员 | 否 | 群聊/私聊 | 将图片下半部分镜像到上半部分 |
| 对称 | 群员 | 否 | 群聊/私聊 | 对称左的别名 |
| 对称帮助 | 群员 | 否 | 群聊/私聊 | 显示对称插件的帮助信息 |
### 使用方法
#### 方法一:同时发送图片和指令
1. 在聊天中同时发送一张图片和文本指令:`对称左`、`对称右`、`对称上` 或 `对称下`
2. 插件将根据指定的指令自动处理图片并返回结果
#### 方法二:对图片消息回复指令
1. 找到一条包含图片的消息
2. 回复该消息并输入指令:`对称左`、`对称右`、`对称上` 或 `对称下`
3. 插件将根据指定的指令处理回复的图片并返回结果
**注意**:`对称` 是 `对称左` 的别名,使用 `对称` 指令将执行与 `对称左` 相同的操作
## 📝 许可证
本项目采用 Apache License 2.0 许可证。详见 [LICENSE](LICENSE) 文件。
Raw data
{
"_id": null,
"home_page": "https://github.com/GT-610/nonebot-plugin-image-symmetry",
"name": "nonebot-plugin-image-symmetry",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.9",
"maintainer_email": null,
"keywords": "nonebot, nonebot2, plugin, image-processing",
"author": "GT610",
"author_email": "myddz1005@outlook.com",
"download_url": "https://files.pythonhosted.org/packages/cd/43/044f0e4389a6da8140a35c3c358c797c4c11f5499318d1a97d7a3af0273a/nonebot_plugin_image_symmetry-0.2.0.tar.gz",
"platform": null,
"description": "<div align=\"center\">\n <a href=\"https://v2.nonebot.dev/store\"><img src=\"https://raw.githubusercontent.com/A-kirami/nonebot-plugin-template/refs/heads/resources/nbp_logo.png\" width=\"180\" height=\"180\" alt=\"NoneBotPluginLogo\"></a>\n <br>\n <p><img src=\"https://raw.githubusercontent.com/A-kirami/nonebot-plugin-template/refs/heads/resources/NoneBotPlugin.svg\" width=\"240\" alt=\"NoneBotPluginText\"></p>\n</div>\n\n<div align=\"center\">\n\n# nonebot-plugin-image-symmetry\n\n_\u2728 NoneBot \u56fe\u50cf\u5bf9\u79f0\u5904\u7406\u63d2\u4ef6 \u2728_\n\n\n<a href=\"./LICENSE\">\n <img src=\"https://img.shields.io/github/license/GT-610/nonebot-plugin-image-symmetry.svg\" alt=\"license\">\n</a>\n<a href=\"https://pypi.python.org/pypi/nonebot-plugin-image-symmetry\">\n <img src=\"https://img.shields.io/pypi/v/nonebot-plugin-image-symmetry.svg\" alt=\"pypi\">\n</a>\n<img src=\"https://img.shields.io/badge/python-3.9+-blue.svg\" alt=\"python\">\n<a href=\"https://v2.nonebot.dev/\">\n <img src=\"https://img.shields.io/badge/NoneBot-v2-green.svg\" alt=\"NoneBot2\">\n</a>\n\n</div>\n\n## \ud83d\udcd6 \u4ecb\u7ecd\n\n\u4e00\u4e2a NoneBot 2 \u63d2\u4ef6\uff0c\u63d0\u4f9b\u56fe\u50cf\u7684\u56db\u4e2a\u65b9\u5411\u5bf9\u79f0\u53d8\u6362\u529f\u80fd\uff1a\n- \u5bf9\u79f0\u5de6\uff1a\u5c06\u56fe\u7247\u5de6\u534a\u90e8\u5206\u955c\u50cf\u7ffb\u8f6c\u540e\u8986\u76d6\u5230\u53f3\u534a\u90e8\u5206\n- \u5bf9\u79f0\u53f3\uff1a\u5c06\u56fe\u7247\u53f3\u534a\u90e8\u5206\u955c\u50cf\u7ffb\u8f6c\u540e\u8986\u76d6\u5230\u5de6\u534a\u90e8\u5206\n- \u5bf9\u79f0\u4e0a\uff1a\u5c06\u56fe\u7247\u4e0a\u534a\u90e8\u5206\u955c\u50cf\u7ffb\u8f6c\u540e\u8986\u76d6\u5230\u4e0b\u534a\u90e8\u5206\n- \u5bf9\u79f0\u4e0b\uff1a\u5c06\u56fe\u7247\u4e0b\u534a\u90e8\u5206\u955c\u50cf\u7ffb\u8f6c\u540e\u8986\u76d6\u5230\u4e0a\u534a\u90e8\u5206\n\n## \ud83d\udcbf \u5b89\u88c5\n\n\u6b64\u63d2\u4ef6\u9700\u8981 `httpx` \u9a71\u52a8\u5668\u4e0b\u8f7d\u56fe\u7247\uff0c\u8bf7\u5728 `DRIVER` \u53d8\u91cf\u4e2d\u6dfb\u52a0 `~httpx`\u3002\n\n\u9a71\u52a8\u5668\u5b89\u88c5\u548c\u914d\u7f6e\u53c2\u8003 [NoneBot \u9009\u62e9\u9a71\u52a8\u5668](https://nonebot.dev/docs/advanced/driver)\u3002\n\n\n<details open>\n<summary>\u4f7f\u7528 nb-cli \u5b89\u88c5</summary>\n\u5728 nonebot2 \u9879\u76ee\u7684\u6839\u76ee\u5f55\u4e0b\u6253\u5f00\u547d\u4ee4\u884c, \u8f93\u5165\u4ee5\u4e0b\u6307\u4ee4\u5373\u53ef\u5b89\u88c5\n\n nb plugin install nonebot-plugin-image-symmetry\n\n</details>\n\n<details>\n<summary>\u4f7f\u7528\u5305\u7ba1\u7406\u5668\u5b89\u88c5</summary>\n\u5728 nonebot2 \u9879\u76ee\u7684\u63d2\u4ef6\u76ee\u5f55\u4e0b, \u6253\u5f00\u547d\u4ee4\u884c, \u6839\u636e\u4f60\u4f7f\u7528\u7684\u5305\u7ba1\u7406\u5668, \u8f93\u5165\u76f8\u5e94\u7684\u5b89\u88c5\u547d\u4ee4\n\n<details>\n<summary>pip</summary>\n\n pip install nonebot-plugin-image-symmetry\n</details>\n<details>\n<summary>pdm</summary>\n\n pdm add nonebot-plugin-image-symmetry\n</details>\n<details>\n<summary>poetry</summary>\n\n poetry add nonebot-plugin-image-symmetry\n</details>\n<details>\n<summary>conda</summary>\n\n conda install -c conda-forge nonebot-plugin-image-symmetry\n</details>\n\n\u6253\u5f00 nonebot2 \u9879\u76ee\u6839\u76ee\u5f55\u4e0b\u7684 `pyproject.toml` \u6587\u4ef6, \u5728 `[tool.nonebot]` \u90e8\u5206\u8ffd\u52a0\u5199\u5165\n\n plugins = [\"nonebot_plugin_image_symmetry\"]\n\n</details>\n\n## \u2699\ufe0f \u914d\u7f6e\n\n### \u73af\u5883\u53d8\u91cf\u914d\u7f6e\n\n\u63d2\u4ef6\u652f\u6301\u901a\u8fc7\u73af\u5883\u53d8\u91cf\u81ea\u5b9a\u4e49\u6700\u5927\u7f13\u5b58\u56fe\u7247\u6570\u91cf\uff1a\n\n| \u73af\u5883\u53d8\u91cf | \u7c7b\u578b | \u9ed8\u8ba4\u503c | \u8303\u56f4 | \u8bf4\u660e |\n| :------- | :--- | :----- | :--- | :--- |\n| `IMAGE_SYMMETRY_MAX_CACHE` | \u6574\u6570 | 100 | [5, 9999] | \u63a7\u5236before\u548cafter\u4e24\u4e2a\u76ee\u5f55\u4e2d\u56fe\u7247\u7684\u603b\u7f13\u5b58\u6570\u91cf\u4e0a\u9650 |\n\n> \u6ce8\u610f\uff1a\u5982\u679c\u8bbe\u7f6e\u7684\u503c\u8d85\u51fa\u6709\u6548\u8303\u56f4\u6216\u65e0\u6548\uff0c\u63d2\u4ef6\u5c06\u81ea\u52a8\u4f7f\u7528\u9ed8\u8ba4\u503c100\uff0c\u5e76\u8bb0\u5f55\u8b66\u544a\u65e5\u5fd7\u3002\n\n### \u793a\u4f8b\n\n\u5728\u4f60\u7684\u73af\u5883\u914d\u7f6e\u6587\u4ef6\uff08\u5982`.env`\uff09\u4e2d\u6dfb\u52a0\uff1a\n```\nIMAGE_SYMMETRY_MAX_CACHE=200\n```\n\n## \ud83c\udf89 \u4f7f\u7528\n\u6ce8\u610f\uff1a\u4e0b\u5217\u547d\u4ee4\u9700\u8981\u52a0\u547d\u4ee4\u524d\u7f00\u3002\u547d\u4ee4\u524d\u7f00\u4e3a\u4f60\u7684 NoneBot2 \u73af\u5883\u914d\u7f6e\u4e2d\uff0c `COMMAND_START` \u53d8\u91cf\u7684\u503c\u3002\n\n### \u6307\u4ee4\u8868\n| \u6307\u4ee4 | \u6743\u9650 | \u9700\u8981@ | \u8303\u56f4 | \u8bf4\u660e |\n|:-----:|:----:|:----:|:----:|:----:|\n| \u5bf9\u79f0\u5de6 | \u7fa4\u5458 | \u5426 | \u7fa4\u804a/\u79c1\u804a | \u5c06\u56fe\u7247\u5de6\u534a\u90e8\u5206\u955c\u50cf\u5230\u53f3\u534a\u90e8\u5206 |\n| \u5bf9\u79f0\u53f3 | \u7fa4\u5458 | \u5426 | \u7fa4\u804a/\u79c1\u804a | \u5c06\u56fe\u7247\u53f3\u534a\u90e8\u5206\u955c\u50cf\u5230\u5de6\u534a\u90e8\u5206 |\n| \u5bf9\u79f0\u4e0a | \u7fa4\u5458 | \u5426 | \u7fa4\u804a/\u79c1\u804a | \u5c06\u56fe\u7247\u4e0a\u534a\u90e8\u5206\u955c\u50cf\u5230\u4e0b\u534a\u90e8\u5206 |\n| \u5bf9\u79f0\u4e0b | \u7fa4\u5458 | \u5426 | \u7fa4\u804a/\u79c1\u804a | \u5c06\u56fe\u7247\u4e0b\u534a\u90e8\u5206\u955c\u50cf\u5230\u4e0a\u534a\u90e8\u5206 |\n| \u5bf9\u79f0 | \u7fa4\u5458 | \u5426 | \u7fa4\u804a/\u79c1\u804a | \u5bf9\u79f0\u5de6\u7684\u522b\u540d |\n| \u5bf9\u79f0\u5e2e\u52a9 | \u7fa4\u5458 | \u5426 | \u7fa4\u804a/\u79c1\u804a | \u663e\u793a\u5bf9\u79f0\u63d2\u4ef6\u7684\u5e2e\u52a9\u4fe1\u606f |\n\n### \u4f7f\u7528\u65b9\u6cd5\n#### \u65b9\u6cd5\u4e00\uff1a\u540c\u65f6\u53d1\u9001\u56fe\u7247\u548c\u6307\u4ee4\n1. \u5728\u804a\u5929\u4e2d\u540c\u65f6\u53d1\u9001\u4e00\u5f20\u56fe\u7247\u548c\u6587\u672c\u6307\u4ee4\uff1a`\u5bf9\u79f0\u5de6`\u3001`\u5bf9\u79f0\u53f3`\u3001`\u5bf9\u79f0\u4e0a` \u6216 `\u5bf9\u79f0\u4e0b`\n2. \u63d2\u4ef6\u5c06\u6839\u636e\u6307\u5b9a\u7684\u6307\u4ee4\u81ea\u52a8\u5904\u7406\u56fe\u7247\u5e76\u8fd4\u56de\u7ed3\u679c\n\n#### \u65b9\u6cd5\u4e8c\uff1a\u5bf9\u56fe\u7247\u6d88\u606f\u56de\u590d\u6307\u4ee4\n1. \u627e\u5230\u4e00\u6761\u5305\u542b\u56fe\u7247\u7684\u6d88\u606f\n2. \u56de\u590d\u8be5\u6d88\u606f\u5e76\u8f93\u5165\u6307\u4ee4\uff1a`\u5bf9\u79f0\u5de6`\u3001`\u5bf9\u79f0\u53f3`\u3001`\u5bf9\u79f0\u4e0a` \u6216 `\u5bf9\u79f0\u4e0b`\n3. \u63d2\u4ef6\u5c06\u6839\u636e\u6307\u5b9a\u7684\u6307\u4ee4\u5904\u7406\u56de\u590d\u7684\u56fe\u7247\u5e76\u8fd4\u56de\u7ed3\u679c\n\n**\u6ce8\u610f**\uff1a`\u5bf9\u79f0` \u662f `\u5bf9\u79f0\u5de6` \u7684\u522b\u540d\uff0c\u4f7f\u7528 `\u5bf9\u79f0` \u6307\u4ee4\u5c06\u6267\u884c\u4e0e `\u5bf9\u79f0\u5de6` \u76f8\u540c\u7684\u64cd\u4f5c\n\n## \ud83d\udcdd \u8bb8\u53ef\u8bc1\n\n\u672c\u9879\u76ee\u91c7\u7528 Apache License 2.0 \u8bb8\u53ef\u8bc1\u3002\u8be6\u89c1 [LICENSE](LICENSE) \u6587\u4ef6\u3002\n",
"bugtrack_url": null,
"license": "Apache-2.0",
"summary": "NoneBot \u56fe\u50cf\u5bf9\u79f0\u5904\u7406\u63d2\u4ef6\uff0c\u63d0\u4f9b\u56fe\u7247\u4e0a\u4e0b\u5de6\u53f3\u56db\u4e2a\u65b9\u5411\u7684\u5bf9\u79f0\u53d8\u6362\u529f\u80fd",
"version": "0.2.0",
"project_urls": {
"Homepage": "https://github.com/GT-610/nonebot-plugin-image-symmetry",
"Repository": "https://github.com/GT-610/nonebot-plugin-image-symmetry"
},
"split_keywords": [
"nonebot",
" nonebot2",
" plugin",
" image-processing"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "de566aae2add2315839c17410cafee6a4f0e8d94d050a9b6b0c41f20f8bb8ab0",
"md5": "3815ac74453fdbe09b797355619631bd",
"sha256": "ac8465a2549388bd2b7281f5f48b0a76a0632581d4b16e94615058eb1b220670"
},
"downloads": -1,
"filename": "nonebot_plugin_image_symmetry-0.2.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "3815ac74453fdbe09b797355619631bd",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.9",
"size": 20037,
"upload_time": "2025-11-13T09:53:36",
"upload_time_iso_8601": "2025-11-13T09:53:36.983407Z",
"url": "https://files.pythonhosted.org/packages/de/56/6aae2add2315839c17410cafee6a4f0e8d94d050a9b6b0c41f20f8bb8ab0/nonebot_plugin_image_symmetry-0.2.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "cd43044f0e4389a6da8140a35c3c358c797c4c11f5499318d1a97d7a3af0273a",
"md5": "caf6651a5247cb1b274788fe4b53d3e9",
"sha256": "6d621c49f6a9f313560ab67d5f117715e55de6f942756c30a50860dfd4de7065"
},
"downloads": -1,
"filename": "nonebot_plugin_image_symmetry-0.2.0.tar.gz",
"has_sig": false,
"md5_digest": "caf6651a5247cb1b274788fe4b53d3e9",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.9",
"size": 18282,
"upload_time": "2025-11-13T09:53:38",
"upload_time_iso_8601": "2025-11-13T09:53:38.461725Z",
"url": "https://files.pythonhosted.org/packages/cd/43/044f0e4389a6da8140a35c3c358c797c4c11f5499318d1a97d7a3af0273a/nonebot_plugin_image_symmetry-0.2.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-11-13 09:53:38",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "GT-610",
"github_project": "nonebot-plugin-image-symmetry",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "nonebot-plugin-image-symmetry"
}