Skip to content

Vescrity/QBot_Jiemeng

Repository files navigation

QBot_Jiemeng

文档|样例

桔梦(QBot_Jiemeng)是一个以 Onebot 标准的实现项目作为前端的 bot 项目。以词库匹配作为核心机制。

V26 计划

  • 将部分逻辑转移至 Lua 。
  • 理清处理逻辑,完善文档。
  • 词库是否应转为 Lua 表以实现与 Lua 更好的集成?
  • 标准化配置文件夹

说明

  • 本说明适用于 v25
  • 项目主要用于个人开发练习。
  • 本说明用于介绍桔梦基本功能,组成,并帮助您快速上手。
  • 具体的详细说明请参照进阶说明。

提示

v25 为功能较为完善、稳定、易拓展的版本,但文档和处理逻辑仍不够完善。计划将于 v26 进行改善,不能保证兼容性。

  • 以下内容弃用/施工中

平台

验证可用的平台

  • Linux-x86_64
  • Linux-aarch64 (Termux Proot-distro 内可构建、可使用)

不支持的平台

  • Windows 等类 UNIX 环境: 完全放弃兼容。

已实现的特色应用场景举例

  1. 定时消息
  2. 远程指令执行
  3. 可简易配置的第三方api调用
  4. 用于 Dice! 的牌堆调用兼容
  5. 群聊检测到满足条件的信息向 bot 主或特定群聊上报消息。

特色

v25 新功能:Lua 脚本支持

可以编写 Lua 脚本来一定程度上更自由的控制 Bot 了。

词库配置为中心

“一切皆消息”

将所有的事件都转换为文本消息来处理,以“收到消息——词库检索——执行应答”的流程处理所有事件。

检索条件:使用正则表达式,

  • 为了解决使用单一正则表达式表达复杂的匹配逻辑时的困难与难以阅读,利用 json 数组的结构特点优化了表达

较复杂的应答选取逻辑

  • 提供了可调控概率的应答随机选取方法。
  • 树状逻辑的应答库嵌套,即一个应答可以是若干的应答的组合,可实现更丰富的应答。
  • 例如你预想的应答可分为3个部分,使用桔梦你可以很轻松的使你的随机输出可包括例如A B1 C2d 3a Cb 等等任意组合。

从应答库到控制一切

结合 Lua,几乎可以控制 Bot 的所有行为。而应答库则可以为这个控制提供接口。将你需要的行为使用 Lua 实现,再将它注册到应答库中即可。

开发者的一些废话

非计算机相关专业,纯业余开发,技术稀烂,代码可读性极差,总之图一乐

构建

  • 依赖:
    • cmake
    • g++
    • nlohmann-json
    • lua
    • sol2
    • boost

执行 ./build.sh 可在 build 目录下构建基础的工作文件夹。

运行依赖

  • boost
  • lagrange 等支持正向 WebSocket 的 OneBot 实现
  • python(可选)
  • ...

使用说明

快速开始

1. 修改 config.json

  1. Self_ID 字段的值改为 bot qq 号
  2. group_list 中添加你想启用 bot 功能的群聊
  3. admin_list 中 100 前的数字改为 bot 主的 QQ 号

2. 向 Answer 文件夹内添加内容

这里应当是若干个标准的 json 文件。具体格式如下:

{
  "Answers": [

  ]
}

在这个中括号内部添加应答组。

所有在这个文件夹中的json最后将会在运行时被合并到一起。

应答组

下一版计划使用 lua 表

一个应答组至少要包含三个字段:regex anss pri。 其运行的逻辑是:

  1. 将所有的应答组依照其 pri 值,从大到小排序。
  2. 收到消息后,依照顺序根据 regex 检查是否符合要求
  3. 若符合要求,依照 anss 来执行应答操作。

Lua 控制

已将 Bot 控制相关的部分函数注册到了 Lua 环境中。另:

  • 启动时加载 ./init.lua

详细文档参考(这里)[code/luarc/README.md]

应答内容替换

替换后
[year]
[month]
[yday] 一年第x天
[mday] 一月第x天
[wday] 一周第x天
[hour]
[min]
[sec]
[group_name] 群名
[group_id] 群号
[user_name] 昵称/名片
[user_id] qq号

开始使用:

  • 请确保已完成所有配置
  • 分别启动 OneBot 与 桔梦。

已知问题

  1. 各附加功能尚未完全支持

About

适配OneBot, C++开发的QQ聊天机器人

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages