Migrate docs to Vuepress
24
.github/workflows/ghpages.yml
vendored
@ -1,24 +0,0 @@
|
||||
name: Build and deploy site to GitHub Pages
|
||||
on:
|
||||
push:
|
||||
paths:
|
||||
- "docs/**"
|
||||
branches:
|
||||
- main
|
||||
jobs:
|
||||
github-pages:
|
||||
runs-on: ubuntu-16.04
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
ruby-version: 2.6
|
||||
- uses: limjh16/jekyll-action-ts@v2
|
||||
with:
|
||||
enable_cache: true
|
||||
jekyll_src: docs
|
||||
gem_src: docs
|
||||
- uses: peaceiris/actions-gh-pages@v3
|
||||
with:
|
||||
github_token: ${{ secrets.JEKYLL_PAT }}
|
||||
publish_dir: ./_site
|
15
README.md
@ -54,19 +54,8 @@ $ docker-compose up -d
|
||||
|
||||
(tip: use `scripts/run-test-db.sh` to run a temporary PostgreSQL database on your local system. Requires Docker.)
|
||||
|
||||
# Building the docs
|
||||
The website and documentation are automatically built by GitHub Pages when pushed to the `master` branch. They use [Jekyll 3](https://jekyllrb.com), which requires [Ruby](https://www.ruby-lang.org) and [Bundler](https://bundler.io/).
|
||||
|
||||
To build the docs locally, run:
|
||||
```
|
||||
$ cd docs/
|
||||
$ bundle install --path vendor/bundle
|
||||
$ bundle exec jekyll build
|
||||
```
|
||||
|
||||
To run an auto-reloading server, substitute the last command with:
|
||||
|
||||
$ bundle exec jekyll serve
|
||||
# Documentation
|
||||
See [the docs/ directory](./docs/README.md)
|
||||
|
||||
# License
|
||||
This project is under the Apache License, Version 2.0. It is available at the following link: https://www.apache.org/licenses/LICENSE-2.0
|
@ -1,2 +0,0 @@
|
||||
---
|
||||
BUNDLE_PATH: "vendor/bundle"
|
17
docs/.gitignore
vendored
@ -1,5 +1,12 @@
|
||||
_site
|
||||
.sass-cache
|
||||
.jekyll-metadata
|
||||
|
||||
vendor
|
||||
pids
|
||||
logs
|
||||
node_modules
|
||||
npm-debug.log
|
||||
coverage/
|
||||
run
|
||||
dist
|
||||
.DS_Store
|
||||
.nyc_output
|
||||
.basement
|
||||
config.local.js
|
||||
basement_dist
|
||||
|
@ -1 +0,0 @@
|
||||
pluralkit.me
|
@ -1,4 +0,0 @@
|
||||
source "https://rubygems.org"
|
||||
gem 'github-pages', group: :jekyll_plugins
|
||||
gem 'wdm', '>= 0.1.0' if Gem.win_platform?
|
||||
gem "just-the-docs"
|
@ -1,255 +0,0 @@
|
||||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
activesupport (6.0.3.2)
|
||||
concurrent-ruby (~> 1.0, >= 1.0.2)
|
||||
i18n (>= 0.7, < 2)
|
||||
minitest (~> 5.1)
|
||||
tzinfo (~> 1.1)
|
||||
zeitwerk (~> 2.2, >= 2.2.2)
|
||||
addressable (2.7.0)
|
||||
public_suffix (>= 2.0.2, < 5.0)
|
||||
coffee-script (2.4.1)
|
||||
coffee-script-source
|
||||
execjs
|
||||
coffee-script-source (1.11.1)
|
||||
colorator (1.1.0)
|
||||
commonmarker (0.17.13)
|
||||
ruby-enum (~> 0.5)
|
||||
concurrent-ruby (1.1.6)
|
||||
dnsruby (1.61.3)
|
||||
addressable (~> 2.5)
|
||||
em-websocket (0.5.1)
|
||||
eventmachine (>= 0.12.9)
|
||||
http_parser.rb (~> 0.6.0)
|
||||
ethon (0.12.0)
|
||||
ffi (>= 1.3.0)
|
||||
eventmachine (1.2.7)
|
||||
execjs (2.7.0)
|
||||
faraday (1.0.1)
|
||||
multipart-post (>= 1.2, < 3)
|
||||
ffi (1.13.1)
|
||||
forwardable-extended (2.6.0)
|
||||
gemoji (3.0.1)
|
||||
github-pages (206)
|
||||
github-pages-health-check (= 1.16.1)
|
||||
jekyll (= 3.8.7)
|
||||
jekyll-avatar (= 0.7.0)
|
||||
jekyll-coffeescript (= 1.1.1)
|
||||
jekyll-commonmark-ghpages (= 0.1.6)
|
||||
jekyll-default-layout (= 0.1.4)
|
||||
jekyll-feed (= 0.13.0)
|
||||
jekyll-gist (= 1.5.0)
|
||||
jekyll-github-metadata (= 2.13.0)
|
||||
jekyll-mentions (= 1.5.1)
|
||||
jekyll-optional-front-matter (= 0.3.2)
|
||||
jekyll-paginate (= 1.1.0)
|
||||
jekyll-readme-index (= 0.3.0)
|
||||
jekyll-redirect-from (= 0.15.0)
|
||||
jekyll-relative-links (= 0.6.1)
|
||||
jekyll-remote-theme (= 0.4.1)
|
||||
jekyll-sass-converter (= 1.5.2)
|
||||
jekyll-seo-tag (= 2.6.1)
|
||||
jekyll-sitemap (= 1.4.0)
|
||||
jekyll-swiss (= 1.0.0)
|
||||
jekyll-theme-architect (= 0.1.1)
|
||||
jekyll-theme-cayman (= 0.1.1)
|
||||
jekyll-theme-dinky (= 0.1.1)
|
||||
jekyll-theme-hacker (= 0.1.1)
|
||||
jekyll-theme-leap-day (= 0.1.1)
|
||||
jekyll-theme-merlot (= 0.1.1)
|
||||
jekyll-theme-midnight (= 0.1.1)
|
||||
jekyll-theme-minimal (= 0.1.1)
|
||||
jekyll-theme-modernist (= 0.1.1)
|
||||
jekyll-theme-primer (= 0.5.4)
|
||||
jekyll-theme-slate (= 0.1.1)
|
||||
jekyll-theme-tactile (= 0.1.1)
|
||||
jekyll-theme-time-machine (= 0.1.1)
|
||||
jekyll-titles-from-headings (= 0.5.3)
|
||||
jemoji (= 0.11.1)
|
||||
kramdown (= 1.17.0)
|
||||
liquid (= 4.0.3)
|
||||
mercenary (~> 0.3)
|
||||
minima (= 2.5.1)
|
||||
nokogiri (>= 1.10.4, < 2.0)
|
||||
rouge (= 3.19.0)
|
||||
terminal-table (~> 1.4)
|
||||
github-pages-health-check (1.16.1)
|
||||
addressable (~> 2.3)
|
||||
dnsruby (~> 1.60)
|
||||
octokit (~> 4.0)
|
||||
public_suffix (~> 3.0)
|
||||
typhoeus (~> 1.3)
|
||||
html-pipeline (2.13.0)
|
||||
activesupport (>= 2)
|
||||
nokogiri (>= 1.4)
|
||||
http_parser.rb (0.6.0)
|
||||
i18n (0.9.5)
|
||||
concurrent-ruby (~> 1.0)
|
||||
jekyll (3.8.7)
|
||||
addressable (~> 2.4)
|
||||
colorator (~> 1.0)
|
||||
em-websocket (~> 0.5)
|
||||
i18n (~> 0.7)
|
||||
jekyll-sass-converter (~> 1.0)
|
||||
jekyll-watch (~> 2.0)
|
||||
kramdown (~> 1.14)
|
||||
liquid (~> 4.0)
|
||||
mercenary (~> 0.3.3)
|
||||
pathutil (~> 0.9)
|
||||
rouge (>= 1.7, < 4)
|
||||
safe_yaml (~> 1.0)
|
||||
jekyll-avatar (0.7.0)
|
||||
jekyll (>= 3.0, < 5.0)
|
||||
jekyll-coffeescript (1.1.1)
|
||||
coffee-script (~> 2.2)
|
||||
coffee-script-source (~> 1.11.1)
|
||||
jekyll-commonmark (1.3.1)
|
||||
commonmarker (~> 0.14)
|
||||
jekyll (>= 3.7, < 5.0)
|
||||
jekyll-commonmark-ghpages (0.1.6)
|
||||
commonmarker (~> 0.17.6)
|
||||
jekyll-commonmark (~> 1.2)
|
||||
rouge (>= 2.0, < 4.0)
|
||||
jekyll-default-layout (0.1.4)
|
||||
jekyll (~> 3.0)
|
||||
jekyll-feed (0.13.0)
|
||||
jekyll (>= 3.7, < 5.0)
|
||||
jekyll-gist (1.5.0)
|
||||
octokit (~> 4.2)
|
||||
jekyll-github-metadata (2.13.0)
|
||||
jekyll (>= 3.4, < 5.0)
|
||||
octokit (~> 4.0, != 4.4.0)
|
||||
jekyll-mentions (1.5.1)
|
||||
html-pipeline (~> 2.3)
|
||||
jekyll (>= 3.7, < 5.0)
|
||||
jekyll-optional-front-matter (0.3.2)
|
||||
jekyll (>= 3.0, < 5.0)
|
||||
jekyll-paginate (1.1.0)
|
||||
jekyll-readme-index (0.3.0)
|
||||
jekyll (>= 3.0, < 5.0)
|
||||
jekyll-redirect-from (0.15.0)
|
||||
jekyll (>= 3.3, < 5.0)
|
||||
jekyll-relative-links (0.6.1)
|
||||
jekyll (>= 3.3, < 5.0)
|
||||
jekyll-remote-theme (0.4.1)
|
||||
addressable (~> 2.0)
|
||||
jekyll (>= 3.5, < 5.0)
|
||||
rubyzip (>= 1.3.0)
|
||||
jekyll-sass-converter (1.5.2)
|
||||
sass (~> 3.4)
|
||||
jekyll-seo-tag (2.6.1)
|
||||
jekyll (>= 3.3, < 5.0)
|
||||
jekyll-sitemap (1.4.0)
|
||||
jekyll (>= 3.7, < 5.0)
|
||||
jekyll-swiss (1.0.0)
|
||||
jekyll-theme-architect (0.1.1)
|
||||
jekyll (~> 3.5)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-theme-cayman (0.1.1)
|
||||
jekyll (~> 3.5)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-theme-dinky (0.1.1)
|
||||
jekyll (~> 3.5)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-theme-hacker (0.1.1)
|
||||
jekyll (~> 3.5)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-theme-leap-day (0.1.1)
|
||||
jekyll (~> 3.5)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-theme-merlot (0.1.1)
|
||||
jekyll (~> 3.5)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-theme-midnight (0.1.1)
|
||||
jekyll (~> 3.5)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-theme-minimal (0.1.1)
|
||||
jekyll (~> 3.5)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-theme-modernist (0.1.1)
|
||||
jekyll (~> 3.5)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-theme-primer (0.5.4)
|
||||
jekyll (> 3.5, < 5.0)
|
||||
jekyll-github-metadata (~> 2.9)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-theme-slate (0.1.1)
|
||||
jekyll (~> 3.5)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-theme-tactile (0.1.1)
|
||||
jekyll (~> 3.5)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-theme-time-machine (0.1.1)
|
||||
jekyll (~> 3.5)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-titles-from-headings (0.5.3)
|
||||
jekyll (>= 3.3, < 5.0)
|
||||
jekyll-watch (2.2.1)
|
||||
listen (~> 3.0)
|
||||
jemoji (0.11.1)
|
||||
gemoji (~> 3.0)
|
||||
html-pipeline (~> 2.2)
|
||||
jekyll (>= 3.0, < 5.0)
|
||||
just-the-docs (0.2.8)
|
||||
bundler (~> 2.1.4)
|
||||
jekyll (>= 3.8.5, < 4.1.0)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
rake (>= 12.3.1, < 13.1.0)
|
||||
kramdown (1.17.0)
|
||||
liquid (4.0.3)
|
||||
listen (3.2.1)
|
||||
rb-fsevent (~> 0.10, >= 0.10.3)
|
||||
rb-inotify (~> 0.9, >= 0.9.10)
|
||||
mercenary (0.3.6)
|
||||
mini_portile2 (2.4.0)
|
||||
minima (2.5.1)
|
||||
jekyll (>= 3.5, < 5.0)
|
||||
jekyll-feed (~> 0.9)
|
||||
jekyll-seo-tag (~> 2.1)
|
||||
minitest (5.14.1)
|
||||
multipart-post (2.1.1)
|
||||
nokogiri (1.10.9)
|
||||
mini_portile2 (~> 2.4.0)
|
||||
octokit (4.18.0)
|
||||
faraday (>= 0.9)
|
||||
sawyer (~> 0.8.0, >= 0.5.3)
|
||||
pathutil (0.16.2)
|
||||
forwardable-extended (~> 2.6)
|
||||
public_suffix (3.1.1)
|
||||
rake (13.0.1)
|
||||
rb-fsevent (0.10.4)
|
||||
rb-inotify (0.10.1)
|
||||
ffi (~> 1.0)
|
||||
rouge (3.19.0)
|
||||
ruby-enum (0.8.0)
|
||||
i18n
|
||||
rubyzip (2.3.0)
|
||||
safe_yaml (1.0.5)
|
||||
sass (3.7.4)
|
||||
sass-listen (~> 4.0.0)
|
||||
sass-listen (4.0.0)
|
||||
rb-fsevent (~> 0.9, >= 0.9.4)
|
||||
rb-inotify (~> 0.9, >= 0.9.7)
|
||||
sawyer (0.8.2)
|
||||
addressable (>= 2.3.5)
|
||||
faraday (> 0.8, < 2.0)
|
||||
terminal-table (1.8.0)
|
||||
unicode-display_width (~> 1.1, >= 1.1.1)
|
||||
thread_safe (0.3.6)
|
||||
typhoeus (1.4.0)
|
||||
ethon (>= 0.9.0)
|
||||
tzinfo (1.2.7)
|
||||
thread_safe (~> 0.1)
|
||||
unicode-display_width (1.7.0)
|
||||
zeitwerk (2.3.0)
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
|
||||
DEPENDENCIES
|
||||
github-pages
|
||||
just-the-docs
|
||||
|
||||
BUNDLED WITH
|
||||
2.1.4
|
19
docs/README.md
Normal file
@ -0,0 +1,19 @@
|
||||
# PluralKit docs
|
||||
The documentation is built using [Vuepress](https://vuepress.vuejs.org/). All website content is located in the `content/` subdirectory.
|
||||
|
||||
Most site parameters, including the sidebar layout, are defined in `content/.vuepress/config.js`. Some additional CSS is defined in `content/.vuepress/styles`.
|
||||
|
||||
## Building
|
||||
First, install [Node.js](https://nodejs.org/en/download/) and [Yarn](https://classic.yarnpkg.com/en/). Then, run the `dev` command:
|
||||
|
||||
```sh
|
||||
$ yarn
|
||||
$ yarn dev
|
||||
```
|
||||
|
||||
This will start a development server on http://localhost:8080/.
|
||||
|
||||
For a full HTML build, run `yarn build`. Files will be output in `content/.vuepress/dist` by default.
|
||||
|
||||
## Deployment
|
||||
The docs are deployed using [Netlify](https://www.netlify.com/) with CI.
|
@ -1,9 +0,0 @@
|
||||
title: PluralKit
|
||||
baseurl: ""
|
||||
url: "https://pluralkit.me"
|
||||
theme: just-the-docs
|
||||
|
||||
search_enabled: true
|
||||
aux_links:
|
||||
"Add PluralKit to your server":
|
||||
- "https://discord.com/oauth2/authorize?client_id=466378653216014359&scope=bot&permissions=536995904"
|
@ -1 +0,0 @@
|
||||
$link-color: $blue-100;
|
65
docs/content/.vuepress/config.js
Normal file
@ -0,0 +1,65 @@
|
||||
module.exports = {
|
||||
title: 'PluralKit',
|
||||
|
||||
base: "/",
|
||||
head: [
|
||||
["link", { rel: "icon", type: "image/png", href: "/favicon.png" }],
|
||||
['meta', { name: 'theme-color', content: '#da9317' }],
|
||||
['meta', { name: 'apple-mobile-web-app-capable', content: 'yes' }],
|
||||
['meta', { name: 'apple-mobile-web-app-status-bar-style', content: 'black' }]
|
||||
],
|
||||
evergreen: true,
|
||||
|
||||
markdown: {
|
||||
extendMarkdown: md => {
|
||||
md.use(require("markdown-it-custom-header-link"));
|
||||
md.use(require("markdown-it-imsize"));
|
||||
}
|
||||
},
|
||||
|
||||
themeConfig: {
|
||||
repo: 'xSke/PluralKit',
|
||||
docsDir: 'docs',
|
||||
docsBranch: 'main',
|
||||
editLinks: true,
|
||||
editLinkText: 'Help us improve this page!',
|
||||
lastUpdated: "Last updated",
|
||||
nextLinks: false,
|
||||
prevLinks: false,
|
||||
nav: [
|
||||
{ text: "Support server", link: "https://discord.gg/PczBt78" },
|
||||
{ text: "Invite bot", link: "https://discord.com/oauth2/authorize?client_id=466378653216014359&scope=bot&permissions=536995904" }
|
||||
],
|
||||
sidebar: [
|
||||
"/",
|
||||
{
|
||||
title: "Documentation",
|
||||
collapsable: false,
|
||||
sidebarDepth: 2,
|
||||
children: [
|
||||
"/getting-started",
|
||||
"/user-guide",
|
||||
"/command-list",
|
||||
"/api-documentation",
|
||||
"/privacy-policy",
|
||||
"/faq",
|
||||
"/tips-and-tricks"
|
||||
]
|
||||
},
|
||||
["https://discord.gg/PczBt78", "Join the support server"],
|
||||
["https://discord.com/oauth2/authorize?client_id=466378653216014359&scope=bot&permissions=536995904", "Add to your server"],
|
||||
]
|
||||
},
|
||||
|
||||
plugins: [
|
||||
'@vuepress/plugin-back-to-top',
|
||||
'@vuepress/plugin-medium-zoom',
|
||||
[
|
||||
'@vuepress/google-analytics',
|
||||
{
|
||||
"ga": "UA-173942267-1"
|
||||
}
|
||||
],
|
||||
["vuepress-plugin-clean-urls", { normalSuffix: "/" }],
|
||||
],
|
||||
}
|
BIN
docs/content/.vuepress/public/favicon.png
Normal file
After Width: | Height: | Size: 20 KiB |
7
docs/content/.vuepress/styles/index.styl
Normal file
@ -0,0 +1,7 @@
|
||||
// For custom styles
|
||||
// See: https://vuepress.vuejs.org/config/#index-styl
|
||||
|
||||
// Center images on page (only relevant when resized with markdown-it-imsize)
|
||||
img
|
||||
display block
|
||||
margin auto
|
7
docs/content/.vuepress/styles/palette.styl
Normal file
@ -0,0 +1,7 @@
|
||||
// Global variables go here, no styles! Some override default theme parameters.
|
||||
// See: https://vuepress.vuejs.org/config/#palette-styl
|
||||
|
||||
$accentColor = #da9317
|
||||
|
||||
// Make page slightly wider (default is 740px)
|
||||
$contentWidth = 900px
|
@ -1,15 +1,14 @@
|
||||
---
|
||||
layout: default
|
||||
title: API documentation
|
||||
permalink: /api
|
||||
description: PluralKit's API documentation.
|
||||
nav_order: 4
|
||||
permalink: /api
|
||||
---
|
||||
|
||||
**2020-05-07**: The PluralKit API is now documented on Swagger: https://app.swaggerhub.com/apis-docs/xSke/PluralKit/1.1
|
||||
Accompanying it is an [OpenAPI v3.0 definition](https://github.com/xSke/PluralKit/blob/master/PluralKit.API/openapi.yaml). It's mostly complete, but is still subject to change - so don't go generating API clients and mock servers with it quite yet. It may still be useful, though :)
|
||||
|
||||
# API documentation
|
||||
|
||||
PluralKit has a basic HTTP REST API for querying and modifying your system.
|
||||
The root endpoint of the API is `https://api.pluralkit.me/v1/`.
|
||||
|
||||
@ -34,70 +33,70 @@ The following three models (usually represented in JSON format) represent the va
|
||||
|
||||
### System model
|
||||
|
||||
|Key|Type|Patchable?|Notes|
|
||||
|---|---|---|---|
|
||||
|id|string|No||
|
||||
|name|string?|Yes|100-character limit.|
|
||||
|description|string?|Yes|1000-character limit.|
|
||||
|tag|string?|Yes||
|
||||
|avatar_url|url?|Yes|Not validated server-side.|
|
||||
|tz|string?|Yes|Tzdb identifier. Patching with `null` will store `"UTC"`.|
|
||||
|created|datetime|No||
|
||||
|description_privacy|string?|Yes|Patching with `private` will set it to private; `public` or `null` will set it to public.|
|
||||
|member_list_privacy|string?|Yes|Same as above.|
|
||||
|front_privacy|string?|Yes|Same as above.|
|
||||
|front_history_privacy|string?|Yes|Same as above.|
|
||||
| Key | Type | Patchable? | Notes |
|
||||
| --------------------- | -------- | ---------- | ----------------------------------------------------------------------------------------- |
|
||||
| id | string | No | |
|
||||
| name | string? | Yes | 100-character limit. |
|
||||
| description | string? | Yes | 1000-character limit. |
|
||||
| tag | string? | Yes | |
|
||||
| avatar_url | url? | Yes | Not validated server-side. |
|
||||
| tz | string? | Yes | Tzdb identifier. Patching with `null` will store `"UTC"`. |
|
||||
| created | datetime | No | |
|
||||
| description_privacy | string? | Yes | Patching with `private` will set it to private; `public` or `null` will set it to public. |
|
||||
| member_list_privacy | string? | Yes | Same as above. |
|
||||
| front_privacy | string? | Yes | Same as above. |
|
||||
| front_history_privacy | string? | Yes | Same as above. |
|
||||
|
||||
### Member model
|
||||
|
||||
|Key|Type|Patchable?|Notes|
|
||||
|---|---|---|---|
|
||||
|id|string|No||
|
||||
|name|string?|Yes|50-character limit.|
|
||||
|display_name|string?|Yes|50-character limit.|
|
||||
|description|string?|Yes|1000-character limit.|
|
||||
|color|color?|Yes|6-char hex (eg. `ff7000`), sans `#`.|
|
||||
|avatar_url|url?|Yes|Not validated server-side.|
|
||||
|birthday|date?|Yes|ISO-8601 (`YYYY-MM-DD`) format, year of `0001` or `0004` means hidden year. Birthdays set after 2020-02-10 use `0004` as a sentinel year, but both options are recognized as valid.|
|
||||
|prefix|string?|Yes|**Deprecated.** Use `proxy_tags` instead.|
|
||||
|suffix|string?|Yes|**Deprecated.** Use `proxy_tags` instead.|
|
||||
|proxy_tags|ProxyTag[]|Yes (entire array)|An array of ProxyTag (see below) objects, each representing a single prefix/suffix pair.|
|
||||
|keep_proxy|bool|Yes|Whether to display a member's proxy tags in the proxied message.|
|
||||
|created|datetime|No|
|
||||
|privacy|string?|Yes|**Deprecated.** Use `<subject>_privacy` and `visibility` fields.|
|
||||
|visibility|string?|Yes|Patching with `private` will set it to private; `public` or `null` will set it to public.|
|
||||
|name_privacy|string?|Yes|Patching with `private` will set it to private; `public` or `null` will set it to public.|
|
||||
|description_privacy|string?|Yes|Patching with `private` will set it to private; `public` or `null` will set it to public.|
|
||||
|avatar_privacy|string?|Yes|Patching with `private` will set it to private; `public` or `null` will set it to public.|
|
||||
|birthday_privacy|string?|Yes|Patching with `private` will set it to private; `public` or `null` will set it to public.|
|
||||
|pronoun_privacy|string?|Yes|Patching with `private` will set it to private; `public` or `null` will set it to public.|
|
||||
|metadata_privacy|string?|Yes|Patching with `private` will set it to private; `public` or `null` will set it to public.|
|
||||
| Key | Type | Patchable? | Notes |
|
||||
| ------------------- | ---------- | ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| id | string | No | |
|
||||
| name | string? | Yes | 50-character limit. |
|
||||
| display_name | string? | Yes | 50-character limit. |
|
||||
| description | string? | Yes | 1000-character limit. |
|
||||
| color | color? | Yes | 6-char hex (eg. `ff7000`), sans `#`. |
|
||||
| avatar_url | url? | Yes | Not validated server-side. |
|
||||
| birthday | date? | Yes | ISO-8601 (`YYYY-MM-DD`) format, year of `0001` or `0004` means hidden year. Birthdays set after 2020-02-10 use `0004` as a sentinel year, but both options are recognized as valid. |
|
||||
| prefix | string? | Yes | **Deprecated.** Use `proxy_tags` instead. |
|
||||
| suffix | string? | Yes | **Deprecated.** Use `proxy_tags` instead. |
|
||||
| proxy_tags | ProxyTag[] | Yes (entire array) | An array of ProxyTag (see below) objects, each representing a single prefix/suffix pair. |
|
||||
| keep_proxy | bool | Yes | Whether to display a member's proxy tags in the proxied message. |
|
||||
| created | datetime | No |
|
||||
| privacy | string? | Yes | **Deprecated.** Use `<subject>_privacy` and `visibility` fields. |
|
||||
| visibility | string? | Yes | Patching with `private` will set it to private; `public` or `null` will set it to public. |
|
||||
| name_privacy | string? | Yes | Patching with `private` will set it to private; `public` or `null` will set it to public. |
|
||||
| description_privacy | string? | Yes | Patching with `private` will set it to private; `public` or `null` will set it to public. |
|
||||
| avatar_privacy | string? | Yes | Patching with `private` will set it to private; `public` or `null` will set it to public. |
|
||||
| birthday_privacy | string? | Yes | Patching with `private` will set it to private; `public` or `null` will set it to public. |
|
||||
| pronoun_privacy | string? | Yes | Patching with `private` will set it to private; `public` or `null` will set it to public. |
|
||||
| metadata_privacy | string? | Yes | Patching with `private` will set it to private; `public` or `null` will set it to public. |
|
||||
|
||||
#### ProxyTag object
|
||||
|
||||
|Key|Type|
|
||||
|---|---|
|
||||
|prefix|string?|
|
||||
|suffix|string?|
|
||||
| Key | Type |
|
||||
| ------ | ------- |
|
||||
| prefix | string? |
|
||||
| suffix | string? |
|
||||
|
||||
### Switch model
|
||||
|
||||
|Key|Type|Notes|
|
||||
|---|---|---|
|
||||
|timestamp|datetime||
|
||||
|members|list of id/Member|Is sometimes in plain ID list form (eg. `GET /s/<id>/switches`), sometimes includes the full Member model (eg. `GET /s/<id>/fronters`).|
|
||||
| Key | Type | Notes |
|
||||
| --------- | ----------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| timestamp | datetime | |
|
||||
| members | list of id/Member | Is sometimes in plain ID list form (eg. `GET /s/<id>/switches`), sometimes includes the full Member model (eg. `GET /s/<id>/fronters`). |
|
||||
|
||||
### Message model
|
||||
|
||||
|Key|Type|Notes|
|
||||
|---|---|---|
|
||||
|timestamp|datetime||
|
||||
|id|snowflake|The ID of the message sent by the webhook. Encoded as string for precision reasons.|
|
||||
|original|snowflake|The ID of the (now-deleted) message that triggered the proxy. Encoded as string for precision reasons.|
|
||||
|sender|snowflake|The user ID of the account that triggered the proxy. Encoded as string for precision reasons.|
|
||||
|channel|snowflake|The ID of the channel the message was sent in. Encoded as string for precision reasons.|
|
||||
|system|full System object|The system that proxied the message.|
|
||||
|member|full Member object|The member that proxied the message.|
|
||||
| Key | Type | Notes |
|
||||
| --------- | ------------------ | ------------------------------------------------------------------------------------------------------ |
|
||||
| timestamp | datetime | |
|
||||
| id | snowflake | The ID of the message sent by the webhook. Encoded as string for precision reasons. |
|
||||
| original | snowflake | The ID of the (now-deleted) message that triggered the proxy. Encoded as string for precision reasons. |
|
||||
| sender | snowflake | The user ID of the account that triggered the proxy. Encoded as string for precision reasons. |
|
||||
| channel | snowflake | The ID of the channel the message was sent in. Encoded as string for precision reasons. |
|
||||
| system | full System object | The system that proxied the message. |
|
||||
| member | full Member object | The member that proxied the message. |
|
||||
|
||||
## Endpoints
|
||||
|
||||
@ -126,7 +125,7 @@ Returns information about your own system.
|
||||
}
|
||||
```
|
||||
|
||||
### GET /s/\<id>
|
||||
### GET /s/:id
|
||||
Queries a system by its 5-character ID, and returns information about it. If the system doesn't exist, returns `404 Not Found`.
|
||||
Some fields may be set to `null` if unauthenticated and the system has chosen to make those fields private.
|
||||
|
||||
@ -150,7 +149,7 @@ Some fields may be set to `null` if unauthenticated and the system has chosen to
|
||||
}
|
||||
```
|
||||
|
||||
### GET /s/\<id>/members
|
||||
### GET /s/:id/members
|
||||
Queries a system's member list by its 5-character ID. If the system doesn't exist, returns `404 Not Found`.
|
||||
If the system has chosen to hide its member list, this will return `403 Forbidden`, unless the request is authenticated with the system's token.
|
||||
If the request is not authenticated with the system's token, members marked as private will *not* be returned.
|
||||
@ -182,7 +181,7 @@ If the request is not authenticated with the system's token, members marked as p
|
||||
]
|
||||
```
|
||||
|
||||
### GET /s/\<id>/switches[?before=<timestamp>]
|
||||
### GET /s/:id/switches
|
||||
Returns a system's switch history in newest-first chronological order, with a maximum of 100 switches. If the system doesn't exist, returns `404 Not Found`.
|
||||
Optionally takes a `?before=` query parameter with an ISO-8601-formatted timestamp, and will only return switches
|
||||
that happen before that timestamp.
|
||||
@ -210,7 +209,7 @@ If the system has chosen to hide its switch history, this will return `403 Forbi
|
||||
]
|
||||
```
|
||||
|
||||
### GET /s/\<id>/fronters
|
||||
### GET /s/:id/fronters
|
||||
Returns a system's current fronter(s), with fully hydrated member objects. If the system doesn't exist, *or* the system has no registered switches, returns `404 Not Found`.
|
||||
If the system has chosen to hide its current fronters, this will return `403 Forbidden`, unless the request is authenticated with the system's token. If a returned member is private, and the request isn't properly authenticated, some fields may be null.
|
||||
|
||||
@ -301,7 +300,7 @@ Registers a new switch to your own system given a list of member IDs.
|
||||
#### Example response
|
||||
(`204 No Content`)
|
||||
|
||||
### GET /m/\<id>
|
||||
### GET /m/:id
|
||||
Queries a member's information by its 5-character member ID. If the member does not exist, will return `404 Not Found`.
|
||||
If this member is marked private, and the request isn't authenticated with the member's system's token, some fields will contain `null` rather than the true value (corresponding with the privacy settings). Regardless of privacy setting, a non-authenticated request will only receive `null` for the privacy fields (and `visibility`).
|
||||
|
||||
@ -383,7 +382,7 @@ Creates a new member with the information given. Missing fields (except for name
|
||||
}
|
||||
```
|
||||
|
||||
### PATCH /m/\<id>
|
||||
### PATCH /m/:id
|
||||
**Requires authentication.**
|
||||
|
||||
Edits a member's information. Missing fields will keep their current values. Will return the new member object. Member must (obviously) belong to your own system.
|
||||
@ -436,7 +435,7 @@ Edits a member's information. Missing fields will keep their current values. Wil
|
||||
}
|
||||
```
|
||||
|
||||
### DELETE /m/\<id>
|
||||
### DELETE /m/:id
|
||||
**Requires authentication.**
|
||||
|
||||
Deletes a member from the database. Be careful as there is no confirmation and the member will be deleted immediately. Member must (obviously) belong to your own system.
|
||||
@ -447,7 +446,7 @@ Deletes a member from the database. Be careful as there is no confirmation and t
|
||||
#### Example response
|
||||
(`204 No Content`)
|
||||
|
||||
### GET /a/\<id>
|
||||
### GET /a/:id
|
||||
Queries a system by its linked Discord account ID (17/18-digit numeric snowflake). Returns `404 Not Found` if the account doesn't have a system linked.
|
||||
Some fields may be set to `null` if unauthenticated and the system has chosen to make those fields private.
|
||||
|
||||
@ -471,7 +470,7 @@ Some fields may be set to `null` if unauthenticated and the system has chosen to
|
||||
}
|
||||
```
|
||||
|
||||
### GET /msg/\<id>
|
||||
### GET /msg/:id
|
||||
Looks up a proxied message by its message ID. Returns `404 Not Found` if the message ID is invalid or wasn't found (eg. was deleted or not proxied by PK).
|
||||
You can also look messages up by their *trigger* message ID (useful for, say, logging bot integration).
|
||||
|
Before Width: | Height: | Size: 88 KiB After Width: | Height: | Size: 88 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 158 KiB After Width: | Height: | Size: 158 KiB |
Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 70 KiB |
Before Width: | Height: | Size: 664 KiB After Width: | Height: | Size: 664 KiB |
@ -1,16 +1,10 @@
|
||||
---
|
||||
layout: default
|
||||
title: FAQ
|
||||
permalink: /faq
|
||||
description: Frequently asked questions (and the answers to them).
|
||||
nav_order: 6
|
||||
permalink: /faq
|
||||
---
|
||||
|
||||
# Frequently asked questions
|
||||
{: .no_toc }
|
||||
|
||||
1. TOC
|
||||
{:toc}
|
||||
|
||||
## Can I use this bot for kin/roleplay/other non-plurality uses? Can I use it if I'm not plural myself? Is that appropriating?
|
||||
Although this bot is designed with plural systems and their use cases in mind, the bot's feature set is still useful for many other types of communities, including role-playing and otherkin. By all means go ahead and use it for those communities, too. We don't gatekeep, and neither should you.
|
@ -1,23 +1,15 @@
|
||||
---
|
||||
layout: default
|
||||
title: Getting Started
|
||||
permalink: /start
|
||||
description: A basic tutorial of how to set up the bot.
|
||||
nav_order: 1
|
||||
permalink: /start
|
||||
---
|
||||
|
||||
# Getting Started
|
||||
{: .no_toc }
|
||||
|
||||
## Table of Contents
|
||||
{: .no_toc .text-delta }
|
||||
|
||||
1. TOC
|
||||
{:toc}
|
||||
|
||||
## The system
|
||||
The first thing you need to do to use PluralKit is to set up a system! Each account can have one system, but you can link one system to multiple accounts. To inspect a system, you can pull up its *system card*. Below is an example system with all options set, which you can also see by typing `pk;system exmpl` on Discord:
|
||||
![Example of a filled out system card]({% link /assets/ExampleSystem.png %})
|
||||
|
||||
![Example of a filled out system card](./assets/ExampleSystem.png =x600)
|
||||
|
||||
### Parts of the system
|
||||
These are the parts of the system, reading the card top to bottom left to right like a book:
|
||||
@ -38,7 +30,8 @@ If you want to do tweak the system, [see the user guide](/guide#system-managemen
|
||||
|
||||
## Members
|
||||
Once you have created a system, the next thing you need to get started is to create a member! Like before, here is an example of a full member card with all options used:
|
||||
![Example of a filled out member card]({% link /assets/ExampleMember.png %})
|
||||
|
||||
![Example of a filled out member card](./assets/ExampleMember.png =80%x)
|
||||
|
||||
### Parts to a member
|
||||
These are the parts of a member, reading the card top to bottom left to right like a book:
|
||||
@ -72,7 +65,7 @@ For more info on what you can do with members, check out [the member management
|
||||
## Proxies
|
||||
Proxies are probably the most important part of PluralKit, they are literally what the bot was made for. Below is an example of a proxied message:
|
||||
|
||||
![Example of a proxy message]({% link /assets/ExampleProxy.png %})
|
||||
![Example of a proxy message](./assets/ExampleProxy.png =70%x)
|
||||
|
||||
### Parts to a proxy message
|
||||
1. **The name**: This is the member's name, display name, or server nickname, depending on what's set (server nickname overrides display name, which overrides the normal name). In this case, it's **Myriad "Big Boss" Kit**.
|
||||
@ -120,10 +113,12 @@ When you come across a proxied message, or you have proxied a message, there are
|
||||
❌ (red X): This reaction will cause the message to be deleted, but only if you are using the account that sent the message.
|
||||
|
||||
❓ (question mark): This reaction will DM you a message containing details on who sent the message, the member that it proxied, and the system it was from. When you react with this, you will receive a DM that looks like this:
|
||||
![Example of a message query]({% link /assets/ExampleQuery.png %})
|
||||
|
||||
![Example of a message query](./assets/ExampleQuery.png =80%x)
|
||||
|
||||
❗ (exclamation mark): This reaction will send a message to the channel the proxied message was sent in, pinging both you and the sender of the message. That message will look like this:
|
||||
![Example of a message query]({% link /assets/ExamplePing.png %})
|
||||
|
||||
![Example of a message query](./assets/ExamplePing.png =80%x)
|
||||
|
||||
### More proxy examples
|
||||
How to read these examples: The smaller code block with "Example Message" in it is the message you would like to proxy, the larger code block immediately after it is the command you would need to set the member Myriad to respond to that proxy
|
@ -1,9 +1,18 @@
|
||||
---
|
||||
# Feel free to add content and custom Front Matter to this file.
|
||||
# To modify the layout, see https://jekyllrb.com/docs/themes/#overriding-theme-defaults
|
||||
|
||||
layout: home
|
||||
nav_exclude: true
|
||||
# home: true
|
||||
# heroImage: https://v1.vuepress.vuejs.org/hero.png
|
||||
# tagline: Documentation for PluralKit
|
||||
# actionText: Quick Start →
|
||||
# actionLink: /guide/
|
||||
# features:
|
||||
# - title: Feature 1 Title
|
||||
# details: Feature 1 Description
|
||||
# - title: Feature 2 Title
|
||||
# details: Feature 2 Description
|
||||
# - title: Feature 3 Title
|
||||
# details: Feature 3 Description
|
||||
# footer: Made by with ❤️
|
||||
title: Home
|
||||
---
|
||||
|
||||
# PluralKit
|
||||
@ -13,6 +22,6 @@ PluralKit is a bot designed for plural communities on Discord. It allows you to
|
||||
This bot detects messages with certain tags associated with a profile, then replaces that message under a "pseudo-account" of that profile using webhooks. This is useful for multiple people sharing one body (aka "systems"), people who wish to roleplay as different characters without having several accounts, or anyone else who may want to post messages as a different person from the same account.
|
||||
|
||||
#### for example...
|
||||
![demonstration of PluralKit]({% link /assets/demo.gif %})
|
||||
![demonstration of PluralKit](./assets/demo.gif)
|
||||
|
||||
For more information, see the links to the left, or click [here](https://discord.com/oauth2/authorize?client_id=466378653216014359&scope=bot&permissions=536995904) to invite the bot to your server!
|
@ -1,9 +1,7 @@
|
||||
---
|
||||
layout: default
|
||||
title: Privacy Policy
|
||||
permalink: /privacy
|
||||
description: I'm not a lawyer. I don't want to write a 50 page document no one wants to (or can) read. It's short, I promise.
|
||||
nav_order: 5
|
||||
permalink: /privacy
|
||||
---
|
||||
|
||||
# Privacy Policy
|
@ -1,8 +1,7 @@
|
||||
---
|
||||
layout: default
|
||||
title: Tips and Tricks
|
||||
permalink: /tips
|
||||
nav_order: 7
|
||||
title: Tips and Tricks
|
||||
---
|
||||
|
||||
# Tips and Tricks
|
@ -1,19 +1,13 @@
|
||||
---
|
||||
layout: default
|
||||
title: User Guide
|
||||
permalink: /guide
|
||||
description: PluralKit's user guide contains a walkthrough of the bot's features, as well as how to use them.
|
||||
nav_order: 2
|
||||
permalink: /guide
|
||||
|
||||
# To prevent sidebar from getting super long
|
||||
sidebarDepth: 1
|
||||
---
|
||||
|
||||
# User Guide
|
||||
{: .no_toc }
|
||||
|
||||
## Table of Contents
|
||||
{: .no_toc .text-delta }
|
||||
|
||||
1. TOC
|
||||
{:toc}
|
||||
|
||||
## Adding the bot to your server
|
||||
If you want to use PluralKit on a Discord server, you must first *add* it to the server in question. For this, you'll need the *Manage Server* permission on there.
|
BIN
docs/favicon.ico
Before Width: | Height: | Size: 156 KiB |
20
docs/package.json
Normal file
@ -0,0 +1,20 @@
|
||||
{
|
||||
"name": "pluralkit-docs",
|
||||
"private": true,
|
||||
"description": "Documentation for PluralKit",
|
||||
"scripts": {
|
||||
"dev": "vuepress dev content",
|
||||
"build": "vuepress build content"
|
||||
},
|
||||
"license": "Apache-2.0",
|
||||
"devDependencies": {
|
||||
"@vuepress/plugin-back-to-top": "^1.3.1",
|
||||
"@vuepress/plugin-google-analytics": "^1.5.2",
|
||||
"@vuepress/plugin-medium-zoom": "^1.3.1",
|
||||
"markdown-it-custom-header-link": "^1.0.5",
|
||||
"markdown-it-imsize": "^2.0.1",
|
||||
"vuepress": "^1.3.1",
|
||||
"vuepress-plugin-clean-urls": "^1.1.1",
|
||||
"vuepress-plugin-dehydrate": "^1.1.4"
|
||||
}
|
||||
}
|
7802
docs/yarn.lock
Normal file
6
netlify.toml
Normal file
@ -0,0 +1,6 @@
|
||||
# Configuration for Netlify (website deployment, etc)
|
||||
|
||||
[build]
|
||||
base = "docs/"
|
||||
publish = "docs/content/.vuepress/dist"
|
||||
command = "npm run build"
|