kokkoro
kokkoro copied to clipboard
とある咕咕の QQ 机器人框架 (OxO)?!...
kokkoro
> とある咕咕の QQ 机器人框架 <本项目是一个基于 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 |
---|---|---|---|
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
来切换密码登录,更加稳定 φ(≧ω≦*)♪
鸣谢
感谢以下项目给予的灵感与启发