Hello. I made a script where you can sign yourself in a book and it will stay forever. However its not working. Every message you write in it is getting duplicated. For example

You write message "Hello"

when you leave the game and open book again in the "Other messages" gui there is 2 hello's.

You write 2 messages "hello" and test.

when you leave the game and open book again in the "Other messages" gui there is 2 hello's and 2 "test"

Here's the script because i don't know what to do.

local Datastore = game:GetService("DataStoreService")
local OurDataStore = Datastore:GetDataStore("BookSigns11")
local iDataStore = Datastore:GetDataStore("iDataStore11")

local MiejsceNaNotke = {}

game.Players.PlayerAdded:Connect(function(NewPlr)
	repeat wait() until NewPlr.Character and NewPlr.Character.HumanoidRootPart and NewPlr.PlayerGui and MiejsceNaNotke ~= nil
	print(MiejsceNaNotke)
	for i, v in pairs(MiejsceNaNotke) do
		if v then
			local TheTemplate = script:WaitForChild("Message"):Clone()
			TheTemplate.Text = v
			TheTemplate.Parent = NewPlr.PlayerGui.BookGui.Background.Other.OtherMessagesFrame
		end
	end
end)

local success, i = pcall(function()
	return iDataStore:GetAsync("key")
end)
if not i then
	print("failed loading i value")
	i = 1
end
print("i: " .. i-1)
local success, pages = pcall(function()
	print("D")
	return OurDataStore:GetAsync("key")
end)

if pages then
	for page = 1, i-1 do
		local ReadyToShowMessage = pages[page]
		for i, v in pairs(pages) do
			table.insert(MiejsceNaNotke, v)
		end
	end
else
	pages = {}
end

function save_note(player, text, Template)
	local texttext = game.TextService:FilterStringAsync(text, player.UserId)
	local texttexttext = texttext:GetNonChatStringForBroadcastAsync()
	local ActualText = texttexttext.." by "..player.Name.." Date: "..os.date("%x")
	table.insert(pages, ActualText)
	local success, err = pcall(function()
		OurDataStore:SetAsync("key", pages)
		i = i + 1
		iDataStore:SetAsync("key", i)
	end)
	if err then
		print("Error while saving data! " .. err)
	end
end
game.ReplicatedStorage.Book.Filtering.OnServerEvent:connect(save_note)

game.ReplicatedStorage.Book.Filtering.OnServerEvent:Connect(function(Player, Message, Template)	
	Player.DidWrote.WroteAlready.Value = true
	local FilterText = game.TextService:FilterStringAsync(Message, Player.UserId)
	local FilteredText = FilterText:GetNonChatStringForBroadcastAsync()
	
	Template.Text = FilteredText.." by "..Player.Name.." Date: "..os.date("%x")
	
	local ReadyMessage = Template
	
	for i,v in pairs(game.Players:GetChildren()) do
		if v then
			local ClonedReadyMessage = ReadyMessage:Clone()
				ClonedReadyMessage.Parent = v.PlayerGui.BookGui.Background.Other.OtherMessagesFrame
		end
	end
end)