Blueberry v1.11 — A new way to display punishments

can i record a tutorial for youtube of a anti toxic module for chat with blueberry auto-warning?

That would be great! I’d like to see it too if you do this!

1 Like

Never trust the client, the simple solution is quite simple!

Experience A: Main Game

Experience B: Ban land!

If a player is banned, teleport them to Experience B, this prevents them from playing Experience A, trying to bypass it, etc.

The suspect cannot interact with the server if punished, even if they bypass the screen (UI). The character deletion and chat restriction is handled by the server.

I know I said this before, but Blueberry definitely should have a check to prevent abuse of this.

Abuse of what? dosent blueberry disconnect all server interactiobs with the banned user?

I do not mean abuse in terms of a banned player. I mean abuse in terms of other authorized people that can use the panel to pban anyone.

We intend to make a check so you are not able to moderate the game owner via the panel, however, we are not looking to restrict moderation based on ranks, as this might differ from one group to another.

hi im editing my video but here is my chat module code

--[[

Made by Watercolor Studios (paulocezarnbr)

This is a custom chat filter with auto warning using Blueberry API

Dont repost my scripts (you dont need to give credits if you use this in your game)


]]


local API = require(game:GetService("ServerScriptService"):WaitForChild("Blueberry"):WaitForChild("Data"):WaitForChild("API"))

-- Bluebbery API require

local Settings = require(game:GetService("ServerScriptService"):WaitForChild("Blueberry"):WaitForChild("Settings"))

-- Bluebbery settings require


local filterList = {{"ez", "GG!"},
                   {"ur bad", "WOW You are the best!"},
                   {"makaka", ""},
                   {"smt", ""},
                   {"cu", ""}}

--[[

Blacklist list

example:
                   {{"Bad word", "Good word"},
                   {"Bad word 2", ""}}
                  
]]


local function filter(speakerName, messageObj, channelName) -- filter function

	for i, filterWord in pairs(filterList) do -- loop

		if string.lower(messageObj.Message):match(filterWord[1]) then -- check if the word is blacklisted

			local name = tostring(speakerName) -- player name
			local reason = tostring(Settings["Default Warning Reason"]) --reason
			local modName = tostring(Settings["Organization Name"]) --mod name

			messageObj.Message = filterWord[2] --change bad word to good word
			task.wait() --wait
			API:createWarning(name, reason, modName) -- create warning using api

		end
	end
end

local function Run(chatService) -- run function
	chatService:RegisterFilterMessageFunction("customFilter", filter) --Registers a filter function to the chat identified by functionId. Any changes to the message will persist and be displayed when the message makes it through all of the other filter functions. This function is passed the speaker’s name, the message object, and the channel the message originated in.
end


return Run -- return run function


1 Like

Looks great! Can’t wait to see the final result!

1 Like

hi i finished my script and edited the video (i will make more things with your API)

here is my video:

2 Likes

Whats the point of protecting the gui from being deleted?
if a exploiter says closes the gui whats the harm in that seems like a pointless waste of time

1 Like

There is a reason for this, exploiters can simply still use remoteEvents, etc. while still connected to the server.

Why would I need to do this, seems pretty suspicious if you ask me?

You can run multiple lines of code at once, an easy bypass of your system. Also, I’d assume you are also accounting for the Visible property

Is this via :SetCoreGuiEnabled? If so this is an easy bypass.

Player:LoadCharacter()

I’d hope these are secured on the server, otherwise this is literally an exploiter’s dream…

No offence, but the default colors don’t look too nice, maybe also shift to a darker color palet for the warning, like your control panel.

1 Like

We check the product version via HTTP GET.

This is only partially active - the precautions are being handled by the server (character unspawn, chat disabling, UI multiplying.

Not at all. We know that would be really easy to bypass, so we use another server-sided method.

This will not work. At least it was tested and the character respawning failed.

Of course they are. You can check the source code.

We offer 2 themes; dark and light. You can also modify the UI whenever you wish to whatever you want it to look like.

Thanks for the honest feedback! We really appreciate it!

This looks great! Thank you for using and featuring Blueberry.

1 Like

There is, indeed, almost no point. Yet, we try to make it so even exploiters will see the UI.

Why don’t you just use MarketplaceService:GetProductInfo and get the version number from the description of a Roblox asset, not only does it reduce pressure on whatever you are hosting your site on, but also does not require HttpService to be enabled!

I’m sorry if I’m misunderstanding but is seems like the client can simply not replicate these changes to the server?

I don’t know if you fixed the in-game ban gui vulnerability but you can constantly delete the player’s character each time CharacterAdded is fired instead of anchoring HRP

The HRP anchoring has been removed since version 1.02. Everything is in changelog comment that is marked as solution.

Indeed. This is why we don’t focus on protecting the UI, but on restricting the player’s interaction with the rest of the server. The UI could be bypassed, but the exploiter’s character would still be deleted their chat removed.

You can always disable the HTTP service, as the system is not dependent on it. We prefer to use a JSON hosted on a 3rd party website to retrieve the version number.