lilserf / bot-on-the-clocktower

Bot to assist with playing Blood on the Clocktower via Discord
MIT License
22 stars 4 forks source link

daytime channels not having any @everyone restrictions applied #176

Closed CharliW90 closed 10 months ago

CharliW90 commented 10 months ago

when I create a town, the category channel for daytime channels doesn't seem to have appropriate permissions set- no change to what @everyone can see is made (i.e. every permission for @everyone is set to '/') villager permissions appear to be correct (they just have 'View Channels' set to a tick) storyteller permissions are all set to a '/' which appears incorrect - they need view permissions too, as well as probably some extra permissions like manage, move members, mute members ??

not sure what the intended permissions were...

to be clear: viewing the server as @everyone I can see the daytime category, the control channel (!?) and the daytime voice channels, but it appears I cannot join them viewing the server as the @<townName> Villager role I can see the daytime category, the control channel (!) the chat channel, and the voice channels, but it appears I cannot join them viewing the server as the @<townName> Storyteller role I can see the daytime category, the control channel, NOT the chat channel, and the voice channels, but it appears I cannot join them, and I can see the night category and all its channels, but cannot join them

if the only change I make is to set the daytime category @everyone to be 'x' for View Channels, we get the below behaviour: viewing the server as @everyone I can see the daytime category and only the control channel (!?) viewing the server as the @<townName> Villager role I can see the daytime category, the control channel (!) the chat channel, and the voice channels, but it appears I cannot join them viewing the server as the @<townName> Storyteller role I can see the daytime category, the control channel, NOT the chat channel, and NOT the voice channels, and I can see the night category and all its channels, but cannot join them

magroader commented 10 months ago

Hey Charli, do you know what command parameters you used for createTown? Some stuff is optional and I’m wondering what path you went through.

There is a bit of a confusing thing in that you can provide server-wide roles for “people who like storytelling” and also “people who like playing BotC” - this is for servers (like mine!) with a broader purpose than playing BotC, to hide everything from members who aren’t interested. If you didn’t provide those, then I could see everyone being able to see the control channel by design.

Also, many channels are intended to be hidden while no game is in progress, so maybe that’s what you’re seeing in some cases.

Also, are you an admin of the server? Are you using the Discord feature to view the server “as” a particular role?

That said, I’ll need to take a closer look at what you reported to figure out what went wrong exactly. For example, you shouldn’t be able to see the night channels when a game is not in progress.

magroader commented 10 months ago

(It’s certainly possible that Discord changed its behavior somehow and I need to provide more permission specifications to ensure, say, you can join the right channels or whatever.)

Oh another question, do you have any server-wide “everyone” permissions that are non-default? Maybe the bot is making some assumptions that those are at defaults when really it should be specifying them.

CharliW90 commented 10 months ago

aaah, perhaps what I'm seeing is due to a game not being in progress, yes... I will try triggering a game to see how the behaviour changes... but still, to answer your questions:

the server has no special permissions for @everyone yes, I was using discord's "view as role..." option to see what it looks like to others only the storyteller and/or admin could see the nighttime channels, but a game was not in progress I passed no additional parameters to the command, just /createtown <townName>

I will trigger a game, and let you know if it does stuff that makes sense

CharliW90 commented 10 months ago

okay - once a game was triggered, there was no real change... as @everyone I could see the 'control' channel, I could not see the chat channel, and I could see but not join the daytime channels... I could also see ALL of the nighttime cottage channels, but not join any of them; this is then the same for the Villager role except that the chat channel is visible to a Villager; this is the same for the storyteller except that the chat channel is not visible.

Maybe I'm misunderstanding, but my expectation would be: villager can see the day channels, but not the control channel and not the night channels storyteller can see the day channels, the control channel, and the night channels

triggering night did push me into a cottage that I would have otherwise been able to see, but not join, as a villager role

CharliW90 commented 10 months ago

set up a whole new town, and got slightly better behaviour...

now, @everyone can see the control channel and the town square channel only, but cannot join the voice channel, which prevents the game from starting... this feels a bit broken... what the storyteller role can see makes sense if they also have the villager role - I wasn't expecting that behaviour, but I guess that's how it works? neither the villagers nor the storyteller can join any of the chat channels, even when a game is in progress - they all show as locked when using discords "view as"

magroader commented 10 months ago

You might be confused about what these roles are for. They are managed by the bot and you should not be granting them to people.

That said, it sounds like there must be some work to do for the parameterless createTown.

here is how it should work in that case:

I’m not sure why you would have unjoinable channels, or channels you can see when you’re not supposed to be able to.

if you want to hide the control channel from players, you need an extra parameter to createTown to set up a server-wide “I like being storyteller” role that you manage yourself

CharliW90 commented 10 months ago

fixed it! your explanation made sense, and pointed me to the problem in my server setup! thank you

magroader commented 10 months ago

Oh wow! Uh, what was the problem?

it definitely sounds like there’s still a bug here somewhere (like just /createTown with no params) but I haven’t tried it yet to figure out what’s wrong :)

CharliW90 commented 10 months ago

the bug was, embarassingly, a role assigned to all 'new members' on the server, which restricted them from doing things, and which another bot was applying / managing - somehow it meant that villagers / storytellers could not 'join' voice channels, even though @everyone permissions weren't changed... the server is a mess tbh - I may just create a BotC-only server - sounds like it would work better??

magroader commented 10 months ago

A BotC specific server could work!

The bot could also be more specific with allowing joining channels - it does currently assume that users can join channels they can view! Ie it doesn’t expect the kind of restrictive role you have set up. Dunno if the restriction would override the BotC role permissions or not, haven’t tried it!

CharliW90 commented 10 months ago

My understanding is that for the override to work, the BotC roles would have to be higher in the heirarchy than this 'more restrictive' role - could be a real pita to try to account for in your code, but it certainly wouldn't hurt to at least explicitly allow view and join.