npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

koishi-plugin-emojihub-bili

v2.1.0

Published

[<ruby>Emojihub-bili<rp>(</rp><rt>点我查看食用方法</rt><rp>)</rp></ruby>](https://www.npmjs.com/package/koishi-plugin-emojihub-bili)🐱支持QQ官方json按钮!20群即可发按钮!😍可自定义添加或删除任意表情包!基本每个指令都有上千张!支持定时/定量消息触发![点我查看食用方法](https://www.npmjs.com/package/koishi-plugin-emojihub-bi

Downloads

216

Readme

koishi-plugin-emojihub-bili

npm npm downloads

🐱🌟欢迎使用 emojihub-bili,这是emojihub插件的复刻版本!

拥有丰富多彩的表情包指令!😍 您还可以自定义添加或删除表情包!

几乎每个指令都包含上千张精选表情包!

功能亮点 ✨

  • 超多表情包:提供各种风格和主题的表情包,满足不同场合的需求。
  • 自定义添加/删除:根据您的需求,轻松添加或移除特定表情包。
  • 简单易用:通过简单的指令,即可使用丰富的表情包资源。
  • 多种地址支持: 支持本地文件夹绝对路径本地图片文件绝对路径图片直链本地.txt文件绝对路径
  • QQ官方机器人支持:支持QQ官方机器人的Markdown、JSON按钮、原生Markdown等多种消息格式。

安装指南 🛠️

前往 Koishi 插件市场 搜索并安装emojihub-bili


使用指南 📘

使用 emojihub-bili 插件非常简单!只需在聊天中输入相应的指令,即可随机发送一张相关主题的表情包。例如:

  • 2233娘小剧场:发送与 "2233娘小剧场" 相关的表情包。
  • 阿尼亚表情包:发送与 "阿尼亚表情包" 相关的表情包。

| 随机emojihub表情包 | | ------------------ | | 本地图库示例 | | 网络图片示例 | | 2233娘小剧场表情包 | | acomu414表情包 | | ba表情包 | | capoo表情包 | | chiikawa表情包 | | downvote表情包 | | doro表情包 | | eveonecat表情包 | | fufu表情包 | | girlsbandcry | | kemomimi表情包 | | koishi-meme表情包 | | mygo表情包 | | seseren表情包 | | 阿夸表情包 | | 阿尼亚表情包 | | 白圣女表情包 | | 白圣女漫画表情包 | | 柴郡表情包 | | 甘城猫猫表情包 | | 孤独摇滚表情包 | | 狗妈表情包 | | 滑稽表情包 | | 疾旋鼬表情包 | | 流萤表情包 | | 龙图表情包 | | 小c表情包 | | 男娘武器库表情包 | | 千恋万花表情包 | | 赛马娘表情包 | | 瑟莉亚表情包 | | 小黑子表情包 | | 心海表情包 | | 绪山真寻表情包 | | 亚托莉表情包 | | 永雏小菲表情包 | | 宇佐紀表情包 |


如何额外添加自己喜欢的表情包

添加额外的表情包到 emojihub-bili 非常简单!只需按照以下步骤操作:

  1. 安装扩展(用户脚本管理器)
    在浏览器中添加扩展:ScriptCat---脚本猫

  2. 安装脚本
    在用户脚本管理器中添加脚本:点击此处查看 Bilibili专栏原图链接提取2024改版

  3. 搜索表情包
    开启扩展后,访问 哔哩哔哩专栏搜索,在专栏中搜索您需要的表情包。

  4. 提取链接
    点击进入具体的某个专栏帖子,屏幕靠近右下角会有一个绿色的【提取链接】按钮。点击该按钮,即可下载包含当前专栏所有图片的 URL 的 txt 文件。按钮按下一次后会变成红色,防止误触,不可二次触发。如需再次下载,请刷新页面。

  5. 配置 emojihub-bili
    将同一类表情包图片的 URL 整合到同一个 txt 文件中。然后,在 Koishi 的配置项中填入相应的指令名称与 txt 文件路径。无需像自带的 txt 一样省略前缀,写完整 URL 即可。

  6. 保存并重载
    完成配置后,保存您的配置并重载插件,您就可以使用自定义的指令发送表情包了!🌟📚

温馨提示:

  • 请勿将自定义的 txt 文件与本插件放置在同一目录下,以免插件更新导致文件丢失。
  • 目前 emojihub-bili 默认提供 43 套表情包。若您的配置内容有误差,请在 MoreEmojiHubList 表格右上角按钮内选择 恢复默认值
  • 若开启插件后,指令不出现,请重新开关 commands 插件

如何删除已添加的表情包指令

如果您需要删除已经添加到 emojihub-bili 的自定义表情包指令,可以按照以下步骤进行:

  1. 在 Koishi 控制台内打开插件

    打开您的 Koishi 控制台,并找到 emojihub-bili 插件。

  2. 找到 [基础设置] 里面的 [MoreEmojiHubList] 表格: 在插件的设置界面中,找到名为 “MoreEmojiHubList” 的部分。您会看到类似于 “MoreEmojiHubList” 的表格,点击对应的右侧的 [删除] 按钮。

  3. 保存更改: 完成删除操作后,点击页面右上角的勾号,以保存您的更改并重载插件。这样更改就会生效。

自定义表情包指令 ⚙️

除了默认的表情包指令,您还可以通过配置 MoreEmojiHubList 来自定义添加新的表情包指令。

MoreEmojiHubList 是一个数组,每个元素都包含以下两个字段:

  • command:您希望注册的指令名称,例如 自定义表情包
  • source_url:表情包的来源地址,支持以下格式:
    • 本地文件夹绝对路径
      • D:\\Pictures\\koishi\\AL1S手绘
      • D:\Pictures\koishi\AL1S手绘
      • file:///D:/Pictures/koishi/AL1S%E6%89%8B%E7%BB%98
    • 本地图片文件绝对路径
      • D:\\Pictures\\koishi\\AL1S手绘\\image.png
      • D:\Pictures\koishi\AL1S手绘\image.png
      • file:///D:/Pictures/koishi/AL1S%E6%89%8B%E7%BB%98/image.png
    • 本地文本文件绝对路径
      • D:\\Pictures\\koishi\\AL1S手绘\\urls.txt
      • D:\Pictures\koishi\AL1S手绘\urls.txt
      • file:///D:/Pictures/koishi/AL1S%E6%89%8B%E7%BB%98/urls.txt
    • 网络图片直链
      • https://i1.hdslb.com/bfs/archive/2b3c803fc2de45d2e3d1090013c2b76ac87a49dc.jpg

注意: file:/// 协议的路径需要使用 URL 编码,你可以把路径放到浏览器地址栏后,在浏览器中确保可以打开后,复制地址栏内容填入此处。这样可以确保URL编码。

配置示例:

[
  {
    "command": "文件夹1",
    "source_url": "D:\\Pictures\\koishi\\AL1S手绘"
  },
  {
    "command": "文件夹2",
    "source_url": "file:///D:/Pictures/koishi/AL1S%E6%89%8B%E7%BB%98"
  },
  {
    "command": "本地图片1",
    "source_url": "D:\\Pictures\\koishi\\AL1S手绘\\A92277ACCB00A8945D3F72A5EEC796C1.png"
  },
  {
    "command": "本地图片2",
    "source_url": "file:///D:/Pictures/koishi/AL1S%E6%89%8B%E7%BB%98/A92277ACCB00A8945D3F72A5EEC796C1.png"
  },
  {
    "command": "本地txt1",
    "source_url": "D:\\Pictures\\koishi\\AL1S手绘\\output_urls.txt"
  },
  {
    "command": "本地txt2",
    "source_url": "file:///D:/Pictures/koishi/AL1S%E6%89%8B%E7%BB%98/output_urls.txt"
  },
  {
    "command": "网络图片",
    "source_url": "https://i1.hdslb.com/bfs/archive/2b3c803fc2de45d2e3d1090013c2b76ac87a49dc.jpg"
  }
]

QQ官方机器人设置指南

1. JSON按钮

需要有20个群才能使用。

配置项直接填写对应的JSON模板的ID即可。

示例审核模板-按钮内容(表情包)

{
    "rows": [
      {
        "buttons": [
          {
            "render_data": {
              "label": "再来一张😺",
              "style": 2
            },
            "action": {
              "type": 2,
              "permission": {
                "type": 2
              },
              "data": "/再来一张",
              "enter": true
            }
          },
          {
            "render_data": {
              "label": "返回列表😽",
              "style": 2
            },
            "action": {
              "type": 2,
              "permission": {
                "type": 2
              },
              "data": "/emojihub",
              "enter": true
            }
          }
        ]
      }
    ]
  }

示例审核模板-按钮内容(表情包列表)

{
    "rows": [
        {
            "buttons": [
                {
                    "render_data": {
                        "label": "随机emojihub表情包",
                        "style": 1
                    },
                    "action": {
                        "type": 2,
                        "permission": {
                            "type": 2
                        },
                        "data": "/随机emojihub表情包",
                        "enter": true
                    }
                },
                {
                    "render_data": {
                        "label": "acomu414",
                        "style": 1
                    },
                    "action": {
                        "type": 2,
                        "permission": {
                            "type": 2
                        },
                        "data": "/acomu414",
                        "enter": true
                    }
                },
                {
                    "render_data": {
                        "label": "ba表情包",
                        "style": 1
                    },
                    "action": {
                        "type": 2,
                        "permission": {
                            "type": 2
                        },
                        "data": "/ba表情包",
                        "enter": true
                    }
                },
                {
                    "render_data": {
                        "label": "downvote",
                        "style": 1
                    },
                    "action": {
                        "type": 2,
                        "permission": {
                            "type": 2
                        },
                        "data": "/downvote",
                        "enter": true
                    }
                }
            ]
        },
        {
            "buttons": [
                {
                    "render_data": {
                        "label": "doro",
                        "style": 1
                    },
                    "action": {
                        "type": 2,
                        "permission": {
                            "type": 2
                        },
                        "data": "/doro",
                        "enter": true
                    }
                },
                {
                    "render_data": {
                        "label": "eveonecat",
                        "style": 1
                    },
                    "action": {
                        "type": 2,
                        "permission": {
                            "type": 2
                        },
                        "data": "/eveonecat",
                        "enter": true
                    }
                },
                {
                    "render_data": {
                        "label": "fufu",
                        "style": 1
                    },
                    "action": {
                        "type": 2,
                        "permission": {
                            "type": 2
                        },
                        "data": "/fufu",
                        "enter": true
                    }
                },
                {
                    "render_data": {
                        "label": "mygo",
                        "style": 1
                    },
                    "action": {
                        "type": 2,
                        "permission": {
                            "type": 2
                        },
                        "data": "/mygo",
                        "enter": true
                    }
                }
            ]
        },
        {
            "buttons": [
                {
                    "render_data": {
                        "label": "seseren",
                        "style": 1
                    },
                    "action": {
                        "type": 2,
                        "permission": {
                            "type": 2
                        },
                        "data": "/seseren",
                        "enter": true
                    }
                },
                {
                    "render_data": {
                        "label": "白圣女",
                        "style": 1
                    },
                    "action": {
                        "type": 2,
                        "permission": {
                            "type": 2
                        },
                        "data": "/白圣女",
                        "enter": true
                    }
                },
                {
                    "render_data": {
                        "label": "白圣女漫画",
                        "style": 1
                    },
                    "action": {
                        "type": 2,
                        "permission": {
                            "type": 2
                        },
                        "data": "/白圣女漫画",
                        "enter": true
                    }
                },
                {
                    "render_data": {
                        "label": "柴郡",
                        "style": 1
                    },
                    "action": {
                        "type": 2,
                        "permission": {
                            "type": 2
                        },
                        "data": "/柴郡",
                        "enter": true
                    }
                }
            ]
        },
        {
            "buttons": [
                {
                    "render_data": {
                        "label": "初音Q版",
                        "style": 1
                    },
                    "action": {
                        "type": 2,
                        "permission": {
                            "type": 2
                        },
                        "data": "/初音Q版",
                        "enter": true
                    }
                },
                {
                    "render_data": {
                        "label": "甘城猫猫",
                        "style": 1
                    },
                    "action": {
                        "type": 2,
                        "permission": {
                            "type": 2
                        },
                        "data": "/甘城猫猫",
                        "enter": true
                    }
                },
                {
                    "render_data": {
                        "label": "疾旋鼬",
                        "style": 1
                    },
                    "action": {
                        "type": 2,
                        "permission": {
                            "type": 2
                        },
                        "data": "/疾旋鼬",
                        "enter": true
                    }
                },
                {
                    "render_data": {
                        "label": "流萤",
                        "style": 1
                    },
                    "action": {
                        "type": 2,
                        "permission": {
                            "type": 2
                        },
                        "data": "/流萤",
                        "enter": true
                    }
                }
            ]
        },
        {
            "buttons": [
                {
                    "render_data": {
                        "label": "赛马娘",
                        "style": 1
                    },
                    "action": {
                        "type": 2,
                        "permission": {
                            "type": 2
                        },
                        "data": "/赛马娘",
                        "enter": true
                    }
                },
                {
                    "render_data": {
                        "label": "瑟莉亚",
                        "style": 1
                    },
                    "action": {
                        "type": 2,
                        "permission": {
                            "type": 2
                        },
                        "data": "/瑟莉亚",
                        "enter": true
                    }
                },
                {
                    "render_data": {
                        "label": "藤田琴音",
                        "style": 1
                    },
                    "action": {
                        "type": 2,
                        "permission": {
                            "type": 2
                        },
                        "data": "/藤田琴音",
                        "enter": true
                    }
                },
                {
                    "render_data": {
                        "label": "亚托莉",
                        "style": 1
                    },
                    "action": {
                        "type": 2,
                        "permission": {
                            "type": 2
                        },
                        "data": "/亚托莉",
                        "enter": true
                    }
                }
            ]
        }
    ]
}

2. 被动Markdown模板

需要有2000的日活跃用户(每日上行消息人数),并且申请Markdown能力和markdown模板。

使用本插件来发送markdown,你需要:

  1. 配置URL白名单
  2. 配置对应的markdown模板

其中URL白名单部分,需要进行校验和加白。

我们推荐你在对应的校验地址上做一个图片跳转服务,比如

https://tx.qqbot.cnm/url
使用方法:↓↓↓
/url/?url=跳转地址        // 携带http(s)
/url/qq.php?qq=QQ号       // 显示头像
/url/img.php?img=图片链接  // 加载图片

然后你可以每次调用markdown图片的时候使用 https://tx.qqbot.cnm/url/img.php?img=图片链接 这个方法

例如:

https://tx.qqbot.cnm/url/img.php?img=https://i1.hdslb.com/bfs/archive/72fcfba441164439595b599d2d03554bb44a9067.jpg

本插件模板举例---1

**{{.text1}}**
{{.text2}}
![{{.img}}]({{.url}})

配置模板参数示例---1

[
  {
    "raw_parameters": "your_markdown_text_1",
    "replace_parameters": "表情包来啦!"
  },
  {
    "raw_parameters": "your_markdown_text_2",
    "replace_parameters": "这是你的表情包哦😽"
  },
  {
    "raw_parameters": "your_markdown_img",
    "replace_parameters": "${img_pxpx}"
  },
  {
    "raw_parameters": "your_markdown_url",
    "replace_parameters": "https://tx.qqbot.cnm/url/img.php?img=${img_url}"
  }
]

本插件模板举例---2

{{.text1}}
{{.text2}}
{{.img}}{{.url}}

配置模板参数示例---2

[
  {
    "raw_parameters": "your_markdown_text_1",
    "replace_parameters": "表情包来啦!"
  },
  {
    "raw_parameters": "your_markdown_text_2",
    "replace_parameters": "这是你的表情包哦😽"
  },
  {
    "raw_parameters": "your_markdown_img",
    "replace_parameters": "![${img_pxpx}]"
  },
  {
    "raw_parameters": "your_markdown_url",
    "replace_parameters": "(https://tx.qqbot.cnm/url/img.php?img=${img_url})"
  }
]

markdown的按钮参数,需要填入按钮模板ID,

请参考上方1. JSON按钮示例审核模板-按钮内容

3. 被动Markdown模板(原生按钮)

需要至少(曾经)达到过原生(钻石机器人)的日活(每日消息上行人数)

被动Markdown模板 与上文 2. 被动Markdown模板 一致逻辑

原生按钮配置示例 见下方 原生Markdown示例按钮内容

4. 原生Markdown

原生Markdown支持自定义Markdown内容和按钮内容。

需要有10000日活(每日消息上行人数),并且评选为钻石机器人(每月中审核)。

示例Markdown内容

## **表情包~😺**
### 😽来了哦!
![${img_pxpx}](${img_url})

示例配置项-按钮内容(表情包)

与上方 1. JSON按钮 中的 示例审核模板-按钮内容(表情包) 中的内容一致即可

支持使用变量替换参数。

示例:

{
    "rows": [
        {
            "buttons": [
                {
                    "render_data": {
                        "label": "再来一张😺",
                        "style": 2
                    },
                    "action": {
                        "type": 2,
                        "permission": {
                            "type": 2
                        },
                        "data": "/${command}",
                        "enter": true
                    }
                },
                {
                    "render_data": {
                        "label": "返回列表😽",
                        "style": 2
                    },
                    "action": {
                        "type": 2,
                        "permission": {
                            "type": 2
                        },
                        "data": "/${config.emojihub_bili_command}",
                        "enter": true
                    }
                }
            ]
        }
    ]
}

示例配置项-按钮内容(表情包列表)

与上方 1. JSON按钮 中的 示例审核模板-按钮内容(表情包列表) 中的内容一致即可

支持使用变量替换参数。

列表太长就不再举例赘述了。

5. 替换功能说明

本插件会替换模板变量,请在左侧填入模板变量,右侧填入真实变量值。

支持的参数

  • command:当前指令名称(仅交互表情包的时候有效,查看表情包列表的时候无法使用此变量)。

  • img_pxpx:图片尺寸,替换后格式为img#123px #456px

  • img_url:图片链接,替换后格式为https://i0.hdslb.com/bfs/article/e1cb94c573b6bf4e23b38caa4e97de6fe804011a.jpg

  • config:插件配置项。例: config.emojihub_bili_command:当前插件父级指令,替换后格式为emojihub

  • session:会话信息。例: session.userId:当前交互的用户ID,替换后格式为1246A99CFED107A7938ADF07F9B5A398

  • ... ... 关于configsession的更多用法请查看koishi文档 -> https://koishi.chat/

示例

  • ${command} 会被替换为当前指令名称,如 宇佐紀表情包
  • ${img_pxpx} 会被替换,如 img#123px #456px
  • ${img_url} 会被替换,如 https://i0.hdslb.com/bfs/article/e1cb94c573b6bf4e23b38caa4e97de6fe804011a.jpg
  • ${config.emojihub_bili_command}:当前插件父级指令,替换后格式为emojihub
  • ${session.userId}:当前交互的用户ID,替换后格式,如1246A99CFED107A7938ADF07F9B5A398

5.1. 本地图片文件名输出配置 (localPictureToName)

功能说明:

localPictureToName 配置项允许您自定义发送本地图片时的消息格式,您可以选择仅发送图片,或者同时输出图片的文件名、大小、修改日期和文件路径等信息。这对于需要展示本地图片信息或者进行调试时非常有用。

配置位置:

插件配置页面的 进阶设置 -> 对于本地图片/文件,是否输出文件名 选项。

可用变量:

localPictureToName 配置项中,您可以使用以下变量来控制输出内容:

  • ${IMAGE}: 图片本身。插件会将本地图片转换为可发送的消息元素。这是必须包含的变量,否则将无法发送图片。
  • ${NAME}: 文件名 (不包含路径)。例如,如果图片路径是 /path/to/image.png,则 ${NAME} 会被替换为 image.png
  • ${SIZE}: 文件大小 (单位为字节)。例如,123456
  • ${TIME}: 文件修改日期。格式为日期字符串,例如 Mon Jul 17 2023 15:30:00 GMT+0800 (中国标准时间)
  • ${PATH}: 文件绝对路径。例如,/path/to/image.png

使用方法:

localPictureToName 配置项中,您可以自由组合文本和上述变量,

${变量名} 的形式引用变量。

\n 代表换行符,您可以使用 \n 或者直接在配置项中回车来添加换行。

示例:

  1. 仅发送图片 (默认效果):

    ${IMAGE}
  2. 图片 + 文件名:

    ${IMAGE}\n文件名称:${NAME}

    ${IMAGE}
    文件名称:${NAME}

    实际发送的消息示例:

    [图片]
    文件名称:image.png
  3. 文件名 + 图片:

    ${NAME}\n${IMAGE}

    ${NAME}
    ${IMAGE}

    实际发送的消息示例:

    image name.png
    [图片]
  4. 包含文件详细信息的格式:

    ${IMAGE}\n文件名称:${NAME}\n文件大小:${SIZE}\n修改日期:${TIME}\n文件路径:${PATH}

    ${IMAGE}
    文件名称:${NAME}
    文件大小:${SIZE}
    修改日期:${TIME}
    文件路径:${PATH}

    实际发送的消息示例 (文件信息会根据实际图片文件变化):

    [图片]
    文件名称:image.png
    文件大小:123456
    修改日期:Mon Jul 17 2023 15:30:00 GMT+0800 (中国标准时间)
    文件路径:/path/to/image.png
  5. 自定义文本 + 变量:

    今日推荐表情包:${NAME}\n发送时间:${TIME}\n${IMAGE}

    实际发送的消息示例 (文件名和时间会根据实际情况变化):

    今日推荐表情包:image.png
    发送时间:Mon Jul 17 2023 15:30:00 GMT+0800 (中国标准时间)
    [图片]

注意事项:

  • ${IMAGE} 变量是必须包含的,否则消息中将不会包含图片。
  • localPictureToName 功能仅在通过指令发送本地图片时生效。例如,当您配置了本地文件夹路径,并通过指令触发表情包时。
  • ${SIZE} 的单位是字节
  • ${TIME} 显示的是文件的修改日期,格式可能会因系统环境而略有差异。
  • ${PATH} 显示的是文件的绝对路径,请注意信息安全,避免在公开场合泄露敏感路径信息。

免责声明 🤝

表情包来源

本插件(emojihub-bili)中的所有表情包内容均来源于哔哩哔哩(Bilibili)网站。这些表情包的版权归原作者及哔哩哔哩网站所有。本插件仅提供访问这些内容的途径,并不声称对这些表情包内容拥有任何形式的所有权或知识产权。

非官方插件

请注意,emojihub-bili 是一个非官方插件,与哔哩哔哩(Bilibili)公司或其服务没有任何直接关联。本插件的开发旨在为用户提供更便捷的方式来访问和使用哔哩哔哩上的表情包内容。

使用责任

用户在使用 emojihub-bili 插件时,应自行承担所有风险。插件开发者不对任何由于使用本插件而可能引起的直接或间接的损失或损害负责。

内容责任

插件开发者不对通过 emojihub-bili 插件获取的任何表情包内容的准确性、完整性、适用性或合法性负责。所有表情包内容的责任均由内容的原始提供者承担。

最终解释权

本免责声明的最终解释权归插件开发者所有。如有疑问或需要进一步信息,请联系插件开发者。🌈

| 贡献者 | 项目鸣谢:(按首字母排序,不分先后) | | ------------ | -------------------------------------------------------------------- | | Alin | https://github.com/Alin-sky | | itzdrli | https://www.npmjs.com/~itzdrli | | sparkuix | https://www.npmjs.com/~sparkuix |