код выдает ошибку, на вторую итерацию пишет что жертва в контактах не найдена, хотя прошлую итерацию находило и отправляло сообщение успешно. в чем может быть дело? "function dialogMessageSender(geotagModeFlag, victimPhoneNumber, timerLimit, tickLimit, waitingTimeout, messageContent)
	local currentTime = socket.gettime
	local floodIsActive = true
	local sendedMessages = 0
	local contactsId = nil
	local dialogCaption = nil
	local dialogText = nil

	while floodIsActive do
		--sampAddChatMessage("{FFFF00}| {ffffff}Начало новой итерации цикла", -1)
		sampSendClickTextdraw(175) -- Отправить клик по текстдраву
		--sampAddChatMessage("{FFFF00}| {ffffff}Отправлен клик на текстдрав", -1)

		-- Поиск кнопки контактов
		if not contactsId then
			--sampAddChatMessage("{FFFF00}| {ffffff}Поиск кнопки контактов", -1)
			for textdrawId = 2206, 2227 do
				local textdrawText = sampTextdrawGetString(textdrawId)
				if textdrawText:match("CONTACTS") then
					contactsId = textdrawId
					--sampAddChatMessage("{FFFF00}| {ffffff}Найдена кнопка контактов: " .. contactsId, -1)
					break
				end
			end
		end

		if contactsId then
			sampSendClickTextdraw(contactsId) -- Отправить клик по кнопке контактов
			--sampAddChatMessage("{FFFF00}| {ffffff}Отправлен клик на кнопку контактов", -1)

			-- Ожидание открытия диалога телефонной книги
			local startTime = currentTime()
			while not dialogCaption or (dialogCaption and not dialogCaption:match("Телефонная книга")) do
				if (currentTime() - startTime) * 1000 >= waitingTimeout then
					floodIsActive = false
					sampAddChatMessage("{FFFF00}| {ffffff}Тайм-аут ожидания открытия диалога", -1)
					break
				end
				dialogCaption = sampGetDialogCaption()
				wait(0)
			end

			while floodIsActive do
				--sampAddChatMessage("{FFFF00}| {ffffff}Диалог телефонной книги открыт", -1)

				-- Поиск жертвы в контактах
				local victimContactsPos = nil
				local victimContactsName = nil
				
				dialogText = sampGetDialogText()
				
				--sampAddChatMessage("{FFFF00}| {ffffff}Получен текст диалога: " .. dialogText, -1) --333333333333333333333333333333333333333
				
				local startTime = currentTime()
				
				while not dialogCaption or not dialogCaption:match("Телефонная книга") do
					if (currentTime() - startTime) * 1000 >= waitingTimeout then
						floodIsActive = false
						sampAddChatMessage("{FFFF00}| {ffffff}Тайм-аут повторного ожидания открытия диалога тел. книги", -1)
							
					end
				end
				
				for digit, number, name in dialogText:gmatch("%{4a86b6%}(.)%..-%{FFFFFF%}%s(%d%d%d%d%d%d)%s%{4a86b6%}(.-)%s*") do
					sampAddChatMessage("{FFFF00}| {ffffff}Найден контакт: " .. digit .. ", " .. number .. ", " .. name, -1) --333333333333333333333333333333333333333
					if number == string.gsub(tonumber(victimPhoneNumber), "%s+", "") then
						
						victimContactsPos = tonumber(digit)
						sampAddChatMessage("{FFFF00}| {ffffff}Найдена жертва в контактах" .. victimContactsPos, -1) --333333333333333333333333333333333333333
						victimContactsName = name
						break
					end
				end
				if victimContactsPos then
					sampAddChatMessage(tostring(victimContactsPos), -1) --333333333333333333333333333333333333333
					sampSendDialogResponse(32700, 1, victimContactsPos, nil)
					memory.setint32(sampGetDialogInfoPtr()+40, 0, true)
					sampAddChatMessage("{FFFF00}| {ffffff}Отправлен ответ с позицией жертвы", -1) --333333333333333333333333333333333333333

					local startTime2 = currentTime()
					while not dialogText or not dialogText:find("{FFFFFF}Написать сообщение") do
						if (currentTime() - startTime2) * 1000 >= waitingTimeout then
							floodIsActive = false
							sampAddChatMessage("{FFFF00}| {ffffff}Тайм-аут ожидания открытия диалога написания сообщения", -1)
							break
						end
						dialogText = sampGetDialogText()
						wait(0)
					end

					if floodIsActive then
						sampSendDialogResponse(32700, 1, 1)
						sampAddChatMessage("{FFFF00}| {ffffff}Отправлен ответ на запрос написания сообщения", -1) --333333333333333333333333333333333333333

						local startTime3 = currentTime()
						while not dialogText or not dialogText:find("{FFFF00}| {ffffff}Получатель: {FFFFFF}") do
							if (currentTime() - startTime3) * 1000 >= waitingTimeout then
								floodIsActive = false
								sampAddChatMessage("{FFFF00}| {ffffff}Тайм-аут ожидания открытия диалога выбора получателя", -1)
								break
							end
							dialogText = sampGetDialogText()
							wait(0)
						end

						if floodIsActive then
							sampSendDialogResponse(32700, 1, 0, messageContent)
							sampAddChatMessage("{FFFF00}| {ffffff}Отправлено сообщение: " .. messageContent, -1) --333333333333333333333333333333333333333
							sendedMessages = sendedMessages + 1
							if sendedMessages >= tonumber(tickLimit) then
								sampAddChatMessage("{33AA33}| {ffffff} Лимит сообщений в {4a86b6}" .. tickLimit .. "{ffffff} штук достигнут! Завершение работы...", -1)
								floodIsActive = false
							else
								startTime = currentTime()
								while not dialogCaption or not dialogCaption:match("Телефонная книга") do
									if (currentTime() - startTime) * 1000 >= waitingTimeout then
										floodIsActive = false
										sampAddChatMessage("{FFFF00}| {ffffff}Тайм-аут ожидания открытия диалога", -1)
										break
									end
									dialogCaption = sampGetDialogCaption()
									wait(0)
								end
							end
						end
					end
				else
					sampAddChatMessage("{AA3333}| {ffffff} Жертва {4a86b6}" .. victimPhoneNumber .. "{ffffff} не найдена, создайте новый контакт!", -1)
					-- ДОПИСАТЬ СОЗДАНИЕ НОВОГО КОНТАКТА
					floodIsActive = false
				end
				wait(0)
			end
		else
			--sampAddChatMessage("{AA3333}| {ffffff} Кнопка {4a86b6}CONTACTS {ffffff}не найдена!", -1)
			--floodIsActive = false
			wait(0)
		end
		wait(0)
	end
end"