WIP fluxer bot
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

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", [])]))