来提交你的插件吧!
有疑问?来看看呗!

插件详情

astrbot_plugins_ConvetPicture

[仅aiocqhttp]把QQ里面不可保存的表情转化为可以保存的图片,包括GIF

日常使用
版本v1.1
作者orchidsziyou
Star7
更新2025/09/25

插件说明

ConvertPicture 插件

介绍

由于QQ现在没办法直接保存别人发的gif或者表情,用其他方法也麻烦,本插件就是为了解决这个问题的。

依赖

本插件使用了aiochttp的API,仅在Napcat下测试过,其他环境可能无法正常运行。
建议使用了Napcat的用户安装使用本插件

原理

本插件使用了aiochttp的API,通过API将图片转换为其他格式。
实现方法为:
1.从本地文件里面读取图片,获取接收到的图片的路径
2.以 文件 的格式发送图片
之后图片即可保存

使用

回复某图片,发送 /转换 即可。之后bot会发送转换后的文件。
如果图片是静态图片,发送后的图片直接保存即可。
如果图片是gif,需要点击 查看原图 之后图片才会动。

后续增加功能:

1.添加群聊黑名单,在指定群聊里面不能使用转换功能(污染了群文件)
-添加黑名单功能:在需要关闭功能的群聊里面发送 /convert addblock 即可自动添加到blocklist当中。
-取消黑名单功能:在需要取消黑名单的群聊里面发送 /convert delblock 即可自动取消blocklist当中的群聊。

注意:

由于本插件的原理是把图片以文件的形式发送,因此尽量私聊使用,否则会产生很多的群文件,导致群里面有用的群文件被淹没。

更新日志

-2025/5/11:
修复了较新版本的astrbot无法正常使用的问题,推测原因是以下代码导致的:

chain = [
    File(file=file_url, name=filename) 
    ] 
yield event.chain_result(chain)

修改为了直接调用NapCat的Api来发送文件,具体代码如下:

                from astrbot.core.platform.sources.aiocqhttp.aiocqhttp_message_event import AiocqhttpMessageEvent
                assert isinstance(event, AiocqhttpMessageEvent)
                if event.get_message_type() == MessageType.FRIEND_MESSAGE:
                    user_id = event.get_sender_id()
                    client = event.bot
                    payloads2 = {
                        "user_id": user_id,
                        "message": [
                            {
                                "type": "file",
                                "data": {
                                    "file": file_url,
                                    "name": filename
                                }
                            }
                        ]
                    }
                    await client.api.call_action('send_private_msg', **payloads2)  # 调用 协议端  API
                if event.get_message_type() == MessageType.GROUP_MESSAGE:
                    group_id = event.get_group_id()
                    client = event.bot
                    payloads2 = {
                        "group_id": group_id,
                        "message": [
                            {
                                "type": "file",
                                "data": {
                                    "file": file_url,
                                    "name": filename
                                }
                            }
                        ]
                    }
                    await client.api.call_action('send_group_msg', **payloads2) 

现在应该可以正常使用了。

在astrbot的v3.5.9版本中,astrbot团队修复了以下问题:

修复: 单独发送文件时被认为是空消息导致文件无法发送的问题 @Soulter

现在旧版的代码在新版astrbot中应该也能正常运行了。

2025/6/3:
新增:可以转换qq官方表情包(就是需要订阅下载使用的那些),使用aiohttp下载到本地之后以图片发出

2025/9/25:
新增黑名单功能:在指定群聊里面不能使用转换功能(可能会污染了群文件,影响群内其他功能)

AstrBot LogoAstrBot 插件市场社区

AstrBot 插件市场 是一个开放的插件分享平台,欢迎开发者们贡献优质插件。本站致力于为 AstrBot 用户提供高质量扩展,帮助您快速找到喜欢的插件,并鼓励社区伙伴分享使用心得、提出改进建议。

相关链接

官方项目主站 官方插件市场 官方项目仓库 侧边展示主站

开发相关

插件开发文档 快速提交插件 官方项目文档

© 2026 AstrBot 插件市场 Made with by Community