More documentation is needed on limitations of the Ban API

As a Roblox developer, I would like to see documentation on the limitations applied to the newly released banning API. Mainly, I would like more documentation on the following:

What users cannot be banned?
I know for a fact that UserId 1 can not be banned, but I have no clue why. I would love if there could be further documentation on which users can not be banned and why.

What occurs when a banned user attempts to join?
Do any signals get fired that could identify this case? What happens if they attempt to teleport to the place? Do they get a teleport failure or simply get kicked out entirely?

Are ban private-reasons filtered?
It is stated that, at the minimum, public ban messages are filtered, but it is never clarified if it also applies to private ban reasons, too.

What occurs if a user gets banned while in-experience?
Both when a player is in the current server and a different server. Is this reliable?

Is there any way to determine if a player is banned?
This specifically relates to alt-account detection. Does the OpenCloud API for checking UserRestriction status factor this in? Do the lua APIs factor this in?

It would also be convenient to have the FAQ on the DevForum announcement also mentioned somewhere on the documentation site

5 Likes

maybe cuz thats the official roblox account lol

i dont believe any remotes get fired. the user is just simply banned on the server backend

i believe its when the user tries rejoining the game they will be banned (i could be wrong)

I do agree this is a very poorly and half-made API that needs more work on.

1 Like

The player is banned… They get kicked out of the game and are shown the displayReason.

This one was answered in the exact devforum post you linked to…

I cant be certain, but I’m pretty positive they are not going to be filtered. Roblox says that they can be used for scriptable logic, so filtering something which will never be shown to the client wouldnt make sense.

1 Like

My question is whether this ‘eviction’ is guaranteed and/or does it work when the function is fired via OpenCloud / a separate server. This isn’t mentioned very well, and given that we can’t delete ban-history logs, I’d rather not be forced to test it out to ensure it works.

Sorry it seems I mixed up the inheritance and excludeAltAccount parameters, I’ll edit my OP; thanks for helping me notice. :sweat_smile:

The question is mainly whether there are other accounts that have this unbannable state (since this is important to ensure we don’t continously try an operation which will never succeed) and why this restriction even exists; developers can already ban such users via their own methods and using UserId 1 for testing purposes seems like it would be a common use-case.

1 Like

What would prevent you from creating a new test place and trying out the API there? I agree the information from DevForum should also be available on the documentation though, or at least a link to the announcement.

1 Like

To clarify a bit more, the issue isn’t solely the fact that I need to run a test to see if it works but rather that the test would need to be done at-scale to account for varying server conditions. Unfortunately, I do not have the time or resources to run a test at such a large scale.

1 Like

I don’t understand the reason for using user id 1 for testing as that’s the official roblox account, or even the reason of testing in the first place. You just call a function and that’s it.

As for other users that may have this unbannable state, it’s most likely any roblox administrator and the game owner.

My question is whether this ‘eviction’ is guaranteed and/or does it work when the function is fired via OpenCloud / a separate server.

Yes, it is guaranteed that we will attempt to evict the player from any server, whether it’s from the server you called the engine API, another server, or via OpenCloud.

What users cannot be banned?

Your bans will not affect any accounts that are necessary for Roblox to moderate your experiences. I’m not aware of any other restrictions we have in place. But in general, you should be able to trust that you are able to ban any legitimate user.

What occurs when a banned user attempts to join?

The banned user will be prevented from joining the server altogether. The response to their game join request will be simply the information needed to display the length of the ban and the DisplayReason you have supplied. There are no signals fired in game because they will not be able to join the game in the first place.

Are ban private-reasons filtered?

No, and I will clarify this in the documentation in the next few days. Stay tuned!

What occurs if a user gets banned while in-experience?

They will be immediately evicted from all servers within the scope of your ban (so potentially in another place ID if you elect to do a universe wide ban). It is reliable, and we monitor its telemetry to see its success rate.

Is there any way to determine if a player is banned?

Currently, you will need to use Players.GetBanHistoryAsync and see that their most recent action has Ban set to True.

It would also be convenient to have the FAQ on the DevForum announcement also mentioned somewhere on the documentation site

That makes sense. I will see where it makes sense to put it.

1 Like

I assume this is a silent failure rather than the errors we receive when attempting to ban UserId = 1? Attempting to ban the Roblox official account results in an error and since we use automatically retrying pcalls (in case a HTTP error occurs); these cases where there is a guarantee that the operation will never succeed will result in an infinite loop.