Skip to main content

Nonebot2 plugin for making memes

Project description

nonebot

nonebot-plugin-memes

Nonebot2 表情包制作插件 ✨

license Python NoneBot pypi qq group

[!NOTE]

本插件负责处理聊天机器人相关逻辑,具体表情包制作相关资源文件和代码在 表情包生成器 meme-generator

可使用 nonebot-plugin-memes-api(表情包制作 调用 api 版本),将 NoneBot 插件端与 meme-generator 分开部署

nonebot-plugin-memes-apinonebot-plugin-memes 功能上基本一致

安装

  • 使用 nb-cli
nb plugin install nonebot_plugin_memes
  • 使用 pip
pip install nonebot_plugin_memes

并按照 NoneBot 加载插件 加载插件

配置驱动器​

插件需要“客户端型驱动器”(如 httpx)来下载图片等,驱动器安装和配置参考 NoneBot 选择驱动器

同时需要在 .env.* 配置文件中启用对应的驱动器,例如:

DRIVER=~fastapi+~httpx+~websockets

字体和资源

插件默认在启动时会检查 meme-generator 所需的图片资源

需按照 meme-generator 字体安装 自行安装字体

字体显示不正常解决流程
  • 检查字体是否安装完整

至少需要安装一种中文字体和 Emoji 字体,部分表情需要安装额外的字体,详情请参考 meme-generator 字体安装

  • 删除 Matplotlib 字体缓存

meme-generator 依赖 matplotlib 来寻找系统字体,matplotlib 会生成一个缓存文件,安装新的字体之后需要删掉该文件以重新扫描字体

缓存文件位置:

  • Windows: C:\Users\<username>\.matplotlib\fontlist-xxx.json
  • Linux: ~/.cache/matplotlib/fontlist-xxx.json
  • Mac: ~/Library/Caches/matplotlib/fontlist-xxx.json
  • 删除表情列表图片缓存

插件会缓存生成的表情列表图片以避免重复生成,若因为字体没安装好等原因导致生成的图片不正常,需要删除缓存的图片

缓存图片存放在 nonebot-plugin-localstore 插件定义的缓存目录下

默认缓存目录位置:

  • Windows: C:\Users\<username>\AppData\Local\nonebot2\Cache\nonebot_plugin_memes
  • Linux: ~/.cache/nonebot2/nonebot_plugin_memes
  • Mac: ~/Library/Caches/nonebot2/nonebot_plugin_memes

配置项

以下配置项可在 .env.* 文件中设置,具体参考 NoneBot 配置方式

memes_command_prefixes

  • 类型:List[str] | None
  • 默认:None
  • 说明:命令前缀(仅作用于制作表情的命令);如果不设置默认使用 NoneBot 命令前缀

memes_disabled_list

  • 类型:List[str]
  • 默认:[]
  • 说明:禁用的表情包列表,需填写表情的key,可在 meme-generator 表情列表 中查看。若只是临时关闭,可以用下文中的“表情包开关”

memes_check_resources_on_startup

  • 类型:bool
  • 默认:True
  • 说明:是否在启动时检查 meme-generator 资源

memes_prompt_params_error

  • 类型:bool
  • 默认:False
  • 说明:是否在图片/文字数量不符时提示(谨慎使用,容易误触发)

memes_use_sender_when_no_image

  • 类型:bool
  • 默认:False
  • 说明:在表情需要至少1张图且没有输入图片时,是否使用发送者的头像(谨慎使用,容易误触发)

memes_use_default_when_no_text

  • 类型:bool
  • 默认:False
  • 说明:在表情需要至少1段文字且没有输入文字时,是否使用默认文字(谨慎使用,容易误触发)

memes_random_meme_show_info

  • 类型:bool
  • 默认:True
  • 说明:使用“随机表情”时是否同时发出表情关键词

memes_list_image_config

  • 类型:MemeListImageConfig
  • 说明:表情列表图相关设置,其中具体设置项如下:
    • sort_by
      • 类型:str
      • 默认:"keywords"
      • 说明:表情排序方式,可用值:"key"(按表情 key 排序)、"keywords"(按表情首个关键词排序)、"date_created"(按表情添加时间排序)、"date_modified"(按表情修改时间排序)
    • sort_reverse
      • 类型:bool
      • 默认:False
      • 说明:是否倒序排序
    • text_template
      • 类型:str
      • 默认:"{keywords}"
      • 说明:表情显示文字模板,可用变量:"{index}"(序号)、"{key}"(表情名)、"{keywords}"(关键词)、"{shortcuts}"(快捷指令)、"{tags}"(标签)
    • add_category_icon
      • 类型:bool
      • 默认:True
      • 说明:是否添加图标以表示类型,即“图片表情包”和“文字表情包”
    • label_new_timedelta
      • 类型:timedelta
      • 默认:timedelta(days=30)
      • 说明:表情添加时间在该时间间隔以内时,添加 new 图标
    • label_hot_threshold
      • 类型:int
      • 默认:21
      • 说明:单位:次;表情在 label_hot_days 内的调用次数超过该阈值时,添加 hot 图标
    • label_hot_days
      • 类型:int
      • 默认:7
      • 说明:单位:天;表情调用次数统计周期
  • memes_list_image_config.env 文件中的设置示例如下:
memes_list_image_config='
{
  "sort_by": "keywords",
  "sort_reverse": false,
  "text_template": "{keywords}",
  "add_category_icon": true,
  "label_new_timedelta": "P30D",
  "label_hot_threshold": 21,
  "label_hot_days": 7
}
'

使用

以下命令需要加 NoneBot 命令前缀 (默认为/),可自行添加空字符

表情列表

  • 发送 “表情包制作” 查看表情列表

表情详情

  • 发送 “表情详情 + 表情名/关键词” 查看表情详细信息和表情预览

表情搜索

  • 发送 “表情搜索 + 关键词” 查找相关的表情

表情包开关

“超级用户” 和 “管理员” 可以启用或禁用某些表情包

  • 发送 启用表情/禁用表情 表情名/关键词,如:禁用表情 摸

“超级用户” 可以设置某个表情包的管控模式(黑名单/白名单)

  • 发送 全局启用表情 表情名/关键词 可将表情设为黑名单模式;

  • 发送 全局禁用表情 表情名/关键词 可将表情设为白名单模式;

[!NOTE]

“超级用户” 可通过 NoneBot SuperUsers 设置

“管理员” 目前包括:OneBot V11 适配器中的群主、管理员

表情使用

  • 发送 “关键词 + 图片/文字” 制作表情

可使用 “自己”、“@某人” 获取指定用户的头像作为图片

可使用 “@ + 用户id” 指定任意用户获取头像,如 “摸 @114514”

可将回复中的消息作为文字和图片的输入

示例:

[!NOTE]

  • 为避免误触发,当输入的 图片/文字 数量不符时,默认不会进行提示,可通过 memes_prompt_params_error 配置项进行设置
  • 本插件通过 nonebot-plugin-userinfo 插件获取用户名和用户头像,具体平台支持范围可前往该插件查看
  • 本插件通过 nonebot-plugin-alconna 来实现多适配器消息接收、获取图片输入、获取回复内容等,相关问题可前往该插件查看

随机表情

  • 发送 “随机表情 + 图片/文字” 可随机制作表情

随机范围为 图片/文字 数量符合要求的表情

表情调用统计

  • 发送 “[我的][全局]<时间段>表情调用统计 [表情名]” 获取表情调用次数统计图

“我的”、“全局”、<时间段>、“表情名” 均为可选项

<时间段> 的关键词有:日、本日、周、本周、月、本月、年、本年

如:“我的今日表情调用统计 petpet”

相关插件

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nonebot_plugin_memes-0.7.11.tar.gz (21.8 kB view details)

Uploaded Source

Built Distribution

nonebot_plugin_memes-0.7.11-py3-none-any.whl (24.6 kB view details)

Uploaded Python 3

File details

Details for the file nonebot_plugin_memes-0.7.11.tar.gz.

File metadata

  • Download URL: nonebot_plugin_memes-0.7.11.tar.gz
  • Upload date:
  • Size: 21.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.11.0 Linux/6.5.0-1025-azure

File hashes

Hashes for nonebot_plugin_memes-0.7.11.tar.gz
Algorithm Hash digest
SHA256 3ca8c4f884d46c3dd5daa4ebb04df4a350e9e898eb73b3d8c888680ab7514952
MD5 57bda08e4cb4a095f0a0e9b5df12358a
BLAKE2b-256 b04203f39830b788816d18cb9186f627278ea1b892f0a81c689827b9f87b111e

See more details on using hashes here.

File details

Details for the file nonebot_plugin_memes-0.7.11-py3-none-any.whl.

File metadata

File hashes

Hashes for nonebot_plugin_memes-0.7.11-py3-none-any.whl
Algorithm Hash digest
SHA256 c40e2dd459d2e881bb20c60d5c4f9651f11b32189b6d5685b09c596bf544e604
MD5 b8994cc89e20f0afc340f002b19b966b
BLAKE2b-256 f09ca263add746e6ae245da6fa4fe062590a6d098aec550635330d75d1a940b8

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page