Skip to content

Conversation

@christolis
Copy link
Member

@christolis christolis commented Jan 4, 2026

Closes #1113.

Showcase

Screen.Recording.2026-01-04.at.02.35.21.mov

Configuration changes

Property Description Type
dynamicChannelPatterns List of voice channel patterns to manage dynamically. List[String]
archiveCategoryPattern The archive category name in which archived voice chats will go under. String
cleanChannelsAmount When an archive cleanup is triggered, how many of the oldest channels to remove. int
minimumChannelsAmount How many channels the archive category should have before a cleanup is triggered. int

⚠️

The category should obviously only be visible by moderators, so maintainer please make sure that's the case.

Co-authored-by: Suraj Kumar <76599223+surajkumar@users.noreply.github.com>
Signed-off-by: Chris Sdogkos <work@chris-sdogkos.com>
@christolis christolis requested a review from a team as a code owner January 4, 2026 00:31
@christolis christolis marked this pull request as draft January 4, 2026 00:31
Using 'Logger#info' is too spammy in the console, use 'Logger#trace'
instead.

Signed-off-by: Chris Sdogkos <work@chris-sdogkos.com>
Signed-off-by: Chris Sdogkos <work@chris-sdogkos.com>
Signed-off-by: Chris Sdogkos <work@chris-sdogkos.com>
@christolis christolis added config-changes if your PR contains any changes related to config file java Pull requests that update java code enhancement New feature or request labels Jan 4, 2026
@christolis christolis marked this pull request as ready for review January 4, 2026 11:09
tj-wazei
tj-wazei previously approved these changes Jan 4, 2026
Copy link
Contributor

@tj-wazei tj-wazei left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Happy with this and have tested.

@tj-wazei tj-wazei self-requested a review January 5, 2026 15:50
@Zachdehooge
Copy link
Contributor

Would love to carry this feature forward, got permission from @christolis

@Zachdehooge
Copy link
Contributor

Just some things to note:

"Support/Studying Room" with no numbers produces the desired result of TJ creating a temp channel for the user and deleting it when everyone leaves the channel.

"Support/Studying Room" with any number after it (1,2,3,4) does not produce a temp channel, and the channel itself it deleted after everyone leaves the channel.

This brings me to the question of when this gets implemented, will we have only one channel, "Support/Studying Room", with no numbers? If so, this does not need to be addressed. If there will still be 4 different studying channels as it is currently, this is something that will need to be handled. Just wanted to confirm before tackling that, since it's not really an issue per se if the channel is just "Support/Studying Room" with no numbers

Signed-off-by: Chris Sdogkos <work@chris-sdogkos.com>
Currently there is no way to moderate ephemeral voice channels. Members
could very easily break the rules in the channel, send NSFW content and
it can go undetected by the moderation team.

Introduce a new archival system where the ephemeral voice channels are
instead stored in an archival category.

Depending on the archival strategy, channels are removed once they are
not needed any more.

Routines are not being used since we are able to get away with
attempting cleanup every time a user leaves an ephemeral voice channel.

This results in superior performance and no scheduling involved.

Do _not_ archive ephemeral voice channels with no contents sent by
members.

Signed-off-by: Chris Sdogkos <work@chris-sdogkos.com>
@christolis christolis requested a review from SquidXTV January 20, 2026 12:01
@christolis
Copy link
Member Author

christolis commented Jan 20, 2026 via email

This is why breaks are important, I committed my previous changes while
being hungry...

Set realistic constant values for CLEAN_CHANNELS_AMOUNT and
MINIMUM_CHANNELS_AMOUNT so that more channels are kept in the archive.

Signed-off-by: Chris Sdogkos <work@chris-sdogkos.com>
SquidXTV
SquidXTV previously approved these changes Jan 20, 2026
The constant name is self-documenting.  If someone wants to make it as
well as other constants in this class configurable later, they can
submit a pull request with _actual reasoning_ instead of bikeshedding
over a defensive comment.

The constant is hardcoded because it's _unlikely_ anyone will want to
change it.  If that assumption proves wrong, it's trivial to refactor.

Signed-off-by: Chris Sdogkos <work@chris-sdogkos.com>
For the purposes of speeding up the process of reviews and since it really
doesn't matter if they are configurable or not (just extra unnecessary
development time), move all the constants into the config.json so that
users who run the bot can easily configure these constants without
touching the code.

Signed-off-by: Chris Sdogkos <work@chris-sdogkos.com>
@tj-wazei tj-wazei merged commit a741f6f into Together-Java:develop Jan 23, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

config-changes if your PR contains any changes related to config file enhancement New feature or request java Pull requests that update java code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Dynamically create and delete voice channels based on activity

4 participants