Initial docs rewrite using Vuepress
47
docs/content/.vuepress/components/Arg.vue
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
<template>
|
||||
<div class="command-argument-parent">
|
||||
<div class="command-argument">
|
||||
<slot />
|
||||
</div>
|
||||
|
||||
<div v-if="false" class="argument-details">
|
||||
{{ name }}
|
||||
<span v-if="optional !== undefined">(optional)</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</template>
|
||||
|
||||
<style lang="stylus">
|
||||
.command-argument-parent {
|
||||
display: inline-flex;
|
||||
flex-direction: column;
|
||||
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.command-argument {
|
||||
padding: 0 0.5rem;
|
||||
background-color: lighten($exampleBgColor, 15%);
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.argument-details {
|
||||
font-size: 0.75em;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.arg-input {
|
||||
/*font-size: 0.9rem;*/
|
||||
color: $exampleTextColor;
|
||||
background-color: transparent;
|
||||
text-align: center;
|
||||
border: none;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: ["optional", "name", "edit", "value"],
|
||||
}
|
||||
</script>
|
||||
23
docs/content/.vuepress/components/Cmd.vue
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
<template>
|
||||
<p class="command-example">
|
||||
<span class="bot-prefix">pk;</span><slot></slot>
|
||||
</p>
|
||||
</template>
|
||||
|
||||
<style lang="stylus">
|
||||
.command-example {
|
||||
font-size: $exampleFontSize;
|
||||
font-family: $exampleFontFamily;
|
||||
|
||||
color: $exampleTextColor;
|
||||
background-color: $exampleBgColor;
|
||||
border-radius: 6px;
|
||||
|
||||
margin: 0.5rem 0;
|
||||
padding: 0.75rem 1.25rem;
|
||||
}
|
||||
|
||||
.bot-prefix {
|
||||
color: $examplePrefixColor;
|
||||
}
|
||||
</style>
|
||||
23
docs/content/.vuepress/components/CmdGroup.vue
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
<template>
|
||||
<div class="command-example-group">
|
||||
<slot />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style lang="stylus">
|
||||
.command-example-group {
|
||||
background-color: $exampleBgColor;
|
||||
border-radius: 6px;
|
||||
|
||||
padding: 0.75rem 1.25rem;
|
||||
}
|
||||
|
||||
.command-example-group .command-example {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.command-example-group .command-example:not(:last-child) {
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
</style>
|
||||
19
docs/content/.vuepress/components/CmdInline.vue
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
<template>
|
||||
<span class="example-inline"><span class="inline-bot-prefix">pk;</span><slot /></span>
|
||||
</template>
|
||||
|
||||
<style lang="stylus">
|
||||
.example-inline {
|
||||
font-size: $exampleFontSize;
|
||||
font-family: $exampleFontFamily;
|
||||
|
||||
background-color: $exampleBgColor;
|
||||
color: $exampleTextColor;
|
||||
padding: 0.2rem 0.4rem;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.inline-bot-prefix {
|
||||
color: $examplePrefixColor;
|
||||
}
|
||||
</style>
|
||||
54
docs/content/.vuepress/config.js
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
module.exports = {
|
||||
title: "PluralKit",
|
||||
|
||||
base: "/",
|
||||
head: [
|
||||
["link", { rel: "icon", type: "image/png", href: "/favicon.png" }],
|
||||
],
|
||||
evergreen: true,
|
||||
|
||||
theme: "@vuepress/theme-default",
|
||||
plugins: [
|
||||
"vuepress-plugin-clean-urls",
|
||||
],
|
||||
markdown: {
|
||||
extendMarkdown: md => {
|
||||
md.use(require("markdown-it-custom-header-link"));
|
||||
md.use(require("markdown-it-imsize"));
|
||||
}
|
||||
},
|
||||
|
||||
themeConfig: {
|
||||
nav: [
|
||||
{ text: "Support server", link: "https://discord.gg/PczBt78" },
|
||||
{ text: "Invite bot", link: "https://discordapp.com/oauth2/authorize?client_id=466378653216014359&scope=bot&permissions=536995904" }
|
||||
],
|
||||
sidebar: [
|
||||
["/", "Home"],
|
||||
{
|
||||
title: "User Guide",
|
||||
collapsable: false,
|
||||
children: [
|
||||
"/guide/quick-start",
|
||||
"/guide/systems",
|
||||
"/guide/members",
|
||||
"/guide/proxying",
|
||||
"/guide/moderation",
|
||||
"/guide/privacy",
|
||||
"/guide/commands",
|
||||
]
|
||||
},
|
||||
"/faq",
|
||||
"/api",
|
||||
"/privacy-policy",
|
||||
"/support-server",
|
||||
],
|
||||
lastUpdated: "Last Updated",
|
||||
|
||||
repo: "xSke/PluralKit",
|
||||
repoLabel: "Contribute!",
|
||||
docsDir: "docs/content",
|
||||
editLinks: true,
|
||||
editLinkText: "Help us improve this page!"
|
||||
}
|
||||
}
|
||||
BIN
docs/content/.vuepress/public/favicon.png
Normal file
|
After Width: | Height: | Size: 664 KiB |
6
docs/content/.vuepress/styles/palette.styl
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
// CUSTOM
|
||||
$exampleBgColor = $codeBgColor;
|
||||
$exampleTextColor = #ffffff;
|
||||
$examplePrefixColor = #a3a6a9;
|
||||
$exampleFontSize = 0.9rem;
|
||||
$exampleFontFamily = source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace;
|
||||
8
docs/content/api.md
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
# API documentation
|
||||
|
||||
PluralKit has a REST API for third-party app integration.
|
||||
|
||||
The API is documented using [OpenAPI v3](https://swagger.io/specification/), and the schema file can be found [on the repository](https://github.com/xSke/PluralKit/blob/master/PluralKit.API/openapi.yaml).
|
||||
|
||||
An online rendered version of the schema can be seen on Swagger using the link below:
|
||||
[**https://app.swaggerhub.com/apis-docs/xSke/PluralKit/1.0**](https://app.swaggerhub.com/apis-docs/xSke/PluralKit/1.0)
|
||||
53
docs/content/faq.md
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
---
|
||||
sidebarDepth: 2
|
||||
---
|
||||
|
||||
# Frequently asked questions
|
||||
|
||||
## How does PluralKit proxying work? <!-- how-it-works -->
|
||||
Proxying works using [Discord webhooks](https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks). Every time PluralKit sees a message, it'll:
|
||||
|
||||
1. Look for a pair of [proxy tags](./guide/proxying.md#proxy-tags) in the message. If it finds any, it'll determine which member they correspond to. If not, it'll check your [autoproxy] settings and proceed with those.
|
||||
2. Create a webhook in the relevant channel (if one doesn't already exist).
|
||||
3. Send a message through that webhook with the correct username, avatar, and message content.
|
||||
4. Delete the original message.
|
||||
|
||||
The result is that the proxied message is sent using the webhook. This has a few implications:
|
||||
|
||||
### Why can't I change my name color? <!-- color -->
|
||||
Webhooks aren't real Discord users, and can't have roles attached, or otherwise have their name color changed.
|
||||
|
||||
### Why does the name/avatar show up wrong when I click on a profile? <!-- profile-error -->
|
||||
Since all webhook messages have the same ID, Discord shows a random name/avatar pair - it'll be whatever it happens to have cached.
|
||||
|
||||
### How can I determine who sent a message? <!-- lookup -->
|
||||
If you react with the :question: emoji, PluralKit will DM you information about the message and its sender.
|
||||
|
||||
### How can I ping a webhook? <!-- ping -->
|
||||
If you react with the :exclamation: emoji, PluralKit will send a "ping" message in the channel, pinging the original sender account on your behalf.
|
||||
|
||||
### How can I delete my own message? <!-- deleting -->
|
||||
If you react with the :x: emoji, you can delete a proxied message if it was originally sent from your own account.
|
||||
|
||||
### Why can't I block webhook messages? <!-- blocking -->
|
||||
Discord does not support blocking webhooks. Unfortunately, there's no workaround for this at the moment :slightly_frowning_face:
|
||||
|
||||
## Who can use this bot? <!-- gatekeeping -->
|
||||
*or: "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.**
|
||||
|
||||
## Who's the mascot? <!-- mascot -->
|
||||
[Our lovely bot mascot](https://imgur.com/a/LTqQHHL)'s name is **Myriad**! They were drawn by [Layl](https://twitter.com/braindemons). *(and yes, there are fictives.)*
|
||||
|
||||
### Why does the bot avatar occasionally change? <!-- bot-avatar -->
|
||||
Every month, we accept requests for fanart of Myriad and pick out one to change the bot's avatar to. This gets us lots of variety :)
|
||||
|
||||
We accept submissions in the [#myriad-mythology](https://discordapp.com/channels/466707357099884544/569526847667175444) channel in the [support server](./support-server.md).
|
||||
|
||||
#### Bot avatar history
|
||||
|
||||
| Month | Artist | Avatar |
|
||||
| ----: | ------ | ------ |
|
||||
| *(n/a)* | [@Layl#8888](https://twitter.com/braindemons) |  |
|
||||
| **June 2020** | @detective zikachu#8899 |  |
|
||||
BIN
docs/content/files/avatars/2020-06.png
Normal file
|
After Width: | Height: | Size: 220 KiB |
BIN
docs/content/files/avatars/original.png
Normal file
|
After Width: | Height: | Size: 664 KiB |
BIN
docs/content/files/member-card-annotated.png
Normal file
|
After Width: | Height: | Size: 88 KiB |
BIN
docs/content/files/member-card.png
Normal file
|
After Width: | Height: | Size: 88 KiB |
BIN
docs/content/files/system-card-annotated.png
Normal file
|
After Width: | Height: | Size: 159 KiB |
BIN
docs/content/files/system-card.png
Normal file
|
After Width: | Height: | Size: 158 KiB |
1
docs/content/guide/commands.md
Normal file
|
|
@ -0,0 +1 @@
|
|||
# Command list
|
||||
2
docs/content/guide/index.md
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
# User Guide
|
||||
guide go nyoom, or something
|
||||
7
docs/content/guide/members.md
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
# Members
|
||||
|
||||
## The member card
|
||||
|
||||
## Creating members
|
||||
|
||||
## Editing members
|
||||
7
docs/content/guide/moderation.md
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
# Moderation
|
||||
## Message querying
|
||||
## Channel blacklist
|
||||
## Log channel
|
||||
### Logging blacklist
|
||||
## Moderation bots
|
||||
### Log cleanup
|
||||
1
docs/content/guide/privacy.md
Normal file
|
|
@ -0,0 +1 @@
|
|||
# Privacy
|
||||
13
docs/content/guide/proxying.md
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
# Proxying
|
||||
|
||||
## Proxy tags
|
||||
|
||||
## Handling names
|
||||
### System tags
|
||||
### Display names
|
||||
### Server names
|
||||
|
||||
## Querying and pinging
|
||||
|
||||
## Autoproxy
|
||||
|
||||
62
docs/content/guide/quick-start.md
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
---
|
||||
defaultMember: Craig
|
||||
---
|
||||
|
||||
# Quick start
|
||||
|
||||
This page will get you started :zap: lightning-fast :zap: with the bot. You'll need to follow these steps:
|
||||
|
||||
## Create a system
|
||||
First, **create a system** with the following command:
|
||||
<Cmd>system new</Cmd>
|
||||
|
||||
You can also specify a system name if you want:
|
||||
<Cmd>system new <Arg>My System Name</Arg></Cmd>
|
||||
|
||||
## Create a member
|
||||
Second, **create a member** with the following command, inserting the member name:
|
||||
|
||||
<Cmd>member new <Arg>{{ $page.frontmatter.defaultMember }}</Arg></Cmd>
|
||||
|
||||
::: tip
|
||||
You can include spaces, punctuation, or symbols in the member name. However, you'll need to write them `"in quotes"` every time you refer to the member elsewhere.
|
||||
|
||||
Instead, you can give your member a simple, easy to type name, then set the member's [display name](./proxying.md#handling-names) to a more complex version. That'll get displayed when proxying, and then you can keep the following commands simple.
|
||||
:::
|
||||
|
||||
## Set some proxy tags
|
||||
Now, you'll need to tell PluralKit how you want to trigger the proxy using **proxy tags**. Often, these will be a pair of brackets, an emoji prefix, or something similar.
|
||||
|
||||
To set a member's proxy tags, you'll need to "pretend" you're proxying the word `text` - just the word itself, all-lowercase. This often gets a bit confusing, so here are a couple of examples with various patterns:
|
||||
|
||||
<CmdGroup>
|
||||
<Cmd>member <Arg>{{ $page.frontmatter.defaultMember }}</Arg> proxy <Arg>J:text</Arg></Cmd>
|
||||
<Cmd>member <Arg>{{ $page.frontmatter.defaultMember }}</Arg> proxy <Arg>[text]</Arg></Cmd>
|
||||
<Cmd>member <Arg>{{ $page.frontmatter.defaultMember }}</Arg> proxy <Arg>🌸text</Arg></Cmd>
|
||||
<Cmd>member <Arg>{{ $page.frontmatter.defaultMember }}</Arg> proxy <Arg>text -Q</Arg></Cmd>
|
||||
</CmdGroup>
|
||||
|
||||
::: tip
|
||||
You're not limited to the types of proxy tags shown above. You can put anything you'd like around the word `text` (before, after, or both), and PluralKit will look for that. Be creative!
|
||||
:::
|
||||
|
||||
## Set an avatar (optional)
|
||||
If you want an avatar displayed, use the following command:
|
||||
|
||||
<Cmd>member <Arg>{{ $page.frontmatter.defaultMember }}</Arg> avatar <Arg>https://link.to.your/avatar.png</Arg></Cmd>
|
||||
|
||||
::: tip
|
||||
If you don't have a link, you can leave that out entirely, and then **attach** the image to the command message itself. PluralKit will pick up on the attachment, and use that instead.
|
||||
:::
|
||||
|
||||
::: warning
|
||||
Avatars have some restrictions:
|
||||
- The image must be in **.jpg**, **.png**, or **.webp** format
|
||||
- The image must be under **1024 KB** in size
|
||||
- The image must be below **1024 x 1024 pixels** in resolution (along the smallest axis).
|
||||
- Animated GIFs are **not** supported (even if you have Nitro).
|
||||
:::
|
||||
|
||||
|
||||
## More information
|
||||
(TODO)
|
||||
44
docs/content/guide/systems.md
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
---
|
||||
systemName: My System Name
|
||||
---
|
||||
|
||||
# Systems
|
||||
A *system* is equivalent to an account. Every user of PluralKit must have a system registered to use the bot.
|
||||
|
||||
## System IDs
|
||||
Each system has a **system ID** - a randomly generated string of 5 letters. You can use this ID to unambiguously refer to a system in commands.
|
||||
|
||||
You can see your system ID by running <Cmd-inline>system</Cmd-inline> and looking at the embed footer (at the bottom of the response).
|
||||
|
||||
## Creating a system
|
||||
To create a system, use the <Cmd-inline>system new</Cmd-inline> command with an optional system name:
|
||||
|
||||
<CmdGroup>
|
||||
<Cmd>system new</Cmd>
|
||||
<Cmd>system new <Arg>My System Name</Arg></Cmd>
|
||||
</CmdGroup>
|
||||
|
||||
## Editing your system
|
||||
|
||||
### System description
|
||||
You can set your system description using the following command:
|
||||
<Cmd>system description <Arg>My cool system description goes here.</Arg></Cmd>
|
||||
|
||||
## Linking accounts
|
||||
A system isn't necessarily tied to a single account. A system can be **linked** to another account, and all linked accounts can run commands on behalf of the system.
|
||||
|
||||
To link your system to another account, use the following command:
|
||||
|
||||
<Cmd>link <Arg>@NameOfAccount#1234</Arg></Cmd>
|
||||
|
||||
The other account will need to confirm the link by pressing a reaction within five minutes.
|
||||
|
||||
Should you want to unlink an account, use the equivalent unlink account:
|
||||
|
||||
<Cmd>unlink <Arg>@NameOfAccount#1234</Arg></Cmd>
|
||||
|
||||
You can unlink your own account too (both by mentioning, or using <Cmd-inline>unlink</Cmd-inline> with no account). While you can't unlink the only linked account, be careful not to lock yourself out of your system by other means :slightly_smiling_face:
|
||||
|
||||
::: tip
|
||||
On both of these commands, you can also supply a user ID. This is useful when you want to unlink an already-deleted account, for example.
|
||||
:::
|
||||
2
docs/content/index.md
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
# PluralKit
|
||||
Front page goes here. Unfinished.
|
||||
40
docs/content/privacy-policy.md
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
# Privacy policy
|
||||
|
||||
::: tip
|
||||
The bot is open-source (under the [Apache License, version 2.0](https://www.apache.org/licenses/LICENSE-2.0)), and the source can be seen [on GitHub](https://github.com/xSke/PluralKit).
|
||||
:::
|
||||
|
||||
I’m not a lawyer. I don’t want to write a 50 page document no one wants to (or can) read. In short:
|
||||
|
||||
## What we store (and don't store)
|
||||
This is the data PluralKit stores indefinitely:
|
||||
* The information *you give the bot* (eg. system/member profiles, switch history, linked accounts)
|
||||
* Metadata about proxied messages (sender account ID, message IDs, sender system and member)
|
||||
* Anonymous aggregate usage metrics (eg. amount of gateway events, message proxies, executed commands per second)
|
||||
* All of this is visible on [the public stats page](https://stats.pluralkit.me/)
|
||||
* Nightly database backups of the above information
|
||||
* High-level logs of actions taken on the bot (systems created, switches logged, etc)
|
||||
* In practice, this is stored for 30 days, but this may change in the future.
|
||||
|
||||
This is the data PluralKit does **not** collect:
|
||||
* Anything not listed above, including...
|
||||
* Proxied message *contents*
|
||||
* Metadata about deleted messages, members, switches, or systems
|
||||
* Information added *and deleted* between nightly backups
|
||||
* Any information about messages that *aren't* proxied through PluralKit.
|
||||
|
||||
## Managing your information
|
||||
System and member information (names, member lists, descriptions, etc) is **public by default**, and can be looked up by anyone given a system/member ID or an account ID.
|
||||
This can be changed using [the available privacy settings](./guide/privacy.md).
|
||||
|
||||
### Exporting information
|
||||
You can **export your system information** using the `pk;export` command. This does not include message metadata, as the file would be huge. If there's demand for a command to export that, [let me know](https://github.com/xSke/PlualKit/issues).
|
||||
|
||||
### Deleting information
|
||||
You can **delete your information** by deleting your system (with the `pk;system delete`) command. This will delete:
|
||||
- Information about your system
|
||||
- Information about all system members
|
||||
- Information about all switchees
|
||||
- Information about all messages
|
||||
|
||||
This will *not* delete information from the database backups; [contact me](./support-server.md) if you want those wiped (or for that matter, need a data restore).
|
||||
5
docs/content/support-server.md
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
# Support server
|
||||
|
||||
We have an official support server for questions, feedback, suggestions, bug reports, and anything else related to the bot. The invite link is below:
|
||||
|
||||
[**https://discord.gg/PczBt78**](https://discord.gg/PczBt78)
|
||||