Skip to content

Commit

Permalink
Merge pull request #1 from mamoe/master
Browse files Browse the repository at this point in the history
Sync
  • Loading branch information
yiyione authored Jun 26, 2020
2 parents 2ba3187 + 74af082 commit 0f0b303
Show file tree
Hide file tree
Showing 118 changed files with 3,695 additions and 1,361 deletions.
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/bug---.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
name: Bug 报告
about: 提交一个 bug
title: ''
labels: " bug "
labels: " problem "
assignees: ''

---
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/bintray.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ jobs:
run: ./gradlew :mirai-core:bintrayUpload -Dbintray_user=${{ secrets.BINTRAY_USER }} -Pbintray_user=${{ secrets.BINTRAY_USER }} -Dbintray_key=${{ secrets.BINTRAY_KEY }} -Pbintray_key=${{ secrets.BINTRAY_KEY }}
- name: Gradle :mirai-core-qqandroid:bintrayUpload
run: ./gradlew :mirai-core-qqandroid:bintrayUpload -Dbintray_user=${{ secrets.BINTRAY_USER }} -Pbintray_user=${{ secrets.BINTRAY_USER }} -Dbintray_key=${{ secrets.BINTRAY_KEY }} -Pbintray_key=${{ secrets.BINTRAY_KEY }}
- name: Gradle :mirai-serialization:bintrayUpload
run: ./gradlew :mirai-serialization:bintrayUpload -Dbintray_user=${{ secrets.BINTRAY_USER }} -Pbintray_user=${{ secrets.BINTRAY_USER }} -Dbintray_key=${{ secrets.BINTRAY_KEY }} -Pbintray_key=${{ secrets.BINTRAY_KEY }}


# - name: Upload artifact
Expand Down
48 changes: 48 additions & 0 deletions .github/workflows/doc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# This is a basic workflow to help you get started with Actions

name: mirai-doc Publish

# Controls when the action will run. Triggers the workflow on push or pull request
# events but only for the master branch
on:
release:
types:
- created

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Gradle clean
run: ./gradlew clean
- name: Gradle build
run: ./gradlew build # if test's failed, don't publish
- name: Gradle :mirai-core:dokkaGitHubUpload
run: ./gradlew :mirai-core:dokkaGitHubUpload -Dgithub_token=${{ secrets.MAMOE_TOKEN }} -Pgithub_token=${{ secrets.MAMOE_TOKEN }}
- name: Gradle :mirai-core-qqandroid:dokkaGitHubUpload
run: ./gradlew :mirai-core-qqandroid:dokkaGitHubUpload -Dgithub_token=${{ secrets.MAMOE_TOKEN }} -Pgithub_token=${{ secrets.MAMOE_TOKEN }}


# - name: Upload artifact
# uses: actions/[email protected]
# with:
# # Artifact name
# name: mirai-core
# # Directory containing files to upload
# path: "mirai-core/build/libs/mirai-core-*-all.jar"
# - name: Upload artifact
# uses: actions/[email protected]
# with:
# # Artifact name
# name: mirai-core-qqandroid-all
# # Directory containing files to upload
# path: "mirai-core-qqandroid/build/libs/mirai-core-qqandroid-*-all.jar"
89 changes: 88 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,90 @@
# Version 1.x

## `1.1-EA` 2020/6/16
**1.1.0 Early Access** / **1.1.0 预览版**
**此版本新增的 API 可能不稳定, 且可能在下一个版本中删除.**

**主要**:
- 添加实验性 `CodableMessage` 作为支持 mirai 码的 `Message` 的接口.
- 支持 [mirai 码](docs\mirai-code-specification.md) 解析; 新模块 [`mirai-serialization`](mirai-serialization)
- 实现 `MessagePreSendEvent``MessagePostSendEvent` (#339).

**不兼容变更**:
- 重命名实验性 API `CustomMessage.Factory.serialize``CustomMessage.Factory.dump`
- 重命名实验性 API `CustomMessage.Factory.deserialize``CustomMessage.Factory.load`
- 弃用 `MessageSendEvent` (#339). 迁移计划: WARNING in 1.1.0, ERROR in 1.2.0, REMOVE in 1.3.0
- 调整 `VipFace` 的 mirai 码表示, 详见 mirai 码规范
- `Face.toString()` 现在返回表情名称, 如 "\[偷笑\]", 而不是 "\[表情\]" (#345 @goldimax)

**优化和修复**:

- 修复群头像的获取不正确的问题 (#340)
-`PttMessage``Voice` 标注 `@MiraiExperimentalAPI` (missing)
- 删除 `Message.plus(another: Flow<Message>)``@ExperimentalCoroutinesApi`
- 提升发送群消息的稳定性
- 一些文档优化
- 其他内部优化
- 提升在上个版本中弃用的 API 的弃用等级


## `1.0.2` 2020/6/1
- 新增 `Bot.botInstancesSequence`
- 修复日志中的时间未更新的问题
- 修复在某些情况下,Bot登录的时候无限重连 (#361)
- 优化一些文档注释

## `1.0.1` 2020/5/25
- 新增临时会话消息发送事件: `TempMessageSendEvent` (#338)
- 新增 `Bot.isOnline` (#342)
<br />

- 修复日志重定向到文件后无换行的问题
- 修复 Bot 被邀请入群事件的解析, 添加 `BotJoinGroupEvent.Invite` (#344)
- 修复 IPv6 地址支持 (#334)
- 修复一些 KDoc (#337)
- 优化一些内部的日志的显示

## `1.0.0` 2020/5/22

- `ContactOrBot` 现在继承 `CoroutineScope`
- 在没有手动指定 `deviceInfo` 时构建 Bot 将会发出警告, 须手动选择使用 `randomDeviceInfo``fileBasedDeviceInfo` 或自定义, 详见 [BotConfiguration.kt: Lines 69-72](mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/BotConfiguration.common.kt#L69-L72)
<br />

- 引入 `SimpleListenerHost` 以帮助 Java 处理事件监听
- 添加 Java 广播事件的方式: `EventKt.broadcast(Event)`
- 添加 `Bot.getInstanceOrNull`
- 改进 JVM 平台的 `PlatformLogger`, 添加 `DirectoryLogger`, `SingleFileLogger` 以提供重定向日志的快捷方式
- 统一日志格式, 使用 (正则) `^([\w-]*\s[\w:]*)\s(\w)\/(.*?):\s(.+)$`. 详见 [PlatformLogger.jvm.kt: Line 46](mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/PlatformLogger.jvm.kt#L46)

<br />

- 弃用 `Bot.queryUrl(Image)`, 改用 `image.queryUrl()` 扩展. (保留兼容到 1.2.0)
- 弃用 `Bot.accept*`, `Bot.reject*` 等相应入群请求等事件的方法, 改用事件的成员函数. (保留兼容到 1.2.0)

<br />

- 修复 `Bot` 实例化时 `NPE` 问题
- 修复网络状态差时 `Bot` 网络模块无法处理分包的问题
- 修复当无 Bot 在线时调用 `image.queryUrl()` 抛出的异常与 KDoc 描述不符的问题
- 修复 `BotJoinGroupEvent` 重复广播问题
- 修复邀请 Bot 进群时事件处理异常的问题 (#319)
- 修复当 `Event` 被实现为一个 Kotlin `object` 时无法正常拦截事件的问题
- 修复图片链接获取为空的问题 (#318)
- 修复成员被移除群后可能发生内存泄露的问题
- 修复异常没有正确输出到日志的问题
- 修复一些 `DefaultLogger` 的不恰当使用的问题
- 修复 `UnknownHostException` 未被正常捕获的问题

<br />

- 在 Bot 被禁言时忽略 `reply` 方式创建的监听器 (`subscribeMessages` DSL)
- 使用更宽松的方式读取 `device.json`
-`Bot.selfQQ` 标注 `@MiraiExperimentalAPI`
- 提高默认心跳超时时间
- 改进多处 KDoc
- 更新 kotlinx-coroutines-core 到 1.3.7
- ... 忽略了内部变动

## `1.0-RC2-1` 2020/5/11
修复一个 `VerifyError`

Expand Down Expand Up @@ -75,11 +160,13 @@
弃用 (兼容到 `1.2.0`):
- `MessagePacket`
- `MessagePacketBase`

进行如下更名:
- `ContactMessage` -> `MessageEvent`
- `FriendMessage` -> `FriendMessageEvent`
- `GroupMessage` -> `GroupMessageEvent`
- `TempMessage` -> `TempMessageEvent`

暂未决定是否提供 `UserMessageEvent` 作为 `TempMessageEvent``FriendMessageEvent` 的公共父类.

- 优化扩展函数结构, 统一放置在 `MessageEventExtensions`, 以使 `MessageEvent` 结构清晰.
Expand Down Expand Up @@ -171,7 +258,7 @@

新架构为:
- 弃用 `QQ` 命名 (二进制兼容到 1.0.0)
- 新增 `User` 继承 `Contact`, 作为 `Member``Friend`
- 新增 `User` 继承 `Contact`, 作为 `Member``Friend` 的父类
- `Member` 继承 `User`
- `Friend` 继承 `User`

Expand Down
19 changes: 10 additions & 9 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,26 +1,27 @@
# 贡献

感谢你来到这里和你对 mirai 做的所有贡献。
**感谢你来到这里和你对 mirai 做的所有贡献。**

mirai 欢迎一切形式的代码贡献。你可以通过以下几种途径向 mirai 贡献。

## 主仓库 `mirai-core`

**阅读文档**[docs/mirai.md](docs/mirai.md)

### 代码优化
优化功能设计或实现, 或是引入一个新的设计(建议先通过 issue 与我们达成共识)
### 能做什么?

### 协议更新
为 mirai 添加更广泛的协议支持。
**请基于 `master` 分支进行文档修改; 基于 `dev` 分支进行其他修改 (否则你的修改可能被关闭或不会立即合并)**

- 代码优化: 优化任何功能设计或实现, 或是引入一个新的设计(请先通过 issue 与维护者达成共识)
- 解决问题: 在 [issues](https://github.com/mamoe/mirai/issues) 查看 mirai 正遇到的所有问题, 或在 [里程碑](https://github.com/mamoe/mirai/milestones) 查看版本计划
- 协议支持: 添加新协议支持, 但需要避免添加 [mirai.md#声明](docs/mirai.md#L9) 中的内容

### 注意事项
- mirai 使用 [`kotlinx.io`](https://github.com/Kotlin/kotlinx-io) IO 库
- 尽量不要引用新的库
- 遵守 Kotlin 代码规范(提交前使用 IDE 格式化代码 (commit 时勾选 'Reformat code'))
- 不要手动拆解数据包. 请一定使用 `kotlinx.serialization` 拆解 ProtoBuf, 使用 mirai 的 `Jce` 序列化器拆解 Jce 数据包, 使用 `kotlinx.serialization` 拆解 Json 数据.
- 遵守 Kotlin 官方代码规范(提交前使用 IDE 格式化代码 (commit 时勾选 'Reformat code'))
- 不要手动拆解数据包. 请一定使用 `kotlinx.serialization` 拆解 ProtoBuf, 使用 [`jcekt`](https://github.com/him188/jcekt) 拆解 Tars 数据包, 使用 `kotlinx.serialization` 拆解 Json 数据.

## 社区

插件社区不要求太高的代码质量,任何人都可以帮助 mirai。
插件社区不要求太高的代码质量,任何人都可以帮助 mirai。
可以为 [mirai-console](https://github.com/mamoe/mirai-console) 编写插件, 并发布到社区网站: (建设中)
81 changes: 42 additions & 39 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
<div align="center">
<img width="160" src="https://tva1.sinaimg.cn/large/007kOCb2ly1ges6us0aqyj30u00u0tdq.jpg" alt="logo"></br>
<img width="160" src="docs/mirai.png" alt="logo"></br>


<img width="95" src="http://img.mamoe.net/2020/02/16/c4aece361224d.png" alt="title">
<img width="95" src="docs/mirai.svg" alt="title">

----

Expand Down Expand Up @@ -78,31 +77,47 @@ mirai 既可以作为项目中的 QQ 协议支持库, 也可以作为单独的

## 开始

[Mirai-core 1.0.0 Milestone](https://github.com/mamoe/mirai/milestone/2) 已经完成, mirai 正在进行进一步的稳定性和性能优化, 并计划发布第一个正式版本.

在 1.0.0 将会删除全部过时的 API, 目前的 API 也可能会改变.
### 文档
- **快速上手**[quickstart](docs/guide_quick_start.md)
- **开发文档**[docs/mirai.md](docs/mirai.md)
- **常见问题**: [docs/FAQ.md](docs/FAQ.md)
- **更新日志**: [CHANGELOG](https://github.com/mamoe/mirai/blob/master/CHANGELOG.md)[release](https://github.com/mamoe/mirai/releases)
- **开发计划**: [milestones](https://github.com/mamoe/mirai/milestones)
- **贡献**: [CONTRIBUTING](CONTRIBUTING.md)

### 开发者

**阅读文档**[docs/mirai.md](docs/mirai.md)
#### 使用 mirai-console 服务端,为 mirai-console 开发插件

官方支持 SDK 列表:

- `Java`, `Kotlin` 等 JVM 语言: 为 [mirai-console](https://github.com/mamoe/mirai-console) 直接编写插件并与其他插件开发者合作共享
- `Kotlin Script`[mirai-kts](https://github.com/iTXTech/mirai-kts) 支持使用 `kts` 编写插件,享受 `Kotlin` 带来的一切便利(**仅 OpenJDK 8 以上环境,不支持 Android**
- `C`, `C++` 等原生语言: [mirai-native](https://github.com/iTXTech/mirai-native) 支持酷 Q 插件在 mirai 上运行 **(仅限 `Windows 32 位 JRE`/支持 `Wine`)**
- `JavaScript`[mirai-js](https://github.com/iTXTech/mirai-js) 支持使用 `JavaScript` 编写插件并**直接**与 mirai 交互
- *Http*:使用由 [mirai-api-http](https://github.com/mamoe/mirai-api-http) 提供的 http 接口进行接入

#### 使用 mirai 作为服务器,为 mirai 开发插件
<details>
<summary>社区支持的 SDK 列表</summary>

基于 `mirai-core` (独立使用):
- `Lua`: [lua-mirai](https://github.com/only52607/lua-mirai) 基于 mirai-core 的 Lua SDK,并提供了 Java 扩展支持,可在 Lua 中调用 Java 代码开发机器人

- (官方)`Java``Kotlin`: 为 [mirai-console](https://github.com/mamoe/mirai-console) 直接编写插件并与其他插件开发者合作共享
- (官方)`Kotlin Script`[mirai-kts](https://github.com/iTXTech/mirai-kts) 支持使用`kts`编写插件,享受`Kotlin`带来的一切便利(**仅支持OpenJDK 8以上环境,不支持Android**
- (官方)`C`, `C++` 等原生语言: [mirai-native](https://github.com/iTXTech/mirai-native) 支持酷Q插件在mirai上运行 **(仅限`Windows 32位JRE`/支持`Wine`)**
- (官方)`JavaScript`[mirai-js](https://github.com/iTXTech/mirai-js) 支持使用`JavaScript`编写插件并**直接**`Mirai`交互
- (社区)`Python`: [python-mirai](https://github.com/NatriumLab/python-mirai) 基于 `mirai-api-http` 的机器人开发框架
- (社区)`JavaScript`(`Node.js`): [node-mirai](https://github.com/RedBeanN/node-mirai) mirai 的 Node.js SDK
- (社区)`Go`: [gomirai](https://github.com/Logiase/gomirai) 基于 mirai-api-http 的 GoLang SDK
- (社区)`Mozilla Rhino`: [mirai-rhinojs-sdk](https://github.com/StageGuard/mirai-rhinojs-sdk) 为基于 Rhino(如 Auto.js 等安卓 app 或运行环境)的 JavaScript 提供简单易用的 SDK
- (社区)`Lua`: [lua-mirai](https://github.com/only52607/lua-mirai) 基于mirai-core 的Lua SDK,并提供了java扩展支持,可在lua中调用java代码开发机器人
- (社区)`C++`: [mirai-cpp](https://github.com/cyanray/mirai-cpp) mirai-http-api 的 C++ 封装,方便使用 C++ 开发 mirai-http-api 插件
- (社区)`C++`: [miraipp](https://github.com/Chlorie/miraipp-template) mirai-http-api 的另一个 C++ 封装,使用现代 C++ 特性,并提供了较完善的说明文档
- (社区)`Rust`: [mirai-rs](https://github.com/HoshinoTented/mirai-rs) mirai-http-api 的 Rust 封装
- (官方)其他任意语言:使用由 [mirai-api-http](https://github.com/mamoe/mirai-api-http) 提供的 http 接口进行接入

#### 使用 mirai 为第三方依赖库引入项目
基于 `mirai-http-api` (配合 [mirai-console](https://github.com/mamoe/mirai-console)):

- `Python`: [python-mirai](https://github.com/NatriumLab/python-mirai) 基于 `mirai-api-http` 的机器人开发框架
- `JavaScript`(`Node.js`): [node-mirai](https://github.com/RedBeanN/node-mirai) mirai 的 Node.js SDK
- `Go`: [gomirai](https://github.com/Logiase/gomirai) 基于 mirai-api-http 的 GoLang SDK
- `Mozilla Rhino`: [mirai-rhinojs-sdk](https://github.com/StageGuard/mirai-rhinojs-sdk) 为基于 Rhino(如 Auto.js 等安卓 app 或运行环境)的 JavaScript 提供简单易用的 SDK
- `C++`: [mirai-cpp](https://github.com/cyanray/mirai-cpp) mirai-http-api 的 C++ 封装,方便使用 C++ 开发 mirai-http-api 插件
- `C++`: [miraipp](https://github.com/Chlorie/miraipp-template) mirai-http-api 的另一个 C++ 封装,使用现代 C++ 特性,并提供了较完善的说明文档
- `C#`: [Mirai-CSharp](https://github.com/Executor-Cheng/Mirai-CSharp) 基于 mirai-api-http 的 C# SDK
- `Rust`: [mirai-rs](https://github.com/HoshinoTented/mirai-rs) mirai-http-api 的 Rust 封装

</details>

#### 使用 mirai-core 为第三方依赖库引入项目

Demos: [mirai-demos](https://github.com/mamoe/mirai-demos)

Expand All @@ -112,27 +127,13 @@ Demos: [mirai-demos](https://github.com/mamoe/mirai-demos)

### 使用者

- [mirai-console](https://github.com/mamoe/mirai-console) 支持插件 **本模块正在完善**
- [mirai-console](https://github.com/mamoe/mirai-console) 支持插件的控制台服务端,支持PC和Android平台 **本模块正在开发中**

### 其他平台的使用者
#### 从其他平台迁移

- 酷Q的插件可以在 mirai 中加载, 详见 [Mirai-Native](https://github.com/iTXTech/mirai-native)
- 使用 `酷Q HTTP API` 的插件将可以在 mirai 中加载,`Mirai-CQ-Adapter` 正在进行中
- [MiraiAndroid](https://github.com/mzdluo123/MiraiAndroid) 让mirai-console的插件在Android运行 **实验性**

## 我想马上开始使用它

请下载这里的一键安装包[下载地址](https://suihou-my.sharepoint.com/:f:/g/personal/user18_5tb_site/ErWGr97FpPVDjkboIDmDAJkBID-23ZMNbTPggGajf1zvGw?e=51NZWM),它可以让你快速在你的服务器/个人电脑上运行mirai-console

**请注意**
* 使用时请留意安装包里的说明文字
* 目前本安装包只支持Windows系统,且mirai-console仍在开发中,可能会存在一些bug
* 关于安装包本身的一切问题请到QQ群内反馈
* 如果上面的链接下载过慢,你可以到QQ群内高速下载

## 更新日志

*[CHANGELOG](https://github.com/mamoe/mirai/blob/master/CHANGELOG.md) 查看版本更新记录 (仅发布的版本)

## [贡献](CONTRIBUTING.md)

Expand All @@ -145,6 +146,8 @@ Demos: [mirai-demos](https://github.com/mamoe/mirai-demos)

## 鸣谢

> IntelliJ IDEA 是一个在各个方面都最大程度地提高开发人员的生产力的 IDE, 适用于 JVM 平台语言。
特别感谢 [JetBrains](https://www.jetbrains.com/?from=mirai) 为开源项目提供免费的 [IntelliJ IDEA](https://www.jetbrains.com/idea/?from=mirai) 等 IDE 的授权
[<img src=".github/jetbrains-variant-3.png" width="200"/>](https://www.jetbrains.com/?from=mirai)

Expand All @@ -161,7 +164,7 @@ Demos: [mirai-demos](https://github.com/mamoe/mirai-demos)

------

Copyright (C) 2019-2020 mamoe and Mirai contributors
Copyright (C) 2019-2020 Mamoe Technologies and mirai contributors

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
Expand Down
1 change: 1 addition & 0 deletions _config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
theme: jekyll-theme-cayman
Loading

0 comments on commit 0f0b303

Please sign in to comment.