Skip to main content

使用 Kyomotoi/AnimeThesaurus 的 NoneBot2 的回复(文i)插件

Project description

NoneBotPluginLogo

NoneBotPluginText

NoneBot-Plugin-Kawaii-Robot

✨ 使用 Kyomotoi/AnimeThesaurus 的 NoneBot2 的回复(文 i)插件 ✨

python pdm-managed
Pydantic Version 1 Or 2 license pypi pypi download

📖 介绍

WARNING:高二次元浓度警告

词库回复

当用户 @机器人 或者 提到机器人昵称时,会根据词库回复一条消息

戳一戳回复

当用户戳机器人的时候,机器人会戳回去,或者随机回复一条词库中消息

群聊(打断)复读姬

现在可以复读啦!谁不喜欢 +1 呢
当然也可以打断复读...谁不喜欢打断复读呢

💿 安装

以下提到的方法 任选其一 即可

[推荐] 使用 nb-cli 安装 在 nonebot2 项目的根目录下打开命令行, 输入以下指令即可安装
nb plugin install nonebot_plugin_kawaii_robot
使用包管理器安装 在 nonebot2 项目的插件目录下, 打开命令行, 根据你使用的包管理器, 输入相应的安装命令
pip
pip install nonebot_plugin_kawaii_robot
pdm
pdm add nonebot_plugin_kawaii_robot
poetry
poetry add nonebot_plugin_kawaii_robot
conda
conda install nonebot_plugin_kawaii_robot

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

[tool.nonebot]
plugins = [
    # ...
    "nonebot_plugin_kawaii_robot"
]

⚙️ 配置

插件

在 NoneBot2 项目的 .env 文件中按需添加下面的配置项

# 机器人昵称
NICKNAME=[]

# 词库回复权限,`ALL` 就是全部聊天都会触发回复,`GROUP` 就是仅群聊
LEAF_PERMISSION=ALL

# 忽略词,指令以本列表中的元素开头不会触发回复
# 例:[".", "#", "你好"]
LEAF_IGNORE=[]

# 回复模式,`-1` 关闭全部 at 回复,`0` 仅启用词库回复,`1` 开启所有回复
LEAF_REPLY_TYPE=1

# 戳一戳回复文字概率,范围 `0` ~ `100`,`-1` 关闭戳一戳回复,`0` 代表始终戳回去
LEAF_POKE_RAND=20

# 复读、打断复读时是否按复读的用户数计算次数
LEAF_FORCE_DIFFERENT_USER=True

# 触发复读或打断次数,群内复读 `{0}` ~ `{1}` 次数后触发复读或打断
LEAF_REPEATER_LIMIT=[2, 6]

# 复读后,群友继续复读达到指定次数时是否继续参与复读或打断
LEAF_REPEAT_CONTINUE=False

# 打断概率,范围 `0` ~ `100`,`0` 关闭打断
LEAF_INTERRUPT=20

# 打断复读后,群友继续复读达到指定次数时是否继续参与复读或打断
LEAF_INTERRUPT_CONTINUE=True

# 词库回复匹配模式,
# `0` 是整句话精确匹配关键词(不推荐);
# `1` 是按从长到短的顺序遍历词库中的关键词,遇到匹配的就停止遍历并选取对应回复;
# `2` 与 `1` 的遍历方式相同,但是会遍历所有词库中的关键词,然后从匹配到的所有项目中随机选取一个回复
LEAF_MATCH_PATTERN=1

# 当 `LEAF_MATCH_PATTERN` >= 1 时,消息长度大于此数值则不从词库中匹配回复,设为 `0` 则禁用此功能
LEAF_SEARCH_MAX=20

# 词库回复是否需要 @机器人 或包含机器人昵称
LEAF_NEED_AT=True

# 当 `LEAF_NEED_AT` 为 `False` 时,非 @机器人 时的词库回复触发概率,范围 `0` ~ `100`
LEAF_TRIGGER_PERCENT=5

# 戳一戳回复延时,单位秒
LEAF_POKE_ACTION_DELAY=[0.5, 1.5]

# 当回复存在多条消息时,发送消息的间隔时间,单位秒
LEAF_MULTI_REPLY_DELAY=[1.0, 3.0]

# 是否载入内置回复词库
# 内置了 Kyomotoi/AnimeThesaurus 词库(data.json),还有咱自制的 bot 的词库(leaf.json)
LEAF_LOAD_BUILTIN_DICT=True

# 是否载入内置特殊回复词库
LEAF_LOAD_BUILTIN_SPECIAL=True

附加词库

加载

把你自己的词库(json 文件)扔到 data/kawaii_robot 文件夹里就可以加载啦!
可以加载多个 json 文件。
会忽略文件名以 _ 开头的文件。
如果扔进了奇怪的东西大概会加载失败,然后。。。跳过,继续加载下一个文件。
不要把奇怪的东西扔进资源里呀 kora
顺便一提,自己的词库是最优先的。 现在并到一起了

编写

参考 Kyomotoi/AnimeThesaurus 的 json 字典格式,键是关键词字符串,值是回复列表

注意:词库要符合 json 格式 如果报解码错误(UnicodeDecodeError)先检查自己的词库是不是 无 BOM 的 UTF-8 编码格式

回复里可以写变量,目前用 UniMessage.template().format() 格式化;可以往里写 Alconna 的扩展控制符
如果回复中需要用到 {},请用 {{}} 代替。
插件内建的一些的变量:

  • {user_id}:发送者 QQ 号
  • {username}:发送者昵称(获取失败则默认为
  • {bot_nickname}:机器人昵称(没有设置则默认为 可爱的咱
  • {message_id}: 消息 ID
  • {segment}:用于分割消息,该变量前的文本将会单独为一条消息发送
  • {at}: At 消息发送者,是 {:At(user, user_id)} 的简写
  • {reply}: 回复发送者的消息,是 {:Reply(message_id)} 的简写

示例:

{
  "呐": [
    "嗯?{bot_nickname}在哦~{username}有什么事吗?",
    "{at} 呐呐呐~",
    "{:Reply(message_id)} 呐?"
    // ...
  ]
}

特殊词库

data/kawaii_robot 文件夹里有几个特殊的附加词库文件(在 const.py 中有对应的内置词库):

  • _hello.json:用户只 at 了机器人,没有带任何其他文本消息时回复的内容
  • _poke.json:用户戳一戳机器人时回复的文本内容
  • _unknown.json:用户发送的消息没有匹配到任何词库内容时回复的消息
  • _interrupt.json:打断复读时回复的消息

这些词库的格式是一个文本数组,每个元素是一条回复,同样可以使用上面提到的变量

示例:

[
  "{username}你好~",
  "{bot_nickname}在哦~"
  // ...
]

💡 鸣谢

📝 更新日志

4.1.0

  • 适配 Pydantic V1 & V2
  • 使用 alconna 支持多平台,词库变量写法变化,新增了几个变量,不再支持 CQ 码
  • 重写了复读的逻辑,添加配置项 LEAF_FORCE_DIFFERENT_USERLEAF_REPEAT_CONTINUE

4.0.0

  • 完全重构插件代码,更改项目结构,使用 pdm 管理项目
  • 词库优化(详见 附加词库):
    • 加载:现在可以直接往 data/kawaii_robot 文件夹里扔你自己的 json 词库了
    • 编写:支持了一些变量
  • 配置项的增加与修改(详见 配置):
    • 修改 LEAF_IGNORE:修改类型为 Set[str],配置书写方式不变
    • 修改 LEAF_MATCH_PATTERN:新增模式 2
    • 修改 LEAF_AT_MOD:更名为 LEAF_NEED_AT,修改类型为 bool
    • 增加 LEAF_INTERRUPT_CONTINUE
    • 增加 LEAF_SEARCH_MAX
    • 增加 LEAF_TRIGGER_PERCENT
    • 增加 LEAF_POKE_ACTION_DELAY
    • 增加 LEAF_LOAD_BUILTIN_DICT
    • 增加 LEAF_LOAD_BUILTIN_SPECIAL
    • 增加 LEAF_MULTI_REPLY_DELAY
  • 还有的可能没列出来,问就是我忘了,qwq

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_kawaii_robot-4.1.0.tar.gz (53.5 kB view details)

Uploaded Source

Built Distribution

File details

Details for the file nonebot_plugin_kawaii_robot-4.1.0.tar.gz.

File metadata

File hashes

Hashes for nonebot_plugin_kawaii_robot-4.1.0.tar.gz
Algorithm Hash digest
SHA256 1eaaa5c3d8cc79ea48ba7713da1e37bb1461b69017e26b0bf6ba43621371a005
MD5 ded9b48e96900d9f8f9ac902ec03025a
BLAKE2b-256 f243e711973c3d6eb00cc539e1f53d0a247443f5ce9c6d7b1a5c4f6d88b75ec3

See more details on using hashes here.

File details

Details for the file nonebot_plugin_kawaii_robot-4.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for nonebot_plugin_kawaii_robot-4.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9d3cb1a29ec38d46d5e5a2ed848445adc66452393c2aff4f93f437ae5fc8a7a6
MD5 144601487857d24a0e5f74820653404d
BLAKE2b-256 c2b0d99ce586dc133933c29e9e2f7fba2d6ba48d1ffebce1b2d00d7725e31799

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