WIP fluxer bot
Gleam 98.4%
Just 0.8%
Nix 0.8%
14 1 0

Clone this repository

https://tangled.org/nuv.sh/fluxer_bot https://tangled.org/did:plc:cezmtk5bb4zipkps3abnjjl6/fluxer_bot
git@knot.nuv.sh:nuv.sh/fluxer_bot git@knot.nuv.sh:did:plc:cezmtk5bb4zipkps3abnjjl6/fluxer_bot

For self-hosted knots, clone URLs may differ based on your setup.

Download tar.gz
README.md

Development#

nix develop

just dev

./server/.envrc needs to contain export FLUXER_BOT_TOKEN=

Deployment#

Dockerfile and example docker-compose.yml to be added Also prebuilt images

TODO#

features#

  • add roles
    • @bot add-reaction-role :emote: @role <message-link>
    • respond to message with @bot add-reaction-role :emote: @role
    • @bot add-reaction-role step by step process
  • same role different emotes
  • handle new user reactions on startup
  • handle duplicate emotes
  • way to remove emote -> role mappings
    • @bot remove-reaction-role :emote: <message-link>
    • respond to message with emote -> role mappings with @bot remove-reaction-role :emote:
    • @bot remove-reaction-role :emote: -> remove if only one exists & prompt for choice when multiple exist
    • @bot remove-reaction-role -> list all, allow deletion via reactions | when theres multiple with the same emote on different messages, make it a 2 step process
  • clean up
  • notify success/failure
  • fix-reaction-roles command
  • spread on_event over multiple actors (per guild)
    • hold guild roles in actor state
    • hold emote -> role mappings in actor state
    • handle gateway role changes
      • GUILD_ROLE_CREATE
      • GUILD_ROLE_UPDATE
      • GUILD_ROLE_UPDATE_BULK
      • GUILD_ROLE_DELETE
    • handle bot leaving/getting removed from guild
  • proper grom gateway supervision

bug-fixes#

  • restart after crash / supervision
  • bot giving itself all roles
  • occasional ssl issue WARN #(charlist.from_string("Actor discarding unexpected message: ~s"), [charlist.from_string("Ssl(Sslsocket(//erl(#Port<0.17>), //erl(<0.159.0>), //erl(<0.158.0>), GenTcp, TlsGenConnection, //erl(#Ref<0.3355478690.2935619588.73249>), Undefined), <<129, 42, 123, 34, 100, 34, 58, 123, 34, 104, 101, 97, 114, 116, 98, 101, 97, 116, 95, 105, 110, 116, 101, 114, 118, 97, 108, 34, 58, 52, 49, 50, 53, 48, 125, 44, 34, 111, 112, 34, 58, 49, 48, 125>>)")])
  • CouldNotDecode(UnableToDecode([DecodeError("Bool", "Dict", [])]))