adea7be07c
Refactored ExportSystem to: - Only fetch message counts once (instead of a query per member) - Fetch switches using the newly refactored GetTruncatedSwitchList (gets switches and their members in one shot instead of querying for switch members one switch at a time) - Added a new MessageCountsPerMember method to MemberStore to support the above - Modified GetTruncatedSwitchList query to retrieve switches with no members (wasn't important for frontpercent, but is if we're reusing that method here) This doesn't require any index changes beyond those that support GetTruncatedSwitchList, though we can see a small benefit with an index on messages covering the member column (valuable for other reasons outside of these additions). |
||
---|---|---|
.github | ||
docs | ||
PluralKit.API | ||
PluralKit.Bot | ||
PluralKit.Core | ||
PluralKit.Web | ||
scripts | ||
.dockerignore | ||
.editorconfig | ||
.gitignore | ||
docker-compose.yml | ||
Dockerfile | ||
pluralkit.conf.example | ||
PluralKit.sln | ||
README.md |
PluralKit
PluralKit is a Discord bot meant for plural communities. It has features like message proxying through webhooks, switch tracking, system and member profiles, and more.
Do you just want to add PluralKit to your server? If so, you don't need any of this. Use the bot's invite link: https://discordapp.com/oauth2/authorize?client_id=466378653216014359&scope=bot&permissions=536995904
PluralKit has a Discord server for support, feedback, and discussion: https://discord.gg/PczBt78
Requirements
Running the bot requires .NET Core (v2.2) and a PostgreSQL database.
Configuration
Configuring the bot is done through a JSON configuration file. An example of the configuration format can be seen in pluralkit.conf.example
.
The configuration file needs to be placed in the bot's working directory (usually the repository root) and must be called pluralkit.conf
.
The configuration file is in JSON format (albeit with a .conf
extension), and the following keys (using .
to indicate a nested object level) are available:
The following keys are available:
PluralKit.Database
: the URI of the database to connect to (in ADO.NET Npgsql format)PluralKit.Bot.Token
: the Discord bot token to connect with
Running
Docker
Running PluralKit is pretty easy with Docker. The repository contains a docker-compose.yml
file ready to use.
- Clone this repository:
git clone https://github.com/xSke/PluralKit
- Create a
pluralkit.conf
file in the same directory asdocker-compose.yml
containing at least aPluralKit.Bot.Token
field- (
PluralKit.Database
is overridden indocker-compose.yml
to point to the Postgres container)
- (
- Build the bot:
docker-compose build
- Run the bot:
docker-compose up
In other words:
$ git clone https://github.com/xSke/PluralKit
$ cd PluralKit
$ cp pluralkit.conf.example pluralkit.conf
$ nano pluralkit.conf # (or vim, or whatever)
$ docker-compose up -d
Manually
- Install the .NET Core 2.2 SDK (see https://dotnet.microsoft.com/download)
- Clone this repository:
git clone https://github.com/xSke/PluralKit
- Create and fill in a
pluralkit.conf
file in the same directory asdocker-compose.yml
- Run the bot:
dotnet run --project PluralKit.Bot
Building the docs
The website and documentation are automatically built by GitHub Pages when pushed to the master
branch. They use Jekyll 3, which requires Ruby and Bundler.
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
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