Skip to content
This repository has been archived by the owner on Nov 2, 2023. It is now read-only.

Commit

Permalink
Merge pull request #37 from takayama-lily/dev
Browse files Browse the repository at this point in the history
-
  • Loading branch information
takayama-lily authored Sep 16, 2020
2 parents 049adb0 + b373565 commit 1aa8396
Show file tree
Hide file tree
Showing 8 changed files with 321 additions and 141 deletions.
2 changes: 1 addition & 1 deletion client.js
Original file line number Diff line number Diff line change
Expand Up @@ -570,7 +570,7 @@ class AndroidClient extends Client {
try {
this.friend_list_lock = true;
this.friend_list = new Map();
let start = 0, limit = 250;
let start = 0, limit = 5000;
while (1) {
const total = await this.send(outgoing.buildFriendListRequestPacket(start, limit, this));
start += limit;
Expand Down
234 changes: 186 additions & 48 deletions docs/api.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
# API和事件

+ [oicq.createClient(uin[,config])](#oicq.createClient(uin[,config]))
+ [oicq.setGlobalConfig(config)](#oicq.setGlobalConfig(config))
+ [Class: oicq.Client](#Class-Client)
+ [Events](#Events)
+ [Event: system](#Event-system)
Expand All @@ -12,6 +11,7 @@
+ [client.captchaLogin(captcha)](#client.captchaLogin(captcha))
+ [client.terminate()](#client.terminate())
+ [APIs](#APIs)
+ [oicq.setGlobalConfig(config)](#oicq.setGlobalConfig(config))

----

Expand All @@ -20,7 +20,7 @@
+ `uin` \<number>
+ `config` \<Object>

创建一个实例
创建client一个实例

```js
const oicq = require("oicq");
Expand All @@ -40,62 +40,43 @@ const config = {
};
```

※ 不建议在单个工作线程中运行多个实例。如果确实有需要,建议使用 [Worker threads](https://nodejs.org/dist/latest/docs/api/worker_threads.html)[Child process](https://nodejs.org/dist/latest/docs/api/child_process.html) 管理实例。

----

## oicq.setGlobalConfig(config)

+ `config` \<Object>

全局设置

```js
//要使用默认配置请勿传递该字段
oicq.setGlobalConfig({
web_image_timeout: 0, //下载网络图片的超时时间(0表示系统自己判断)
web_record_timeout: 0, //下载网络语音的超时时间
cache_root: "", //缓存文件夹根目录,需要可写权限,默认主目录下的data文件夹
debug: false,
});
```

----

## Class: `Client`

只能使用工厂方法 createClient 创建实例。

----

## Events

使用 `client.on()` 来监听一个事件:

```js
client.on("system.login", (data)=>{
client.on("system.login.captcha", (data)=>{
console.log(data);
});
```

事件为冒泡传递,例如 `request.group.add` 事件,若未监听会沿着 `request.group` 传递到 `request`
事件为冒泡传递,例如 `request.group.add` 事件,若未监听会沿着二级分类 `request.group` 传递到一级分类 `request`
事件使用cqhttp风格命名和参数,所有事件数据都为json对象,并包含以下共通字段:

+ `self_id`
+ `time`
+ `post_type` 一级分类 system, message, request, notice
+ `{post_type}_type` 二级分类如 system.login, request.group
+ `sub_type` 三级分类,有时会没有
+ `{post_type}_type` 二级分类 如:login, online, offline, group, friend, private 等
+ `sub_type` 三级分类 如:captcha, add, invite 等,有时会没有

之后只列出其他非共通的字段。

----

## Event: `system`

+ `system.login`
+ `system.login.captcha` 收到验证码 `image` 字段为图像Buffer
+ `system.login.device` 需要解设备锁 `url` 字段为设备锁验证地址
+ `system.login.error` 其他原因如密码错误 `message` 字段为失败原因
+ `system.login.captcha` 收到验证码
+ *`image`* 图片数据(Buffer)
+ `system.login.device` 需要解设备锁
+ *`url`* 设备锁验证地址(string)
+ `system.login.error` 其他原因导致登陆失败
+ *`message`* "密码错误"等(string)

+ `system.online` 上线事件,可以开始处理消息

+ `system.offline` 下线事件
+ `system.offline.network` 网络断开
+ `system.offline.frozen` 被冻结
Expand All @@ -105,58 +86,197 @@ client.on("system.login", (data)=>{

----

以下事件与 [CQHTTP](https://github.com/howmanybots/onebot/blob/master/v11/specs/event/README.md) 大同小异
以下事件使用 [CQHTTP](https://github.com/howmanybots/onebot/blob/master/v11/specs/event/README.md) 风格的命名和字段

## Event: `message`

+ `message.private`
+ **message.private**

+ `message.private.friend` 好友消息
+ `message.private.single` 单向好友消息(对方未加你)
+ `message.private.group` 群临时会话
+ `message.private.other` 其他临时会话
+ `message.group`
+ *`message_id`* string型
+ *`user_id`* 对方QQ号(number)
+ *`font`* 字体名称(string),如:"微软雅黑"
+ *`message`* 数组格式的消息
+ *`raw_message`* 字符串格式的消息(CQ码已转义)
+ *`sender`*
+ *`user_id`*
+ *`nickname`* 昵称(string)
+ *`remark`* 备注
+ *`sex`* "male"或"female"或"unknown"
+ *`age`* 年龄(number)

+ **message.group**

+ `message.group.normal` 群消息
+ `message.group.anonymous` 群匿名消息
+ *`message_id`* string型
+ *`group_id`* 群号(number)
+ *`group_name`* 群名(string)
+ *`user_id`* 对方QQ号(number)
+ *`anonymous`* 非匿名消息时为null
+ *`id`* 暂时为0
+ *`name`* 匿名者的名字
+ *`flag`* 暂时为空
+ *`font`* 字体名称(string),如:"微软雅黑"
+ *`message`* 数组格式的消息
+ *`raw_message`* 字符串格式的消息(CQ码已转义)
+ *`sender`*
+ *`user_id`*
+ *`nickname`* 昵称(string)
+ *`card`* 群名片
+ *`sex`* "male"或"female"或"unknown"
+ *`age`* 年龄(number)
+ *`area`* 暂时为"unknown"
+ *`level`* 群等级(number)
+ *`role`* "owner"或"admin"或"member"
+ *`title`* 群头衔(string)

----

## Event: `request`

+ `request.friend`
+ **request.friend**

+ `request.friend.add` 好友请求
+ `request.group`
+ *`user_id`*
+ *`nickname`*
+ *`source`* 来源(某QQ群或搜索等)(string)
+ *`comment`*
+ *`sex`*
+ *`age`*
+ *`flag`* 用于处理请求时传入(string)

+ **request.group**

+ `request.group.add` 加群请求
+ *`group_id`*
+ *`group_name`*
+ *`user_id`*
+ *`nickname`*
+ *`comment`*
+ *`flag`*

+ `request.group.invite` 加群邀请
+ *`group_id`*
+ *`group_name`*
+ *`user_id`*
+ *`nickname`*
+ *`role`* 邀请者的权限(admin或member)
+ *`flag`*

----

## Event: `notice`

为了统一风格,notice事件的命名和原版cqhttp有一定出入

+ `notice.friend`
+ **notice.friend**

+ `notice.friend.increase` 好友增加
+ `notice.friend.decrease` 好友减少(被拉黑或自己删除)
+ *`user_id`*
+ *`nickname`*

+ `notice.friend.decrease` 好友减少(被拉黑或自己删除都会触发)
+ *`user_id`*
+ *`nickname`*

+ `notice.friend.recall` 消息撤回事件
+ `notice.group`
+ *`user_id`*
+ *`message_id`*

+ **notice.group**

+ `notice.group.increase` 群员增加
+ `notice.group.decrease` 群员减少
+ `notice.group.recall` 消息撤回事件
+ `notice.group.admin` 管理变更事件
+ *`group_id`*
+ *`user_id`*
+ *`nickname`*

+ `notice.group.decrease` 群员减少(bot在其他客户端自己退群,事件不会触发)
+ *`group_id`*
+ *`operator_id`* 操作者,自己退群的时候和user_id相同
+ *`user_id`*
+ *`dismiss`* 是否是解散(boolean型)

+ `notice.group.recall` 群消息撤回事件
+ *`group_id`*
+ *`operator_id`*
+ *`user_id`*
+ *`message_id`*

+ `notice.group.admin` 管理变更事件(bot是群主,在其他客户端设置管理,事件不会触发)
+ *`group_id`*
+ *`user_id`*
+ *`set`* boolean型

+ `notice.group.ban` 群禁言事件
+ *`group_id`*
+ *`operator_id`*
+ *`user_id`*
+ *`duration`* 时间(0为解禁)

+ `notice.group.transfer` 群转让事件
+ *`group_id`*
+ *`operator_id`* 旧群主
+ *`user_id`* 新群主

+ `notice.group.notice` 收到群公告
+ *`group_id`*
+ *`user_id`*
+ *`title`*
+ *`content`*

+ `notice.group.file` 收到群文件
+ *`group_id`*
+ *`user_id`*
+ *`file`*
+ *`name`*
+ *`url`*
+ *`size`*
+ *`md5`*
+ *`duration`*

+ `notice.group.name` 群名变更事件
+ *`group_id`*
+ *`user_id`*
+ *`new_name`*

+ `notice.group.title` 群头衔变更事件
+ *`group_id`*
+ *`user_id`*
+ *`new_title`*

+ `notice.group.poke` 群戳一戳事件
+ *`group_id`*
+ *`operator_id`* 操作者
+ *`user_id`* 目标
+ *`action`* 动作名
+ *`suffix`* 动作后缀

+ `notice.group.setting` 群设置变更事件,以下带有enable的字段都为 `boolean`
+ *`enable_guest`* 允许游客进入
+ *`enable_anonymous`* 允许匿名
+ *`enable_upload_album`* 允许群员上传相册
+ *`enable_upload_file`* 允许群员上传文件
+ *`enable_temp_chat`* 允许临时会话
+ *`enable_new_group`* 允许发起新群聊
+ *`enable_show_honor`* 展示群互动标识(龙王等)
+ *`enable_show_level`* 展示群等级
+ *`enable_show_title`* 展示群头衔
+ *`enable_confess`* 开启坦白说
+ *`enable_cowrite`* 开启一起写
+ *`group_id`*
+ *`user_id`* 操作者不明的时候为 -1

----

## 系统类API

## `client.login(password_md5)` 密码登陆

+ `password_md5` \<string|Buffer> md5后的密码,可以是字符串或Buffer
+ `password_md5` \<string|Buffer> md5后的密码,hex字符串或Buffer

----

Expand All @@ -172,7 +292,7 @@ client.on("system.login", (data)=>{

## APIs

( [CQHTTP](https://github.com/howmanybots/onebot/blob/master/v11/specs/api/public.md) 大同小异)
(使用 [CQHTTP](https://github.com/howmanybots/onebot/blob/master/v11/specs/api/public.md) 风格的命名和参数)

同步函数会直接返回。异步函数标注为 `async` ,返回的是 `Promise` ,返回值为以下格式的json对象:

Expand Down Expand Up @@ -265,3 +385,21 @@ message可以使用 `Array` 格式或 `String` 格式,支持CQ码
+ `client.getLoginInfo()`

----

## oicq.setGlobalConfig(config)

+ `config` \<Object>

全局设置

```js
//要使用默认配置请勿传递该字段
oicq.setGlobalConfig({
web_image_timeout: 0, //下载网络图片的超时时间(0表示系统自己判断)
web_record_timeout: 0, //下载网络语音的超时时间
cache_root: "", //缓存文件夹根目录,需要可写权限,默认主目录下的data文件夹
debug: false,
});
```

----
2 changes: 1 addition & 1 deletion docs/project.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
|修改名片|||
|修改群名|||
|群公告|||
|其他设置|||
|其他设置|||
|群文件|||
|设置头衔|||
|设置管理|||
Expand Down
Loading

0 comments on commit 1aa8396

Please sign in to comment.