diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml
new file mode 100644
index 00000000..a8136db2
--- /dev/null
+++ b/.github/workflows/build-test.yml
@@ -0,0 +1,43 @@
+name: Kook.Net Test
+
+on:
+ workflow_call:
+ inputs:
+ target:
+ description: 'Targeting OS'
+ required: true
+ type: string
+ dotnet-version:
+ description: '.NET version'
+ required: true
+ type: string
+
+jobs:
+ build_and_test:
+ name: Build and Test
+ runs-on: ${{ inputs.target }}
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v3
+
+ - name: Setup .NET
+ uses: actions/setup-dotnet@v3
+ with:
+ dotnet-version: ${{ inputs.dotnet-version }}
+
+ - name: Cache Dependencies
+ uses: actions/cache@v3
+ with:
+ path: ~/.nuget/packages
+ key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj', 'Kook.Net.targets') }}
+ restore-keys: |
+ ${{ runner.os }}-nuget
+
+ - name: Restore Dependencies
+ run: dotnet restore src
+
+ - name: Build
+ run: dotnet build src --no-restore
+
+ - name: Test
+ run: dotnet test src --no-build --verbosity normal --filter Category!=Integration --blame-hang-timeout 15min
\ No newline at end of file
diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
deleted file mode 100644
index 92d315ab..00000000
--- a/.github/workflows/deploy.yml
+++ /dev/null
@@ -1,90 +0,0 @@
-name: Kook.Net Deploy
-
-on:
- push:
- branches: [ master ]
- pull_request:
- branches: [ master ]
-
-jobs:
-
- package:
-
- # Build Solution
-
- runs-on: windows-latest
- steps:
- - uses: actions/checkout@v2
-
- - name: Setup .NET
- uses: actions/setup-dotnet@v1
- with:
- dotnet-version: 7.0.x
-
- - name: Restore Dependencies
- run: dotnet restore src
-
- - name: Build
- run: dotnet build src --no-restore
-
- - name: Test
- run: dotnet test src --no-build --verbosity normal --filter Category!=Integration --blame-hang-timeout 15min
-
- # Packages
-
- - name: Generate Packages
- run: dotnet pack src --configuration Release --output packages
-
- - name: Push Packages to NuGet
- run: dotnet nuget push .\packages\*.nupkg -k $env:NUGET_TOKEN -s https://api.nuget.org/v3/index.json --skip-duplicate
- env:
- NUGET_TOKEN: ${{secrets.NUGET_API_KEY}}
-
- - name: Push Packages to Github
- run: dotnet nuget push .\packages\*.nupkg -k $env:GITHUB_TOKEN -s https://nuget.pkg.github.com/gehongyan/index.json --skip-duplicate
- env:
- GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
-
-
- doc:
-
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
-
- - name: Setup .NET
- uses: actions/setup-dotnet@v1
- with:
- dotnet-version: 7.0.x
-
- - name: Restore Dependencies
- run: dotnet restore src
-
- - name: Build
- run: dotnet build src --no-restore
-
- # DocFX
-
-
- - uses: nikeee/docfx-action@v1.0.0
- name: Build Doc
- with:
- args: ./docs/docfx.json
-
- - uses: finnp/create-file-action@master
- name: Add CNAME
- env:
- FILE_NAME: "docs/_site/CNAME"
- FILE_DATA: "kooknet.dev"
-
- - name: Publish Doc
- uses: cpina/github-action-push-to-another-repository@main
- env:
- API_TOKEN_GITHUB: ${{ secrets.ACTIONS_DEPLOY_KEY }}
- with:
- source-directory: docs/_site/
- destination-github-username: gehongyan
- destination-repository-username: gehongyan
- destination-repository-name: Kook.Net.Doc
- target-directory: docs
- user-email: gehongyan1996@126.com
diff --git a/.github/workflows/dev.yml b/.github/workflows/dev.yml
deleted file mode 100644
index 899a55ca..00000000
--- a/.github/workflows/dev.yml
+++ /dev/null
@@ -1,32 +0,0 @@
-name: Kook.Net Dev
-
-on:
- push:
- branches: [ dev ]
- pull_request:
- branches: [ dev ]
-
-jobs:
- dev:
-
- # Build Solution
-
- runs-on: windows-latest
- steps:
- - uses: actions/checkout@v2
-
- - name: Setup .NET
- uses: actions/setup-dotnet@v1
- with:
- dotnet-version: 7.0.x
-
- - name: Restore Dependencies
- run: dotnet restore src
-
- - name: Build
- run: dotnet build src --no-restore
-
- - name: Test
- run: dotnet test src --no-build --verbosity normal --filter Category!=Integration --blame-hang-timeout 15min
- env:
- KOOK_NET_TEST_TOKEN: ${{ secrets.KOOK_NET_TEST_TOKEN }}
diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml
new file mode 100644
index 00000000..e71e79a5
--- /dev/null
+++ b/.github/workflows/doc.yml
@@ -0,0 +1,63 @@
+name: Kook.Net Documentation
+
+on:
+ workflow_call:
+ inputs:
+ dotnet-version:
+ description: '.NET version'
+ required: true
+ type: string
+ secrets:
+ DOC_DEPLOY_KEY:
+ description: 'NuGet API Key'
+ required: true
+
+jobs:
+ doc:
+ name: Publish Documentation
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v3
+
+ - name: Setup .NET
+ uses: actions/setup-dotnet@v3
+ with:
+ dotnet-version: ${{ inputs.dotnet-version }}
+
+ - name: Cache Dependencies
+ uses: actions/cache@v3
+ with:
+ path: ~/.nuget/packages
+ key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj', 'Kook.Net.targets') }}
+ restore-keys: |
+ ${{ runner.os }}-nuget
+
+ - name: Restore Dependencies
+ run: dotnet restore src
+
+ - name: Build
+ run: dotnet build src --no-restore
+
+ - uses: nikeee/docfx-action@v1.0.0
+ name: Build Doc
+ with:
+ args: ./docs/docfx.json
+
+ - uses: finnp/create-file-action@master
+ name: Add CNAME
+ env:
+ FILE_NAME: "docs/_site/CNAME"
+ FILE_DATA: "kooknet.dev"
+
+ - name: Publish Doc
+ uses: cpina/github-action-push-to-another-repository@main
+ env:
+ API_TOKEN_GITHUB: ${{ secrets.DOC_DEPLOY_KEY }}
+ with:
+ source-directory: docs/_site/
+ destination-github-username: gehongyan
+ destination-repository-username: gehongyan
+ destination-repository-name: Kook.Net.Doc
+ target-directory: docs
+ user-email: gehongyan1996@126.com
diff --git a/.github/workflows/packages.yml b/.github/workflows/packages.yml
new file mode 100644
index 00000000..c37a5496
--- /dev/null
+++ b/.github/workflows/packages.yml
@@ -0,0 +1,56 @@
+name: Kook.Net Packages
+
+on:
+ workflow_call:
+ inputs:
+ dotnet-version:
+ description: '.NET version'
+ required: true
+ type: string
+ secrets:
+ NUGET_API_KEY:
+ description: 'NuGet API Key'
+ required: true
+ GITHUB_PACKAGES_KEY:
+ description: 'GitHub API Key'
+ required: true
+
+jobs:
+ push_packages:
+ name: Push Packages
+ runs-on: windows-latest
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v3
+
+ - name: Setup .NET
+ uses: actions/setup-dotnet@v3
+ with:
+ dotnet-version: ${{ inputs.dotnet-version }}
+
+ - name: Cache Dependencies
+ uses: actions/cache@v3
+ with:
+ path: ~/.nuget/packages
+ key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj', 'Kook.Net.targets') }}
+ restore-keys: |
+ ${{ runner.os }}-nuget
+
+ - name: Generate Packages
+ run: dotnet pack src --configuration Release --output packages
+
+ - name: Push Packages to NuGet
+ run: dotnet nuget push .\packages\*.nupkg -k $env:NUGET_API_KEY -s https://api.nuget.org/v3/index.json --skip-duplicate
+ env:
+ NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }}
+
+ - name: Push Packages to Github
+ run: dotnet nuget push .\packages\*.nupkg -k $env:GITHUB_PACKAGES_KEY -s https://nuget.pkg.github.com/gehongyan/index.json --skip-duplicate
+ env:
+ GITHUB_PACKAGES_KEY: ${{ secrets.GITHUB_PACKAGES_KEY }}
+
+ - name: Upload Artifacts
+ uses: actions/upload-artifact@v3
+ with:
+ name: Packages
+ path: ./packages/
diff --git a/.github/workflows/push-or-pr.yml b/.github/workflows/push-or-pr.yml
new file mode 100644
index 00000000..7ecedd16
--- /dev/null
+++ b/.github/workflows/push-or-pr.yml
@@ -0,0 +1,28 @@
+name: Kook.Net on Push or Pull Request
+
+on:
+ push:
+ branches: [ master, dev ]
+ pull_request:
+ branches: [ master, dev ]
+
+jobs:
+ build_and_test:
+ name: Build and Test
+ strategy:
+ matrix:
+ target: [ windows-latest, ubuntu-latest, macOS-latest ]
+ uses: ./.github/workflows/build-test.yml
+ with:
+ target: ${{ matrix.target }}
+ dotnet-version: 7.0.x
+
+ call_push_packages:
+ name: Push Packages
+ needs: build_and_test
+ uses: ./.github/workflows/packages.yml
+ with:
+ dotnet-version: 7.0.x
+ secrets:
+ NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }}
+ GITHUB_PACKAGES_KEY: ${{ secrets.GITHUB_TOKEN }}
\ No newline at end of file
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 00000000..6976ec91
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,25 @@
+name: Kook.Net on Release
+
+on:
+ release:
+ types: [ published ]
+
+jobs:
+ build_and_test:
+ name: Build and Test
+ strategy:
+ matrix:
+ target: [ windows-latest, ubuntu-latest, macOS-latest ]
+ uses: ./.github/workflows/build-test.yml
+ with:
+ target: ${{ matrix.target }}
+ dotnet-version: 7.0.x
+
+ call_doc:
+ name: Generate Documentation
+ needs: build_and_test
+ uses: ./.github/workflows/doc.yml
+ with:
+ dotnet-version: 7.0.x
+ secrets:
+ DOC_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 00000000..0d7fb462
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,7 @@
+# Changelog
+
+---
+
+## v0.1.0 [2022-11-15]
+
+Initial release.
\ No newline at end of file
diff --git a/README.md b/README.md
index 8e8dfdbc..8b4ba5f6 100644
--- a/README.md
+++ b/README.md
@@ -69,7 +69,8 @@ for portion of the code in this repository according to [this license](https://g
Special thanks to [Discord.Net](https://github.com/discord-net/Discord.Net) for such a great project.
-
+
+
Special thanks to [JetBrains](https://www.jetbrains.com) for providing free licenses for their awesome tools -
[Rider](https://www.jetbrains.com/rider/) and [ReSharper](https://www.jetbrains.com/resharper/).
diff --git a/assets/ReSharper_Icon.png b/assets/ReSharper_Icon.png
new file mode 100644
index 00000000..89d8ab19
Binary files /dev/null and b/assets/ReSharper_Icon.png differ
diff --git a/assets/JetBrains_Logo.svg b/assets/Rider_Icon.svg
similarity index 100%
rename from assets/JetBrains_Logo.svg
rename to assets/Rider_Icon.svg
diff --git a/docs/changelog/changelog.md b/docs/changelog/changelog.md
new file mode 100644
index 00000000..0d0ef9e3
--- /dev/null
+++ b/docs/changelog/changelog.md
@@ -0,0 +1,11 @@
+---
+uid: Changelog
+title: 变更日志
+---
+
+
+# 变更日志
+
+## v0.1.0 [2022-11-15]
+
+首次发布。
diff --git a/docs/changelog/toc.yml b/docs/changelog/toc.yml
new file mode 100644
index 00000000..db99360e
--- /dev/null
+++ b/docs/changelog/toc.yml
@@ -0,0 +1,2 @@
+- name: 变更日志
+ topicUid: Changelog
\ No newline at end of file
diff --git a/docs/docfx.json b/docs/docfx.json
index 2203795f..1af1ea63 100644
--- a/docs/docfx.json
+++ b/docs/docfx.json
@@ -4,7 +4,13 @@
"src": [
{
"src": "../src",
- "files": ["**.csproj"]
+ "exclude": [
+ "**/bin/**",
+ "**/obj/**"
+ ],
+ "files": [
+ "**.csproj"
+ ]
}
],
"dest": "api"
@@ -13,20 +19,41 @@
"build": {
"content": [
{
- "files": ["api/**.yml", "api/index.md"]
+ "files": [
+ "api/**.yml",
+ "api/index.md"
+ ]
},
{
- "files": ["toc.yml", "index.md"]
+ "files": [
+ "toc.yml",
+ "index.md"
+ ]
},
{
- "files": ["guides/**.md", "guides/**/toc.yml"]
+ "files": [
+ "guides/**.md",
+ "guides/**/toc.yml"
+ ]
+ },
+ {
+ "files": [
+ "changelog/**.md",
+ "changelog/**/toc.yml"
+ ]
}
],
"resource": [
{
"files": [
"**/images/**",
- "**/samples/**"
+ "**/samples/**",
+ "langwordMapping.md"
+ ],
+ "exclude": [
+ "_site/**",
+ "**/obj/**",
+ "**.meta"
]
}
],
@@ -35,15 +62,23 @@
"default",
"templates/singulinkfx"
],
- "postProcessors": ["ExtractSearchIndex"],
+ "xrefService": [
+ "https://xref.docs.microsoft.com/query?uid={uid}"
+ ],
+ "postProcessors": [
+ "ExtractSearchIndex"
+ ],
"globalMetadata": {
"_appTitle": "Kook.Net 文档",
"_appName": "Kook.Net 文档",
"_appFooter": "Kook.Net (c) 2022",
"_enableSearch": true,
- "_appFaviconPath": "favicon.ico"
+ "_appFaviconPath": "favicon.ico",
+ "_gitContribute": {
+ "branch": "master"
+ }
},
- "sitemap":{
+ "sitemap": {
"baseUrl": "https://www.kooknet.dev"
}
}
diff --git a/docs/guides/getting_started/first-bot.md b/docs/guides/getting_started/first-bot.md
index ca953445..090bd8ec 100644
--- a/docs/guides/getting_started/first-bot.md
+++ b/docs/guides/getting_started/first-bot.md
@@ -86,7 +86,7 @@ Kook.Net 广泛采用 .NET 的 [异步编程模型],绝大多数操作都是
[!code-csharp[Simple Logging](samples/simple-logging.cs)]
-[API 文档]: xref:KaiHeila.Rest.BaseKaiHeilaClient.Log
+[API 文档]: xref:Kook.Rest.BaseKookClient.Log
### 创建 KOOK Bot 客户端程序
diff --git a/docs/guides/getting_started/installing.md b/docs/guides/getting_started/installing.md
index 4ba8dd52..532efcc4 100644
--- a/docs/guides/getting_started/installing.md
+++ b/docs/guides/getting_started/installing.md
@@ -31,7 +31,7 @@ Kook.Net 目前仅支持 [.NET 6.0],版本稳定后将会扩展到较旧的平
3. 在 `浏览` 选项卡中,搜索 `Kook.Net`
> [!NOTE]
- > 在正式版发布前,搜索 Kook.Net 需勾选 `包括预发行版`,否则,该搜索结果无法展示在列表中。
+ > 如要安装预览版 Kook.Net,请勾选 `包括预发行版`,否则,预览版搜索结果无法展示在列表中。
![img.png](images/install/install-vs-nuget.png)
@@ -47,7 +47,7 @@ Kook.Net 目前仅支持 [.NET 6.0],版本稳定后将会扩展到较旧的平
3. 在 `Packages` 选项卡中,搜索 `Kook.Net`
> [!NOTE]
- > 在正式版发布前,搜索 Kook.Net 需勾选 `Prerelease` ,否则,该搜索结果无法展示在列表中。
+ > 如要安装预览版 Kook.Net,请勾选 `Prerelease` ,否则,预览版搜索结果无法展示在列表中。
4. 右键点击 `Kook.Net`,点击 `Install Kook.Net ...`
@@ -67,11 +67,9 @@ Kook.Net 目前仅支持 [.NET 6.0],版本稳定后将会扩展到较旧的平
3. 执行 `dotnet add package Kook.Net`
> [!NOTE]
- > 在正式版发布前,使用 dotnet CLI 添加 Kook.Net 需附加 `--prerelease` 选项,
+ > 如要安装预览版 Kook.Net,使用 dotnet CLI 添加 Kook.Net 时需附加 `--prerelease` 选项,
> 否则,dotnet CLI 将只尝试为项目添加稳定版本的 NuGet 包。
----
-
## 从源代码编译
要从源代码编译 Kook.Net,请参考:
@@ -92,6 +90,4 @@ Kook.Net 目前仅支持 [.NET 6.0],版本稳定后将会扩展到较旧的平
* [.NET 6 SDK]
----
-
[.NET 6 SDK]: https://dotnet.microsoft.com/download
\ No newline at end of file
diff --git a/docs/guides/text_commands/namedarguments.md b/docs/guides/text_commands/namedarguments.md
index 724ee216..7b3ec81a 100644
--- a/docs/guides/text_commands/namedarguments.md
+++ b/docs/guides/text_commands/namedarguments.md
@@ -46,7 +46,7 @@ public async Task Act(int requiredArg, NamableArguments namedArgs)
> 特性标注的可选参数容器类,且**必须**位于参数列表的末位。
> 被该特性标注的类会在解析参数是自动应用 [RemainderAttribute] 特性的效果。
-[RemainderAttribute]: xref:Kook.Commands.RemainderAttributes
+[RemainderAttribute]: xref:Kook.Commands.RemainderAttribute
## 复杂类型
diff --git a/docs/langwordMapping.yml b/docs/langwordMapping.yml
new file mode 100644
index 00000000..ceaa260a
--- /dev/null
+++ b/docs/langwordMapping.yml
@@ -0,0 +1,64 @@
+references:
+ - uid: langword_csharp_null
+ name.csharp: "null"
+ name.vb: "Nothing"
+ - uid: langword_vb_Nothing
+ name.csharp: "null"
+ name.vb: "Nothing"
+ - uid: langword_csharp_static
+ name.csharp: static
+ name.vb: Shared
+ - uid: langword_vb_Shared
+ name.csharp: static
+ name.vb: Shared
+ - uid: langword_csharp_virtual
+ name.csharp: virtual
+ name.vb: Overridable
+ - uid: langword_vb_Overridable
+ name.csharp: virtual
+ name.vb: Overridable
+ - uid: langword_csharp_true
+ name.csharp: "true"
+ name.vb: "True"
+ - uid: langword_vb_True
+ name.csharp: "true"
+ name.vb: "True"
+ - uid: langword_csharp_false
+ name.csharp: "false"
+ name.vb: "False"
+ - uid: langword_vb_False
+ name.csharp: "false"
+ name.vb: "False"
+ - uid: langword_csharp_abstract
+ name.csharp: abstract
+ name.vb: MustInherit
+ - uid: langword_vb_MustInherit
+ name.csharp: abstract
+ name.vb: MustInherit
+ - uid: langword_csharp_sealed
+ name.csharp: sealed
+ name.vb: NotInheritable
+ - uid: langword_vb_NotInheritable
+ name.csharp: sealed
+ name.vb: NotInheritable
+ - uid: langword_csharp_async
+ name.csharp: async
+ name.vb: Async
+ - uid: langword_vb_Async
+ name.csharp: async
+ name.vb: Async
+ - uid: langword_csharp_await
+ name.csharp: await
+ name.vb: Await
+ - uid: langword_vb_Await
+ name.csharp: await
+ name.vb: Await
+ - uid: langword_csharp_async/await
+ name.csharp: async/await
+ name.vb: Async/Await
+ - uid: langword_vb_Async/Await
+ name.csharp: async/await
+ name.vb: Async/Await
+ - uid: langword_csharp_int
+ name.csharp: int
+ name.vb: Integer
\ No newline at end of file
diff --git a/docs/templates/description-generator/plugins/DocFX.Plugin.DescriptionGenerator.dll b/docs/templates/description-generator/plugins/DocFX.Plugin.DescriptionGenerator.dll
new file mode 100644
index 00000000..6e883979
Binary files /dev/null and b/docs/templates/description-generator/plugins/DocFX.Plugin.DescriptionGenerator.dll differ
diff --git a/docs/templates/description-generator/plugins/LICENSE b/docs/templates/description-generator/plugins/LICENSE
new file mode 100644
index 00000000..d74703f3
--- /dev/null
+++ b/docs/templates/description-generator/plugins/LICENSE
@@ -0,0 +1,29 @@
+MIT License
+
+Copyright (c) 2018 Still Hsu
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+==============================================================================
+
+Humanizer (https://github.com/Humanizr/Humanizer)
+The MIT License (MIT)
+Copyright (c) .NET Foundation and Contributors
+
+==============================================================================
\ No newline at end of file
diff --git a/docs/templates/last-modified/plugins/LICENSE b/docs/templates/last-modified/plugins/LICENSE
new file mode 100644
index 00000000..d74703f3
--- /dev/null
+++ b/docs/templates/last-modified/plugins/LICENSE
@@ -0,0 +1,29 @@
+MIT License
+
+Copyright (c) 2018 Still Hsu
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+==============================================================================
+
+Humanizer (https://github.com/Humanizr/Humanizer)
+The MIT License (MIT)
+Copyright (c) .NET Foundation and Contributors
+
+==============================================================================
\ No newline at end of file
diff --git a/docs/templates/last-modified/plugins/LastModifiedPostProcessor.dll b/docs/templates/last-modified/plugins/LastModifiedPostProcessor.dll
new file mode 100644
index 00000000..be36969c
Binary files /dev/null and b/docs/templates/last-modified/plugins/LastModifiedPostProcessor.dll differ
diff --git a/docs/templates/last-modified/plugins/LibGit2Sharp.dll b/docs/templates/last-modified/plugins/LibGit2Sharp.dll
new file mode 100644
index 00000000..5b356810
Binary files /dev/null and b/docs/templates/last-modified/plugins/LibGit2Sharp.dll differ
diff --git a/docs/templates/last-modified/plugins/LibGit2Sharp.dll.config b/docs/templates/last-modified/plugins/LibGit2Sharp.dll.config
new file mode 100644
index 00000000..c93e4cc2
--- /dev/null
+++ b/docs/templates/last-modified/plugins/LibGit2Sharp.dll.config
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/docs/templates/last-modified/plugins/lib/alpine-x64/libgit2-a904fc6.so b/docs/templates/last-modified/plugins/lib/alpine-x64/libgit2-a904fc6.so
new file mode 100644
index 00000000..f1f45e7d
Binary files /dev/null and b/docs/templates/last-modified/plugins/lib/alpine-x64/libgit2-a904fc6.so differ
diff --git a/docs/templates/last-modified/plugins/lib/alpine-x64/libgit2-ef5a385.so b/docs/templates/last-modified/plugins/lib/alpine-x64/libgit2-ef5a385.so
new file mode 100644
index 00000000..793f4483
Binary files /dev/null and b/docs/templates/last-modified/plugins/lib/alpine-x64/libgit2-ef5a385.so differ
diff --git a/docs/templates/last-modified/plugins/lib/alpine.3.9-x64/libgit2-ef5a385.so b/docs/templates/last-modified/plugins/lib/alpine.3.9-x64/libgit2-ef5a385.so
new file mode 100644
index 00000000..49186df2
Binary files /dev/null and b/docs/templates/last-modified/plugins/lib/alpine.3.9-x64/libgit2-ef5a385.so differ
diff --git a/docs/templates/last-modified/plugins/lib/debian-arm64/libgit2-ef5a385.so b/docs/templates/last-modified/plugins/lib/debian-arm64/libgit2-ef5a385.so
new file mode 100644
index 00000000..11ef799a
Binary files /dev/null and b/docs/templates/last-modified/plugins/lib/debian-arm64/libgit2-ef5a385.so differ
diff --git a/docs/templates/last-modified/plugins/lib/debian.9-x64/libgit2-a904fc6.so b/docs/templates/last-modified/plugins/lib/debian.9-x64/libgit2-a904fc6.so
new file mode 100644
index 00000000..dd0f7ffc
Binary files /dev/null and b/docs/templates/last-modified/plugins/lib/debian.9-x64/libgit2-a904fc6.so differ
diff --git a/docs/templates/last-modified/plugins/lib/debian.9-x64/libgit2-ef5a385.so b/docs/templates/last-modified/plugins/lib/debian.9-x64/libgit2-ef5a385.so
new file mode 100644
index 00000000..5cd5e46b
Binary files /dev/null and b/docs/templates/last-modified/plugins/lib/debian.9-x64/libgit2-ef5a385.so differ
diff --git a/docs/templates/last-modified/plugins/lib/fedora-x64/libgit2-a904fc6.so b/docs/templates/last-modified/plugins/lib/fedora-x64/libgit2-a904fc6.so
new file mode 100644
index 00000000..7d1aafbe
Binary files /dev/null and b/docs/templates/last-modified/plugins/lib/fedora-x64/libgit2-a904fc6.so differ
diff --git a/docs/templates/last-modified/plugins/lib/fedora-x64/libgit2-ef5a385.so b/docs/templates/last-modified/plugins/lib/fedora-x64/libgit2-ef5a385.so
new file mode 100644
index 00000000..be1be932
Binary files /dev/null and b/docs/templates/last-modified/plugins/lib/fedora-x64/libgit2-ef5a385.so differ
diff --git a/docs/templates/last-modified/plugins/lib/linux-arm/libgit2-6777db8.so b/docs/templates/last-modified/plugins/lib/linux-arm/libgit2-6777db8.so
new file mode 100644
index 00000000..4324c2ad
Binary files /dev/null and b/docs/templates/last-modified/plugins/lib/linux-arm/libgit2-6777db8.so differ
diff --git a/docs/templates/last-modified/plugins/lib/linux-arm64/libgit2-6777db8.so b/docs/templates/last-modified/plugins/lib/linux-arm64/libgit2-6777db8.so
new file mode 100644
index 00000000..a72d7419
Binary files /dev/null and b/docs/templates/last-modified/plugins/lib/linux-arm64/libgit2-6777db8.so differ
diff --git a/docs/templates/last-modified/plugins/lib/linux-musl-x64/libgit2-6777db8.so b/docs/templates/last-modified/plugins/lib/linux-musl-x64/libgit2-6777db8.so
new file mode 100644
index 00000000..a1f59dfb
Binary files /dev/null and b/docs/templates/last-modified/plugins/lib/linux-musl-x64/libgit2-6777db8.so differ
diff --git a/docs/templates/last-modified/plugins/lib/linux-x64/libgit2-6777db8.so b/docs/templates/last-modified/plugins/lib/linux-x64/libgit2-6777db8.so
new file mode 100644
index 00000000..b47f83e2
Binary files /dev/null and b/docs/templates/last-modified/plugins/lib/linux-x64/libgit2-6777db8.so differ
diff --git a/docs/templates/last-modified/plugins/lib/linux-x64/libgit2-a904fc6.so b/docs/templates/last-modified/plugins/lib/linux-x64/libgit2-a904fc6.so
new file mode 100644
index 00000000..6eb5c8b0
Binary files /dev/null and b/docs/templates/last-modified/plugins/lib/linux-x64/libgit2-a904fc6.so differ
diff --git a/docs/templates/last-modified/plugins/lib/linux-x64/libgit2-ef5a385.so b/docs/templates/last-modified/plugins/lib/linux-x64/libgit2-ef5a385.so
new file mode 100644
index 00000000..1ec4b01f
Binary files /dev/null and b/docs/templates/last-modified/plugins/lib/linux-x64/libgit2-ef5a385.so differ
diff --git a/docs/templates/last-modified/plugins/lib/osx/libgit2-6777db8.dylib b/docs/templates/last-modified/plugins/lib/osx/libgit2-6777db8.dylib
new file mode 100644
index 00000000..cb1e7eb8
Binary files /dev/null and b/docs/templates/last-modified/plugins/lib/osx/libgit2-6777db8.dylib differ
diff --git a/docs/templates/last-modified/plugins/lib/osx/libgit2-a904fc6.dylib b/docs/templates/last-modified/plugins/lib/osx/libgit2-a904fc6.dylib
new file mode 100644
index 00000000..041256cc
Binary files /dev/null and b/docs/templates/last-modified/plugins/lib/osx/libgit2-a904fc6.dylib differ
diff --git a/docs/templates/last-modified/plugins/lib/osx/libgit2-ef5a385.dylib b/docs/templates/last-modified/plugins/lib/osx/libgit2-ef5a385.dylib
new file mode 100644
index 00000000..81f71d6e
Binary files /dev/null and b/docs/templates/last-modified/plugins/lib/osx/libgit2-ef5a385.dylib differ
diff --git a/docs/templates/last-modified/plugins/lib/rhel-x64/libgit2-a904fc6.so b/docs/templates/last-modified/plugins/lib/rhel-x64/libgit2-a904fc6.so
new file mode 100644
index 00000000..6166cb4c
Binary files /dev/null and b/docs/templates/last-modified/plugins/lib/rhel-x64/libgit2-a904fc6.so differ
diff --git a/docs/templates/last-modified/plugins/lib/rhel-x64/libgit2-ef5a385.so b/docs/templates/last-modified/plugins/lib/rhel-x64/libgit2-ef5a385.so
new file mode 100644
index 00000000..3d194a97
Binary files /dev/null and b/docs/templates/last-modified/plugins/lib/rhel-x64/libgit2-ef5a385.so differ
diff --git a/docs/templates/last-modified/plugins/lib/ubuntu.16.04-arm64/libgit2-ef5a385.so b/docs/templates/last-modified/plugins/lib/ubuntu.16.04-arm64/libgit2-ef5a385.so
new file mode 100644
index 00000000..a3282b0d
Binary files /dev/null and b/docs/templates/last-modified/plugins/lib/ubuntu.16.04-arm64/libgit2-ef5a385.so differ
diff --git a/docs/templates/last-modified/plugins/lib/ubuntu.18.04-x64/libgit2-a904fc6.so b/docs/templates/last-modified/plugins/lib/ubuntu.18.04-x64/libgit2-a904fc6.so
new file mode 100644
index 00000000..b3528eee
Binary files /dev/null and b/docs/templates/last-modified/plugins/lib/ubuntu.18.04-x64/libgit2-a904fc6.so differ
diff --git a/docs/templates/last-modified/plugins/lib/ubuntu.18.04-x64/libgit2-ef5a385.so b/docs/templates/last-modified/plugins/lib/ubuntu.18.04-x64/libgit2-ef5a385.so
new file mode 100644
index 00000000..0360ce3e
Binary files /dev/null and b/docs/templates/last-modified/plugins/lib/ubuntu.18.04-x64/libgit2-ef5a385.so differ
diff --git a/docs/toc.yml b/docs/toc.yml
index 9f8eaf95..7d9ea21a 100644
--- a/docs/toc.yml
+++ b/docs/toc.yml
@@ -4,3 +4,6 @@
- name: API 文档
href: api/
topicUid: API.Docs
+- name: 变更日志
+ href: changelog/
+ topicUid: Changelog
diff --git a/src/Kook.Net.Core/Net/BucketId.cs b/src/Kook.Net.Core/Net/BucketId.cs
index 84af4e3f..9d0bb7e0 100644
--- a/src/Kook.Net.Core/Net/BucketId.cs
+++ b/src/Kook.Net.Core/Net/BucketId.cs
@@ -27,7 +27,7 @@ public class BucketId : IEquatable
///
/// Gets if this bucket is a hash type.
///
- public bool IsHashBucket { get => BucketHash != null; }
+ public bool IsHashBucket => BucketHash != null;
private BucketId(HttpMethod httpMethod, string endpoint, IEnumerable> majorParameters, string bucketHash)
{
diff --git a/src/Kook.Net.Core/Net/WebSockets/IWebSocketClient.cs b/src/Kook.Net.Core/Net/WebSockets/IWebSocketClient.cs
index b8490c49..1dbce368 100644
--- a/src/Kook.Net.Core/Net/WebSockets/IWebSocketClient.cs
+++ b/src/Kook.Net.Core/Net/WebSockets/IWebSocketClient.cs
@@ -1,5 +1,8 @@
namespace Kook.Net.WebSockets;
+///
+/// Represents a generic WebSocket client.
+///
public interface IWebSocketClient : IDisposable
{
event Func BinaryMessage;