Please sign in to access this page

Plura

Plura Used AI

7 devlogs
13h 10m
•  Ship certified

A slack bot to make the lives of plural systems easier, similar to PluralKit. Check the README for the (little) AI usage, A demo video, and more.

Timeline

Ship 1

1 payout of shell 188.0 shells

Your local wobbler, Suya

22 days ago

Your local wobbler, Suya Covers 7 devlogs and 13h 10m

Bug fixes galore. Time to tell a short story:

I was recording a demo video for this devlog, showing features, commands, etc. And then plura just, didn't overwrite the message sent. I was rather confused, since this was working since forever and the code wasn't touched (which also means I didn't ever test it after initial impl. This is called foreshadowing).

So, down the tracing rabbit hole we go. I opened up my logs and... They were useless. I didn't add info logs when the bot would attempt to update a message, so I had no idea where I was in the process. Debug logs were there though. I tried turning them on. That for some reason failed, since systemd is weird. The conclusion? use systemd's native logging framework. I am now able to query the logs with precision, like so:

journalctl -f -xeu plura --user -o json FSENDERID=Some(SlackUserId(\U07958J0JJU\)) SPAN_TARGET=plura::events | jq

This allows me to see all logs for myself, for all events that are sent that are related to me. If I wanted to do fuzzy finding and other things, I could do that through jq. Through this, I figured out that I was returning early if the message content didn't match a trigger. Awesome stuff honestly. Whodathunk good observability in production helps debug issues?

Anyways, here's the demo video of everything working as intended. Since the last devlog, I also added:

  • System reauthentication and fallbacks in case of oauth failure (makes the oauth flow a lot more robust)
  • Better logging in specific situations (read above)
  • Observability improvements (read above)
  • Removed system names (they were useless and stopped a couple people from using the bot, due to not really having a system name)
  • Added the ability to change the BASE_URL for the app (fixes some issues with oauth. Makes it easier for third parties to run their own instances)

MVP is done! Since the last devlog I added:
- message deletion
- member disabling/re-enabling
- getting information from a message
- renamed to plura

I think I'll be shipping soon. I'm pretty happy with how the bot has turned out so far and I think it is genuinely pretty useful :D

I added much better documentation for all commands and also documented some internals so it's a bit easier to understand what's going on.

Fun fact about the internals: The bot treats slash commands like a CLI. This means I can use clap and get a load of nice features for free, such as this nice formatting for help commands and nice errors in case of a user input error

Update attachment

I added the ability to reproxy already sent messages! On the first test I accidentally swapped a check to see if the user requesting to reproxy sent the message. Oops. After fixing that and a couple other issues it worked!

I added the ability to edit messages! My slack API library currently doesn't support rich text right now which is a bit sad, but it should eventually. So for now, you can edit plain text message.

I reworked triggers to update entirely through commands rather than a modal. This also revealed an issue where prefix were not working correctly. Oops.

I added member aliasing! The bulk of these 3 hours was actually refactoring and updating code to be more refactorable and usable. I also have much better debugging logs, and errors look pretty now when I get them. I've only shown the user-facing feature in the video, but the main work happened behind the scenes