Not sure where this should go, if this is not a good place for this topic then please redirect me in the right direction.
For the last couple of hours my game has been flooded with scam bots. Not sure why, I just used the new sponsor game thing for a couple thousand Robux and my game is being destroyed.
They join, send a bunch of links and then leave and 2 new ones join and repeat.
It’s been going on for hours, and I don’t know what to do about it.
If there are any ideas let me know.
It really is destroying my game, and it is super annoying.
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.
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)
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
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.
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.
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.