Skip to main content

pErithacus 是一个基于 NoneBot2 框架的聊天插件,可以根据用户设定的关键词自动回复相关内容。该插件提供了完整的词条管理功能,让用户能够轻松创建、编辑和管理自定义回复内容

Project description

logo

✨ pErithacus ✨

LICENSE pypi python uv
ruff

简介

pErithacus 是一个基于 NoneBot2 框架的聊天插件,可以根据用户设定的关键词自动回复相关内容。该插件提供了完整的词条管理功能,让用户能够轻松创建、编辑和管理自定义回复内容。
pErithacus,名称来自灰鹦鹉(Psittacus erithacus),具有极强的语言模仿能力

功能特性

  • 📝 词条管理:添加、删除、修改、查看词条
  • 🔍 多种匹配模式:支持精准匹配、模糊匹配和正则表达式匹配
  • ⏰ 定时触发:支持使用 cron 表达式设置定时自动触发回复
  • 🎲 随机回复:可设置多个回复内容并随机选择
  • 🌐 作用域管理:支持按群组或私聊会话分别管理不同的词条
  • 🔗 别名词条:可以为词条设置别名,增加使用的灵活性

安装方法

使用 nb-cli 安装 在 nonebot2 项目的根目录下打开命令行, 输入以下指令即可安装
nb plugin install nonebot-plugin-pErithacus --upgrade

使用 pypi 源安装

nb plugin install nonebot-plugin-pErithacus --upgrade -i "https://pypi.org/simple"

使用清华源安装

nb plugin install nonebot-plugin-pErithacus --upgrade -i "https://pypi.tuna.tsinghua.edu.cn/simple"
使用包管理器安装 在 nonebot2 项目的插件目录下, 打开命令行, 根据你使用的包管理器, 输入相应的安装命令
pip
pip install nonebot-plugin-pErithacus
uv
uv add nonebot-plugin-pErithacus

安装仓库 master 分支

uv add git+https://github.com/SnowMoonSS/nonebot-plugin-pErithacus@master
pdm
pdm add nonebot-plugin-pErithacus

安装仓库 master 分支

pdm add git+https://github.com/SnowMoonSS/nonebot-plugin-pErithacus@master
poetry
poetry add nonebot-plugin-pErithacus

安装仓库 master 分支

poetry add git+https://github.com/SnowMoonSS/nonebot-plugin-pErithacus@master

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

plugins = ["nonebot_plugin_perithacus"]
使用 nbr 安装(使用 uv 管理依赖可用)

nbr 是一个基于 uv 的 nb-cli,可以方便地管理 nonebot2

nbr plugin install nonebot-plugin-pErithacus

使用 pypi 源安装

nbr plugin install nonebot-plugin-pErithacus -i "https://pypi.org/simple"

使用清华源安装

nbr plugin install nonebot-plugin-pErithacus -i "https://pypi.tuna.tsinghua.edu.cn/simple"

🎉 使用

启动

启动收到如下提示时:

目标数据库未更新到最新迁移, 是否更新? [y/N]:

输入 y 然后回车确认,数据库将自动更新到最新迁移。

基本命令

pe <子命令> [选项...] [参数...]

发送 pe --help 查看详细的命令帮助信息。详情可查看command.py

add | 添加

添加新的词条到系统中。

语法:

pe add <关键词> <回复内容> [选项...]

参数:

  • 关键词: 要匹配的关键词。支持图片、@、纯文字,以及混合消息。如果关键词内包含空格,请使用英文的双引号包裹。
  • 回复内容: 当匹配成功时,BOT 会发送的内容。支持图片、@、纯文字,以及混合消息。所有参数以及关键词以外的部分都会被当做回复内容。

选项:

  • -m, --match: 匹配方式(精准/模糊),默认为精准
  • -r, --random: 是否随机回复,默认为True。为否时回复为最后添加的内容。
  • -c, --cron: 定时触发的cron表达式,默认为空。详见CRON 表达式
  • -s, --scope: 作用域。该参数配合<关键词>进行词条查询,默认为当前会话所在作用域。指定作用域时,将会在指定作用域匹配对应的词条,并向其添加作用域。详见作用域
  • -g, --reg: 正则匹配的正则表达式,默认为空。当存在正则表达式时,将不会进行模糊匹配。
  • -a, --alias: 为词条添加别名,默认为空。一次只能添加一个别名。别名中包含多种内容或空格时,使用英文的双引号包裹。

[!NOTE] 插件会先从数据库中查找已有词条。排除已删除的,根据已有的匹配方式、正则表达式在当前会话所在作用域或指定的作用域中匹配。
如果匹配到多条词条,将只会为最近修改过的词条进行操作。

del | 删除

删除指定的词条。

语法:

pe del <关键词> [选项]

参数:

  • 关键词: 要删除的词条关键词

选项:

  • -s, --scope: 作用域。要删除的词条所处的作用域。默认为当前会话所在的作用域。指定作用域时,将会根据指定作用域匹配对应的词条,然后删除该词条。详见作用域

[!NOTE] 不会真的从数据库中删除词条,只是标记为已删除。未指定作用域时,删除当前会话所在的作用域。
若删除后不存在作用域,将在数据库中标记为已删除状态。

list

列出所有词条或指定词条的详细内容。

语法:

pe list [页码] [选项...]

参数:

  • 页码 (可选): 列出指定页的词条。默认为1

选项:

  • -s, --scope: 列出指定作用域的词条。默认为当前会话所在作用域。详见作用域
  • -a, --all: 列出所有作用域的词条。默认为False
  • -f, --force: 列出包含已被删除的词条。默认为False

[!TIP] -a-f可以配合使用。

search | 搜索

根据关键词搜索相关的词条。

语法:

pe search <关键词> [页码] [选项...]

参数:

  • 关键词: 搜索关键词
  • 页码 (可选): 列出指定页的词条。默认为1

选项:

  • -s, --scope: 列出指定作用域的词条。默认为当前会话所在作用域。详见作用域
  • -a, --all: 列出所有作用域的词条。默认为False

check | 查看

查看指定词条的配置信息。

语法:

pe check <词条ID> [选项]

参数:

  • 词条ID: 要查看的词条ID

选项:

  • -f, --force: 强制查看已被标记为删除的词条

detail | 详情

查看指定词条的详细内容。

语法:

pe detail <词条ID> [页码] [选项]

参数:

  • 词条ID: 要查看的词条ID。
  • 页码 (可选): 列出指定页的词条。默认为1

选项:

  • -f, --force: 强制查看已被标记为删除的内容。
  • -a, --all: 列出包含已删除的所有内容。默认为False

[!TIP] -a-f可以配合使用。

edit | 修改

修改已有词条的配置。

语法:

pe edit <关键词> [选项...]

参数:

  • 关键词: 要修改的词条关键词

选项:

  • -m, --match: 修改当前的匹配方式(精准/模糊)。默认为精准
  • -r, --random: 是否随机回复,默认为True。为否时回复为最后添加的内容。
  • -c, --cron: 替换当前的cron表达式。详见CRON 表达式
  • -s, --scope: 作用域。该参数配合<关键词>进行词条查询,默认为当前会话所在作用域。指定作用域时,将会根据指定作用域对应的词条,并向其添加作用域。详见作用域
  • -g, --regex: 修改正则匹配的正则表达式。当存在正则表达式时,将不会进行模糊匹配。
  • -a, --alias: 为词条添加别名。一次只能添加一个别名。别名中包含多种内容或空格时,使用英文的双引号包裹。
  • -A, --del_alias: 删除词条的指定别名。通过pe check <词条ID>查看别名序号。
  • -C, --del_content: 根据指定的内容ID,删除词条内的相应内容。
  • -p, --replace:
    • <内容ID>: 要替换的回复内容ID。
    • <内容>: 替换为的内容。

[!NOTE] 插件会先从数据库中查找已有词条。排除已删除的,根据已有的匹配方式、正则表达式在当前会话所在作用域或指定的作用域中匹配。
如果匹配到多条词条,将只会为最近修改过的词条进行操作。
要对作用域进行缩减,使用del命令

[!CAUTION] 删除内容时请避免使用57-62这样的表达式删除一定范围内的内容,同一个词条下的内容ID并不一定是连续的。

[!TIP] 删除别名所需要的序号可以通过pe check <词条ID>查看。

匹配方式

精准匹配

消息内容必须与关键词完全一致才会触发回复。

模糊匹配

消息内容被关键词包含在内即可触发回复。模糊匹配只能处理纯文本消息。

[!NOTE] 谨慎使用此匹配方式,很容易导致误触发。
例如,当词条为“你好呀”时,消息内容为“你好”、“好呀”、“你”、“好”、“呀”都会触发这个词条。

正则匹配

消息内容符合指定的正则表达式才会触发回复。当存在正则表达式时,将不会进行模糊匹配。
正则匹配只会处理纯文本消息。

CRON 表达式

定时任务使用标准的 cron 表达式格式,以#进行分割:
分 时 日 月 周

例如:0#0#8#*#*#* 表示每天上午8点触发

可根据crontab guru编写cron表达式。添加定时消息时记得用#替换掉空格。

作用域

作用域用于控制词条的有效范围:

  • g 开头表示群组作用域,如 g123456
  • u 开头表示私聊作用域,如 u123456
  • 多个作用域使用,进行分割,如 g123456,u123456

示例

添加一条简单的问候语:

pe add hello 你好!

添加每日定时提醒,每天早上9点发送消息:

pe add 晨报 新的一天开始了! -c 0#9#*#*#*

添加带模糊匹配的词条:

pe add 笑话 这是一个有趣的笑话 -m 模糊

查看当前作用域的所有未删除词条:

pe list

查看词库所有未删除的词条:

pe list -a

搜索相关词条:

pe search 笑话

查看 ID 为 1 的词条的配置信息:

pe check 1

删除词条中的序号为 1 的别名:

pe edit 笑话 -A 1

删除词条中的序号为 2、5、7 的别名:

pe edit 笑话 -A 2,5,7

删除词条中的序号为 2、3、4、5、7 的别名:

pe edit 笑话 -A 2-5,7

删除词条中的编号为 2、3、4、5、7 的内容:

pe edit 笑话 -C 2-5,7

数据存储

数据存储在 nonebot-plugin-localstore 定义的 data 目录下。

在不同的操作系统中,数据存储路径不同:

  • macOS: ~/Library/Application Support/nonebot2
  • Unix: ~/.local/share/nonebot2 or in $XDG_DATA_HOME, if defined
  • Win XP (not roaming): C:\Documents and Settings<username>\Application Data\nonebot2
  • Win 7 (not roaming): C:\Users<username>\AppData\Local\nonebot2

可在.env文件中添加LOCALSTORE_USE_CWD = True使其保存在当前工作目录下

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_perithacus-1.3.2.tar.gz (27.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nonebot_plugin_perithacus-1.3.2-py3-none-any.whl (38.4 kB view details)

Uploaded Python 3

File details

Details for the file nonebot_plugin_perithacus-1.3.2.tar.gz.

File metadata

File hashes

Hashes for nonebot_plugin_perithacus-1.3.2.tar.gz
Algorithm Hash digest
SHA256 53d8cfc7214e53f801f79b5a7c4a598f29f533cf786429d2a064283b5813f8af
MD5 7bd46fcb3e45662bd816cbe43ed20141
BLAKE2b-256 9e55df6dcb5139160ee39971453485b3d3f3ae5371e6125f0f2bfb5d036eb65d

See more details on using hashes here.

Provenance

The following attestation bundles were made for nonebot_plugin_perithacus-1.3.2.tar.gz:

Publisher: python-publish.yml on SnowMoonSS/nonebot-plugin-pErithacus

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nonebot_plugin_perithacus-1.3.2-py3-none-any.whl.

File metadata

File hashes

Hashes for nonebot_plugin_perithacus-1.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 bf4d68f3174e64b8be28a65459a8c2e0578b825a13b591487ae415c100a3bb2f
MD5 81a2e8f55a4505a3347ccc82da24f050
BLAKE2b-256 2a9188b125f9b5cd2e5ead512d3beb9d54c28fe353a572bbec872ecce0da67da

See more details on using hashes here.

Provenance

The following attestation bundles were made for nonebot_plugin_perithacus-1.3.2-py3-none-any.whl:

Publisher: python-publish.yml on SnowMoonSS/nonebot-plugin-pErithacus

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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