Lots of scam bots in my game

Alright, I made a script to prevent accounts under 30 days old from joining. Hopefully that helps. Thanks.

3 Likes

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.

1 Like

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.

1 Like

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
1 Like

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 :pensive: Thanks
image

Also thanks to @yname for making me look at chat service.

1 Like

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 :smiley:

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.

1 Like

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.

1 Like

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.

1 Like

Hey @Boogagle!

I offer too that way, but… the bad thing is… that method has been bypassed, sadly. (@GreekRootWord)

So, I’ve been kinda concerned because my sponsor still ended, and my game is still getting visits. My game went from 8k visits to 38.4k visits in the last 24 hours. I’m worried they are gonna start downvoting my game or something.

Also, it says the bots are on console, and I literally have console disabled on my game so that must be faked.

They still haven’t stopped, it’s like 30 bots a minute. It’s absurd

1 Like