## Development ```sh 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 - [x] add roles - [x] `@bot add-reaction-role :emote: @role ` - [ ] respond to message with `@bot add-reaction-role :emote: @role` - [ ] `@bot add-reaction-role` step by step process - [x] same role different emotes - [ ] handle new user reactions on startup - [ ] handle duplicate emotes - [ ] way to remove `emote -> role` mappings - [ ] `@bot remove-reaction-role :emote: ` - [ ] 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 - [x] clean up - [x] notify success/failure - [x] fix-reaction-roles command - [x] spread on_event over multiple actors (per guild) - [x] hold guild roles in actor state - [x] hold `emote -> role` mappings in actor state - [ ] handle gateway role changes - [x] GUILD_ROLE_CREATE - [x] GUILD_ROLE_UPDATE - [ ] GUILD_ROLE_UPDATE_BULK - [x] GUILD_ROLE_DELETE - [ ] handle bot leaving/getting removed from guild - [ ] proper grom gateway supervision #### bug-fixes - [x] restart after crash / supervision - [x] 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", [])]))