Skip to content

Commit

Permalink
Init commit
Browse files Browse the repository at this point in the history
  • Loading branch information
colasama committed Apr 26, 2024
1 parent 7d12127 commit 594130b
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 66 deletions.
86 changes: 20 additions & 66 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,77 +1,41 @@
<div align="center">
<a href="https://v2.nonebot.dev/store"><img src="https://github.com/A-kirami/nonebot-plugin-template/blob/resources/nbp_logo.png" width="180" height="180" alt="NoneBotPluginLogo"></a>
<a href="https://v2.nonebot.dev/store"><img src="https://github.com/A-kirami/nonebot-plugin-sticker-saver/blob/resources/nbp_logo.png" width="180" height="180" alt="NoneBotPluginLogo"></a>
<br>
<p><img src="https://github.com/A-kirami/nonebot-plugin-template/blob/resources/NoneBotPlugin.svg" width="240" alt="NoneBotPluginText"></p>
<p><img src="https://github.com/A-kirami/nonebot-plugin-sticker-saver/blob/resources/NoneBotPlugin.svg" width="240" alt="NoneBotPluginText"></p>
</div>

<div align="center">

# nonebot-plugin-template
# nonebot-plugin-sticker-saver

_NoneBot 插件简单描述 ✨_
_一款很简单的,用于保存已经不提供保存选项的 QQ 表情包的 Nonebot 插件 ✨_


<a href="./LICENSE">
<img src="https://img.shields.io/github/license/owner/nonebot-plugin-template.svg" alt="license">
<img src="https://img.shields.io/github/license/colasama/nonebot-plugin-sticker-saver.svg" alt="license">
</a>
<a href="https://pypi.python.org/pypi/nonebot-plugin-template">
<img src="https://img.shields.io/pypi/v/nonebot-plugin-template.svg" alt="pypi">
<a href="https://pypi.python.org/pypi/nonebot-plugin-sticker-saver">
<img src="https://img.shields.io/pypi/v/nonebot-plugin-sticker-saver.svg" alt="pypi">
</a>
<img src="https://img.shields.io/badge/python-3.8+-blue.svg" alt="python">

</div>

这是一个 nonebot2 插件项目的模板库, 你可以直接使用本模板创建你的 nonebot2 插件项目的仓库

<details>
<summary>模板库使用方法</summary>

1. 点击仓库中的 "Use this template" 按钮, 输入仓库名与描述, 点击 " Create repository from template" 创建仓库
2. 在创建好的新仓库中, 在 "Add file" 菜单中选择 "Create new file", 在新文件名处输入`LICENSE`, 此时在右侧会出现一个 "Choose a license template" 按钮, 点击此按钮选择开源协议模板, 然后在最下方提交新文件到主分支
3. 全局替换`owner`为仓库所有者ID; 全局替换`nonebot-plugin-template`为插件名; 全局替换`nonebot_plugin_template`为包名; 修改 python 徽标中的版本为你插件的运行所需版本
4. 修改 README 中的插件名和插件描述, 并在下方填充相应的内容

</details>

<details>
<summary>配置发布工作流</summary>

模块库中自带了一个发布工作流, 你可以使用此工作流自动发布你的插件到 pypi

> [!IMPORTANT]
> 这个发布工作流需要 pyproject.toml 文件, 并且只支持 [PEP 621](https://peps.python.org/pep-0621/) 标准的 pyproject.toml 文件
1. 前往 https://pypi.org/manage/account/#api-tokens 并创建一个新的 API 令牌。创建成功后不要关闭页面,不然你将无法再次查看此令牌。
2. 在单独的浏览器选项卡或窗口中,打开 [Actions secrets and variables](./settings/secrets/actions) 页面。你也可以在 Settings - Secrets and variables - Actions 中找到此页面。
3. 点击 New repository secret 按钮,创建一个名为 `PYPI_API_TOKEN` 的新令牌,并从第一步复制粘贴令牌。

</details>

<details>
<summary>触发发布工作流</summary>
从本地推送任意 tag 即可触发。

创建 tag:

git tag <tag_name>

推送本地所有 tag:

git push origin --tags
## 📖 介绍

</details>
一款很简单的用于保存表情包的 Nonebot 插件,无需任何配置,只需以 `.save` 命令回复表情包即可。

## 📖 介绍
机器人回复的静态表情可以直接保存,动态表情可以通过短链接保存。

这里是插件的详细介绍部分
如果想要替换短链接 API,请修改代码第 20 行及以后部分。

## 💿 安装

<details open>
<summary>使用 nb-cli 安装</summary>
在 nonebot2 项目的根目录下打开命令行, 输入以下指令即可安装

nb plugin install nonebot-plugin-template
nb plugin install nonebot-plugin-sticker-saver

</details>

Expand All @@ -82,44 +46,34 @@ _✨ NoneBot 插件简单描述 ✨_
<details>
<summary>pip</summary>

pip install nonebot-plugin-template
pip install nonebot-plugin-sticker-saver
</details>
<details>
<summary>pdm</summary>

pdm add nonebot-plugin-template
pdm add nonebot-plugin-sticker-saver
</details>
<details>
<summary>poetry</summary>

poetry add nonebot-plugin-template
poetry add nonebot-plugin-sticker-saver
</details>
<details>
<summary>conda</summary>

conda install nonebot-plugin-template
conda install nonebot-plugin-sticker-saver
</details>

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

plugins = ["nonebot_plugin_template"]
plugins = ["nonebot_plugin_sticker_saver"]

</details>

## ⚙️ 配置

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

| 配置项 | 必填 | 默认值 | 说明 |
|:-----:|:----:|:----:|:----:|
| 配置项1 ||| 配置说明 |
| 配置项2 ||| 配置说明 |

## 🎉 使用
## 🎉 使用方式
### 指令表
| 指令 | 权限 | 需要@ | 范围 | 说明 |
|:-----:|:----:|:----:|:----:|:----:|
| 指令1 | 主人 || 私聊 | 指令说明 |
| 指令2 | 群员 || 群聊 | 指令说明 |
| save / 保存图片 / 保存表情 / 保存 ||| 私聊 / 群聊 | 通过回复消息来获取表情包文件和链接 |
### 效果图
如果有效果图的话
![](./assets/sample.jpg)
Binary file added assets/sample.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
32 changes: 32 additions & 0 deletions nonebot_plugin_sticker_saver/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
from nonebot.plugin import on_command, PluginMetadata
from nonebot import on_message, logger
from nonebot.adapters.onebot.v11 import Bot, Message, MessageEvent, MessageSegment
from httpx import AsyncClient

face_extractor = on_command('save', aliases={'保存图片', '保存表情', '保存'}, priority=10, block=True)

@face_extractor.handle()
async def handle_face_extraction(bot: Bot, event: MessageEvent):
if event.reply:
# 获取被回复的消息内容
original_message = event.reply.message
# 提取表情包并发送回去,静态表情包可以直接被保存
for seg in original_message:
logger.debug("seg: " + seg + " type: " + str(seg.type))
if seg.type == "image":
content = MessageSegment.text("表情:") + MessageSegment.image(seg.data["url"], type_=0)
async with AsyncClient() as client:
# 用于 .gif 格式的表情包保存,加上一层短链接防止可能的检测,可以修改不同的 API
url = "https://t.apii.cn/?url=" + str(seg.data["url"])
try:
req = await client.get(url=url)
result = req.json()
data = result.get("url")
except Exception as e:
await bot.send(event, "获取短链接失败")
await bot.send(event, content + "原始链接:" + data)
return
await bot.send(event, "未在回复内容中检测到表情...")
# 如果没有回复消息
else:
await bot.send(event, "只有回复表情才可以用捏")

0 comments on commit 594130b

Please sign in to comment.