You could create one of those scripts where your account must be at least a certain number of days old to join, other then that there isn’t a whole lot you can do about them joining the game.
Alright, I made a script to prevent accounts under 30 days old from joining. Hopefully that helps. Thanks.
You can check for the accountage but maybe you can check the messages too. With plr.Chatted and string.match. Then you can kick the players.
The bots are stolen accounts and most may be older. Also scam bots can return back in any moment. I suggest making the game cost money, it can prevent most edgy players.
Another idea is make a script that check the chat if the same phrases are send more than 5 times it will kick them out.
maybe see what the messages say and blacklist some of the words(like bypassed scam sites) then use a script that use the player.Chatted
event and check if the message parameter contains one of the blacklisted words if it does then find a way to handle them properly(like kicking/banning them or somehow delete the message)
Possibly use a regular-expression type system for the usernames? In your case they seem to all be named catbot_\w
.
This would be a constant game of cat/mouse and is likely not worth the time to maintain it, but it could help.
So I tried a few ideas you guys have given, and it works sometimes.
The account age thing didn’t do anything.
The username check does work, except the issue is, is the bots send messages faster then the game’s PlayerAdded event somehow. So they send the message’s then get kicked. Not sure what to do about that.
if player.AccountAge <= 30 then
player:Kick("\n".."Account is too young to play, account must be > 30 days old.")
end
if string.find(player.Name, "catbot") then
player:Kick("Your username is possibily a dangerous bot account")
end
Could you modify the ChatService instead?
Inside of ChatService, you could implement all of your checks. If the check fails, return a message (like the “You must wait x seconds before sending another message” when you send messages too quickly.
This would have the positive effect of not outright banning players who fail the check without being a spam bot in case of accidental false positives.
I have a tip that could help you here. Use @lesserfantasy’s “shadow-muting” feature he designed for me alongside whatever automated detection system you could put in place to single out the bots. I implemented his code into my own shadow-mute manager tool, but that’s done entirely manually, like a sort of moderation.
What this would do is make the bots not switch accounts/tactics after their owner realizes they’ve been getting banned or muted, since with this solution he won’t know they’re being muted.
Just add a detour to the saymessagerequest handler and drop all messages which contain the site URL. Alternatively you could ban them instead.
You should make a custom chat, and have it be so if the player isn’t x amount of days old, they can’t chat yet
Not the best method, I came up with it on he spot
This seems to work well enough for me. Thanks.
if (speaker) then
if string.lower(message):find("blox.page") or string.lower(message):find("robux") or string.lower(message):find("browser") then
playerObj:Kick("Please refrain from talking about ROBUX.")
return false
else
return speaker:SayMessage(message, channel)
end
end
I would have to add more checks, and a proper table of illegal words, but this worked well. Probably a bad kick message but honestly I am angry Thanks
Also thanks to @yname for making me look at chat service.
Yeah… this is a bad idea. Subtlety is key in making your defense work best. This is a lesson I learned the hard way 2 and half years ago when my game first blew up, where I put in a very strict but not well-tested security stipulation that kicked innocent people very often. Read the post I made in this thread a few minutes ago.
Probably a poor idea to use inappropriate content in user-facing content. Possibly remove the last word of the kick message?
I did, I really just added that in the dev forum post.
by the way, you can do message:lower():find(“blox.page”) incase you didn’t knew
Oh catbot/cotbot? That bot farm downvote botted my game a few weeks ago. Sounds like they’re becoming a problem. I wonder if Roblox is aware.
This is more of a temporary fix, since they can just change the URL that they’re posting.
Roblox needs to add some ~5 second minimum for players to be able to chat or vote on a game.
I don’t really recommend working directly with remotes intended for the Lua Chat Service if you are making any kind of solution that tackles the messages being sent. There’s more than enough API members for you to work with so that you aren’t reinventing any wheels or doing anything improperly. There are lots and lots of ways, with the API, to prevent these kinds of messages from being sent.
For example, a Command Function can be written in such a way that it rejects the processing of certain messages based on their content or other parameters of your choosing. You shouldn’t have to use SayMessage and instead leave it to the Lua Chat System to handle message sending if a message doesn’t get flagged. You can also kick them out of the server if you like, but probably not necessary since they leave the server on their own after sending their messages.
Why did you? Don’t use profanity on public sections.
Hey @Boogagle!
I offer too that way, but… the bad thing is… that method has been bypassed, sadly. (@GreekRootWord)