A slack bot designed to make the lives of plural systems easier
Find a file
End 23ade06ff9
chore(deps): restore dotenvy and replace custom .env loader
Replace the hand-rolled unsafe .env parser with dotenvy's
#[dotenvy::load(required = false)] attribute macro.
2026-04-03 09:34:30 -07:00
.sqlx feat(docker): add Dockerfile and SQLx offline query cache 2026-04-02 15:30:25 -07:00
assets docs: add demo video 2025-07-20 13:34:27 +02:00
migrations feat: remove system name 2025-07-20 00:25:33 +02:00
src chore(deps): restore dotenvy and replace custom .env loader 2026-04-03 09:34:30 -07:00
.env.example feat(docker): add Dockerfile and SQLx offline query cache 2026-04-02 15:30:25 -07:00
.gitignore feat: initial commit 2025-06-08 21:12:07 +02:00
build.rs feat: initial commit 2025-06-08 21:12:07 +02:00
Cargo.lock chore(deps): restore dotenvy and replace custom .env loader 2026-04-03 09:34:30 -07:00
Cargo.toml chore(deps): restore dotenvy and replace custom .env loader 2026-04-03 09:34:30 -07:00
Dockerfile feat(docker): add Dockerfile and SQLx offline query cache 2026-04-02 15:30:25 -07:00
LICENSE chore: add LICENSE 2025-06-18 14:25:43 +02:00
manifest.json docs: add manifest template, update README and explain text 2026-04-02 15:30:25 -07:00
README.md docs: add manifest template, update README and explain text 2026-04-02 15:30:25 -07:00
rust-toolchain.toml feat: initial commit 2025-06-08 21:12:07 +02:00

Plura

A slack bot designed to make the lives of plural systems easier. Inspired by PluralKit.

https://github.com/user-attachments/assets/cff44cd0-ed4f-4e28-9bac-db6f3a60e03d

I'm plural myself (endoftimee), and I am not (Suya), but I do know a lot of Hack Club members that are plural and do want an easier way to differentiate between alters. Thus, I made this. It works similarly to PluralKit, by basically rewriting sent messages under different members using Slack's API.

Features

  • Manage members and profiles
    • Add, delete, edit, and get member information
    • Manage member aliases so your members are easier to refer to.
  • Send messages under different members
    • Triggers
      • E.g. Hi ~J to send a message under a user who is associated with the suffix ~J
  • Message actions for managing messages sent by members
    • Message editing
    • Message deletion
    • Message info (i.e. the profile of the member that sent it)
    • Message reproxying (i.e. sending a message under a different user after it's been sent)
  • Set and view information about a member
  • Import members from PluralKit via /sync from-pk <token>

AI Usage in this project

(Required for Summer Of Making by Hack Club)

  • General autocompletion tooling (i.e. Zed edit predictions)
  • Initial draft of the merge_trigger_fields migration was done by AI
    • This also included editing matching structs
    • This has been refactored and edited by Suya1671
  • Initial draft of trigger commands was done by AI
    • Note that this has been completely redone and nearly no AI-generated code remains. Suya1671 remade triggers to have an entirely command based interface.
  • General code analysis was done by AI to make sure it's easier to understand and maintain the project
    • No code edits by an agent was done. Only suggestions which were implemented if seen fit by Suya1671