kokkoro icon indicating copy to clipboard operation
kokkoro copied to clipboard

とある咕咕の QQ 机器人框架 (OxO)?!...

id: 74237509

kokkoro

> とある咕咕の QQ 机器人框架 <

priconne redive qq group npm package node engine

本项目是一个基于 oicq 协议库,使用 TypeScript 语言开发的 QQ 机器人框架

介绍

原项目 yumemi_bot 最初为个人自用 bot,主要围绕 公主连结☆Re:Dive 开发相关功能,因代码严重耦合不利于维护,使用 ts 分离重构为插件一对多形式的框架

  • [x] 多群插件管理,所有插件针对不同群聊均支持参数自定义
  • [x] 默认扫码登录,能有效避免因操作不当导致账号风控、掉线等问题
  • [x] 友好的脚手架,无需手动修改配置文件,全由命令自动构建,能防止因修改文件导致占用或缓存而产生的异常
  • [x] 支持同步登录,可添加多个账号自由管理(避免在项目启动瞬间登录 过多账号 ,可能会出现被封号的风险)
  • [ ] web 可扩展性,每个插件均支持独立的 web 页面及路由服务 ~~咕咕咕~~

构建

本项目不用安装任何第三方软件,非常简单轻便
仅需三行命令即可构建,你可以选择下列任意一种方式来初始化你的项目

# 全局安装 cli
npm i -g @kokkoro/cli

# 创建并进入文件夹
mkdir bot && cd bot

# 初始化配置文件
kokkoro init

or

# 创建并进入文件夹
mkdir bot && cd bot

# 本地安装 cli
npm i @kokkoro/cli

# 初始化配置文件
npx kokkoro init

若网速较慢可以尝试使用阿里镜像源
npm i -g @kokkoro/cli --registry=https://registry.npm.taobao.org

~~yuki,你为什么不讲下用 yarn 如何安装呀?(这是给小白看的,你 npm 都会用了还需要讲 yarn 么)~~

结构

当你输入 kokkoro init 后, kokkoro 将会为你在当前所在目录自动安装并生成相关文件

.
├─ data               资源目录
├─ plugins            插件目录
├─ main.js            程序入口
└─ kokkoro.yml        配置文件

项目 启动后 尽量避免编辑器直接修改配置文件,你改了也不会生效的,使用指令修改可以立即生效

启动

一切准备就绪,开始启动你的项目吧

kokkoro start

如果你是使用的本地安装,就要使用 npx kokkoro start 启动项目

指令

登录成功后,你将会收到一条私信(你填写的 masters)
输入 print 指令可以测试消息打印,现在开启一段属于你的物语吧 q(≧▽≦q)

常用指令

command type level description
print all 0 打印输出文本
restart all 5 重启程序进程
shutdown all 5 退出程序进程
state private 5 查询机器人状态
login private 5 添加新的登录 qq 账号
logout private 5 下线已登录的 qq 账号
plugin private 5 列出本地插件模块列表
enable private 5 为当前机器人启用插件
disable private 5 为当前机器人禁用插件
reload private 5 重载当前插件模块(热更新)
server group 0 列出当前群聊可用服务列表
open group 3 开启当前群聊插件消息监听
close group 3 关闭当前群聊插件消息监听

所有指令都有 type 属性,对应群聊与私聊的消息处理
可以输入 help 查看自带的全部指令与参数,安装插件后能使用更多功能

插件列表

plugin description
bilibili b 站动态订阅
rsshub rsshub 订阅
group 群管(申请头衔、新人欢迎)
guild 会战相关
hitokoto 每日一言
saucenao saucenao 搜图
setu hso,我都不看这些的
sandbox 将收到的消息当做代码在沙盒中执行

使用说明可访问对应仓库地址,开发文档可访问: https://kokkoro.js.org/

权限

在 kokkoro 看来,任何发送消息都是成员都是有等级的

  • level 0 群成员(随活跃度提升)
  • level 1 群成员(随活跃度提升)
  • level 2 群成员(随活跃度提升)
  • level 3 管 理
  • level 4 群 主
  • level 5 主 人
  • level 6 维护组

参数

在初始化项目后,会在根目录下生成 kokkoro.yml 文件,你可以在此修改相关配置

什么是 YAML

YAML 是一种专攻配置的语言,可读性高(JSON 有时确实让人眼花缭乱不是么?)
kokkoro 所有的配置文件均使用 YAML 编写,你也可以 查看 YAML 入门教程 获取相关信息

# 第三方服务 api key
api_key: 
  # 例如 saucenao 搜图
  "saucenao": 3d14159265358979323846264338327950288419
# web 服务端口号,为 0 则不启用
port: 0
# bot 信息,可添加多个
bots:
  # bot 账号
  "1145141919":
    # 项目启动时自动登录,默认 true
    auto_login: true
    # 登录模式,默认扫码登录
    mode: qrcode
    # bot 主人,可添加多个
    masters:
      - 2225151531
    # 协议配置,不要随意修改,除非你知道自己在做什么
    protocol:
      # 日志等级,默认 info
      # 打印日志会降低性能,若消息量巨大建议修改此参数
      log_level: info
      # 1:安卓手机(默认) 2:aPad 3:安卓手表 4:MacOS 5:iPad
      platform: 1
      # 忽略自己的消息,默认 true
      ignore_self: true
      # 被风控时是否尝试用分片发送,默认 true
      resend: true
      # 数据存储文件夹
      data_dir: ./data/bot
      # 重新登录间隔,默认5(秒)
      reconn_interval: 5
      # 是否缓存群员列表,默认 true,
      # 群多的时候 (500~1000) 会多占据约 100MB+ 内存
      # 关闭后进程只需不到 20MB 内存
      cache_group_member: true
      # 自动选择最优服务器
      # 关闭后会一直使用 `msfwifi.3g.qq.com:8080` 进行连接
      auto_server: true

补充

首次登录推荐使用扫码,密码登录需要过滑块验证,非真机环境下抓取 ticket 会失效
但是扫码登录后如果进行敏感操作,例如频繁下线上线等,可能会出现掉线需要重新扫码的情况
登录一段时间后,就不会再弹出滑动验证,此时建议将 mode 改为 password 来切换密码登录,更加稳定 φ(≧ω≦*)♪

鸣谢

感谢以下项目给予的灵感与启发