Skip to content

orchidsziyou/astrbot_plugins_ConvetPicture

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ConvertPicture 插件

介绍

由于QQ现在没办法直接保存别人发的gif或者表情,用其他方法也麻烦,本插件就是为了解决这个问题的。
新增功能: 可以修改图片在聊天外面显示的内容(把[动画表情]修改为别的)。

图片1

依赖

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

原理

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

使用

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

2.修改图片显示内容:
回复某图片,发送 /rename [修改的名字] 即可
eg: /rename [xb]

3.添加群聊黑名单,在指定群聊里面不能使用转换功能(污染了群文件)
-添加黑名单功能:在需要关闭功能的群聊里面发送 /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: 新增黑名单功能:在指定群聊里面不能使用转换功能(可能会污染了群文件,影响群内其他功能)

2026/1/31: 新增修改图片显示内容功能,具体使用方法看使用文档。

About

转换qq不可直接保存的表情包

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

Generated from Soulter/helloworld