gwillen / herring

Modern Django and ReactJS based web application for puzzlehunt team management!
MIT License
7 stars 4 forks source link

Destroy voice channels after a puzzle is solved (possibly after a delay) #68

Open Zahariel opened 2 years ago

Zahariel commented 2 years ago

With hunts getting bigger and bigger again, Discord's 500 channel limit is looming alarmingly close. Voice channels for solved puzzles don't really serve that much of a purpose. We should consider destroying them some time after a puzzle is marked "solved".

Notes:

gnprice commented 2 years ago
  • possibly we just want to stop having dedicated voice channels per puzzle and instead implement "voice channels on request" which the bot creates and deletes on command;

FWIW I appreciate having a voice channel exist by default on a new puzzle -- I think it contributes to keeping the use of voice chat low-friction and therefore common.

Zahariel commented 2 years ago

FWIW I appreciate having a voice channel exist by default on a new puzzle -- I think it contributes to keeping the use of voice chat low-friction and therefore common.

Yeah, I do too, just wanted to throw out ideas. I don't think this one is really a "good" idea, but if we end up with a hunt with 300 puzzles, it might become a "necessary" idea. I wouldn't enjoy the idea of having to type hb!voice when joining a new puzzle or one which doesn't have a voice channel for whatever reason. But I don't think it's a total show-stopper either; certainly by the end of hunt people are tired of wearing their headsets anyway.

Zahariel commented 2 years ago

Actually I came up with a different and maybe better idea: create a voice channel when the first person joins a puzzle, and delete it when the last person leaves. This is trivial to detect from the bot, and should look exactly the same as always having it, but saves enormously on channels for inactive (e.g. solved) puzzles.

sparkyb commented 2 years ago

As long as voice channel churn (getting created and deleted) isn't going to create problems, then I love this solution.

gwillen commented 2 years ago

I think we probably want to destroy the voice channel before the last person leaves, because I think most puzzles have stragglers in them ~forever because people are bad about leaving.

sparkyb commented 2 years ago

Strictly speaking you only need the voice channel when >1 person is in the text channel, so you could create it when the 2nd person joins and destroy it when the 2nd to last person leaves. But this does not address gwillen's very valid concern when there are more than 1 stragglers.

Zahariel commented 2 years ago

I don't know. I leave channels pretty aggressively so I don't know what to do about stragglers. I liked the purely symmetric conditions because it means we don't need to provide an escape hatch for "whoops I'm still here and I want it back"; that situation simply can't happen. But I don't know how prevalent stragglership is.

sparkyb commented 2 years ago

It only matters in the case that there are so many puzzles we run out of channels. So your proposed solution is good enough until we hit that point. Rather than trying to do something complicated like "after X minutes of inactivity", I am in favor of a manual action we can trigger only in the case that it is really needed (which it may not be in most years). As far as what the manual action does, I would have said "delete all voice channels associated with solved puzzles". That does break some of your symmetry if anyone actually wanted those channels though. So instead, how about "kick stragglers out of solved puzzles". The voice channels will then automatically get deleted by the normal rule. If anyone was straggling on purpose, they can always re-join (and get a new voice channel if there are multiple of them). If there was a puzzle that just got solved people might be within that 5 minutes of wrapping up, but since it is a manual action, you can just be careful not to do it with a minute or so of a puzzle being solved if you're worried about that. And if not, oh well, this should be rare anyway so that small group of people can deal with it.

gwillen commented 8 months ago

This may be obviated by switching to shared voice channels for everything, if we decide to keep that.