Add run-time API for handling player moderation

Why isn’t there built-in moderation for Roblox game owners on the website?

Think about it. Isn’t it super odd that you have to depend on a script inside your game to do your game’s moderation? Why can’t I just go to the website, click on my game’s webpage, and add a user to its ban list?

For a platform that focuses on child safety first, you would think adding the built-in ability for game owners to moderate their games would be the very minimum.


I propose web tools for built-in moderation and a ModerationService to tie it to in-game.


The web tools would be pretty straight forward. In the dropdown menu for your game you would simply click Moderation which would take you to the tools.

image
Example of how it could look

From within the menu, you would have the ability to add users to ban lists, mute lists and be able to kick any user from your game.

Bans could be forever, bans could be time based as well. For example you might only want to ban someone for a day for their behavior. Same could be done for mutes.

ModerationService

To tie it all together, and to make this idea work properly, I propose a ModerationService for in-game action.

Examples could be:
ModerationService:AddBan(int UserId)
ModerationService:AddTemporaryBan(int UserId, int Hours)
ModerationService:RemoveBan(int UserId)
local BanList = ModerationService:GetBanList()
ModerationService:KickPlayer(int UserId) ← allows a player to be kicked from a different server
ModerationService:AddMute(int UserId)
ModerationService:AddTemporaryMute(int UserId, int Hours)
local MuteList = ModerationService:GetMuteList()

This would allow for very powerful built-in moderation for Roblox developers that does not rely on developers making their own moderation suite scripts, or developers using others’ moderation suite scripts.


All in all, I think this is unavoidable and should be added in the future. Every service or website I know of has some sort of built-in moderation.

For new developers who come from outside Roblox, who aren’t used to the idea of having to insert custom moderation scripts, not having built-in moderation must be really weird.

Thanks for reading.

81 Likes

While I personally think this would be sort of useful it has been discussed before and I’ve kind of decided that this idea is not worth it. It’s not very hard to implement your own ban/mute system and having a whole new service like this seems somewhat pointless because of that. The Roblox chat already supports muting members and you can achieve it without modification of chat modules (to be honest most things you can achieve without forking the chat scripts).

Similarly with the chat script I personally think if something like this were to be added it should be in the form of some kind of lua library. There are already unofficial libraries to do exactly what you ask for but I can see an official library definitely being a good addition to Roblox. Perhaps it could go along with the chat modules.

3 Likes

Well I do believe I’ve clearly described the advantages of having a built-in system over using existing in-game moderation scripts already.

The fact that it doesn’t exist yet is quite frankly very surprising to me.

3 Likes

I mean, you can easily achieve both timed and permanent banning using data stores. Also muting shouldn’t be a problem as any player can ban any other player anytime in the game.

One useful side of such a thing could be IP banning, basically preventing exploiters from keep joining using alternative accounts. This is impossible to achieve with the information we are allowed to have. Other than this, I don’t think it is needed.

4 Likes

The point isn’t that it’s impossible to do it through a custom way now. I’m very aware that it is possible to do.

The point is that it should be built-in to begin with.

2 Likes

This is definitely a good idea.

First of all, just because it’s possible in Lua doesn’t mean it shouldn’t be handled internally. Why are developers constantly reinventing the wheel?

Secondly, being able to moderate from the website like that would be a huge bonus.
(Provided that they make it mobile friendly)

9 Likes

As a social-first platform, it’s very surprising to me that Roblox has no built-in or default way of muting, kicking and banning players. Since these basic functions are useful to a majority of developers, I’d expect a rudimentary moderation system to be in the game by default, instead of relying on developers to come up with their own systems of ensuring bad actors, exploiters and cheaters can’t access their games.

When multiple devs have to recreate the exact same system, I think that’s a deficiency that should be built into the platform.

I remember we actually had this back when PBS servers were a thing.
“Personal Build Servers”.
You could “Whitelist”, “Blacklist” and “give permissions, for moderation in game”.
The moderation in game, would let people kick at least, if i remember right.

6 Likes

It’s not just that you can already make this in Lua.

You’re still proposing an API which will require them to either make or insert scripts to achieve the same result you can right now. Now for my troubles with your proposed API, ignoring the whole “but we can already do this” stuff…

AddBan, AddTemporaryBan and RemoveBan are okay, no real contentions here.

Looking at GetBanList, what? I don’t see a use case for this nor does it seem scalable for giant games which could potentially have a lot of users banned or temporarily banned.

KickPlayer being able to kick someone in a different server seems pretty nifty, and I like the idea, but I also don’t see an use case for this to be run within a game script unless it’s done via user input (in which case just use web panel?).

For AddMute and AddTemporaryMute however I don’t think this is useful either. What would these do? You can’t really apply these to anything but the default Roblox chat service which would also have to implement the checks in their Lua code somehow. It’d be more like a “suggestion” tag list for any other custom implementation. Adding to that, even if you make it so other API such as Chat API returns false to accomplish your goal globally, it would be hard to differentiate between who is muted and who has privacy settings enabled.

My contentions with GetMuteList are the same was with GetBanList.

Finally, I like the idea of a web panel to be able to moderate from. Kicking users or giving them game bans through it sounds like a fancy idea I dig.

3 Likes

The idea is that you won’t have to put any scripts in your game to use moderation functionality. If you’re talking about Roblox having to insert scripts, well, writing code is kinda their job isn’t it? Having one global platform for moderation rather than multiple user-made moderation scripts seems like something Roblox should be interested in. Also for outside appearance. Imagine telling someone’s parents that their kid playing Roblox can only moderate their own game by inserting a script he’d have to find and trust. That’s a bit weird honestly. Why not cut the middle man?

Looking at GetBanList , what? I don’t see a use case for this nor does it seem scalable for giant games which could potentially have a lot of users banned or temporarily banned.

It’d be pretty useful for creating a moderation suite in-game using this API. It’s not strictly necessary but why limit to just the website or just in-game if you can have both :slight_smile:

For AddMute and AddTemporaryMute however I don’t think this is useful either. What would these do? You can’t really apply these to anything but the default Roblox chat service which would also have to implement the checks in their Lua code somehow. It’d be more like a “suggestion” tag list for any other custom implementation. Adding to that, even if you make it so other API such as Chat API returns false to accomplish your goal globally, it would be hard to differentiate between who is muted and who has privacy settings enabled.

I can see why this would be a difficult one to sell. Honestly I’d be fine with just a ban list. Figured I’d throw the mute list in there for good measure and I would assume the CoreScripts for the default chat would have to be updated accordingly to make use of this new API.

A C++ API with new backed services feels unnecessary for something like this, as this can already instead be done as a Lua library with existing platform features.

A Roblox supplied library could even be endorsed like other toolbox items. A library could utilize datastore service and could even include a (game admin only) in-game UI or a studio plugin for managing bans.

I feel that would cover most of the concerns raised above while allowing developers to modify it as needed.

2 Likes

A Roblox supplied moderation suite for in-game moderation would be pretty good.

Only downside is that it requires you to be in-game to moderate, rather than moderate from an overarching position like the website. I still think the website would be a really proper place for this to exist.

There may be a another feature ask there for developer defined external game management tools. :slight_smile:

1 Like

According to a previous discussion on this topic (from memory), Roblox does not want to encourage user-driven moderation. Having users banned from games serves little purpose since things like exploiting and abusive behaviour are meant to be handled by the account-based moderation system. There are exceptions, like for example disruptive players in clan games, but they are relatively small and admin scripts do the job just fine. Implementing this feature would create a bad user-experience with probably more players than ever being banned from games.

However, I can see the utility of being able to moderate from the website, reduce development time, and provide a consistent experience with and a trusted method to implement common functionality. Roblox games themselves have become increasingly populated and commercial, so I think this might be appropriate now.

Lua widgets on the website hooked up to universe scripts in a client/server relationship? :wink:

4 Likes

Here to bump. We’d love to use something like this for Jailbreak. It’s archaic we have to rely on in-game code to try and ban users. Code that can sometimes be bypassed with tricks.
Allow us to IP Ban users from our games. Exploits are out of hand in competitive games on the platform.

6 Likes

I think that personally creating your own Lua library is better. You just have to do it right, and simply kicking is enough. I think it would be much better to do some sort of device finger printing, such as device ID’s or something linked to the PC’s hardware. IP banning really isn’t that effective in most cases and will cause more issues to arise.

I genuinely hope you didn’t call IP banning ineffective and advocate for something related to the hardware instead… both of those things can be spoofed. Whether or not they can be spoofed is not the point of asking for these tools, and equally why they are still used in games, software and services off of Roblox to this day despite that.

You’re welcome to create a resource if you believe you know how to “do it right” and explain why you think that “kicking is enough” because I sure don’t feel like those are effective measures against cheaters in my experience. I have no way to deal or help get real consequences applied at all.

We need to stop with this moot catch-all phrase “it will cause problems”. Explain yourself. If we as developers do not push for Roblox to provide us native tooling that is a cornerstone to every other online space, let them hand-hold us and simultaneously not empower us to have better control over our experiences/communities and throw around empty phrases like this, they will continue to not address our exploiting issue more aggressively. Everyone loses in the end with complacency.

1 Like

Developer moderation integration should be improved even something minor like this would be useful as if a ROBLOX moderator was investigating an account they could see what games they are banned from, also helps out less experienced developers. ROBLOX should be providing more tools for developers to integrate with assist with moderating bad actors.

Also to add on to the original suggestion, some sort of way to forward information to the report on a player.

local MuteList = ModerationService:GetMuteList()

would be too much load for the server to recover everyone’s Mute List, you can just check to retrieve the Local Player’s Data only. Also

ModerationService:KickPlayer(int UserId)  

This can already be done using Player:Kick("Message") but this could have a different purpose like allowing them to Leave or Connect to a different server without reopening the Roblox Player.

They can also use Mac Address on top of IP Address because the VPN I use seems effective to evade Discord bans. Even if the user does use a VPN they will still have to change accounts. We already know Roblox stores Mac Addresses for Bans, just look at Ruben Sim.