Отправка топа донатеров на сайт

Хочу сделать список топ 3 донатера на загрузочном экране. Реализовал через такой код:

local donaters = {} 
IGS.GetTransactions(function(a) 
	for k,v in pairs(a) do 
		if v['Note']:find('A: ') then 
			donaters[v['SteamID']]=(isnumber(donaters[v['SteamID']]) and donaters[v['SteamID']]+v['Sum']) or v['Sum']
		end
	end
	table.SortDesc( donaters )
	http.Post( "https://example.com/example", { donaters = util.TableToJSON(donaters) },print,print)
end) 

Работает почти как надо, но старые пополнения не приходят, из-за чего топ получается не правильный (те кто донатили много неделю назад в топе не показываются). Может есть у кого готовый код?

Если не ошибаюсь то GMD API работает в формате Get-Updates. Думаю нужно делать реквест вручную с желаемым payload, а не с помощью функции обертки.
Почитай сурс этой функции что-бы узнать больше.

Алсо, если API работает по Get-Updates и само хранит время предыдущего реквеста - то можно спарсить старые данные из панели проекта к себе в бд а потом обнавлять бд с помощью функции которую ты юзаешь.

Я не деобфуцировал донат. На угад функцию нашёл когда принтил IGS)

при чём тут обфускация?
код же опенсурс: GitHub - GM-DONATE/IGS: 🛍 Внутриигровой магазин для Garry's Mod https://git.io/IGS

Что-то я тут нашаманил чисто для себя :smiley:
Извращенством позанимался

А вот для нормальных людей


-- ДАБЫ ИЗБЕЖАТЬ API ЛИМИТОВ, ВЫПОЛНЯТЬ ЭТУ ФУНКЦИЮ ЧАСТО НЕЛЬЗЯ
-- Она запрашивает последние 2 тыс транзакций, выполняя при этом 8 API запросов
-- Если делать слишком часто -- включится flood-wait, что приведет к задержкам других запросов
local function getTopDonators(pick_n, cb)
	IGS.GetPlayerTransactionsBypassingLimit(function(txs)
		local sid_sum = {}
		for _,tx in ipairs(txs) do
			sid_sum[tx.SteamID] = (sid_sum[tx.SteamID] or 0) + math.max(tx.Sum, 0)
		end

		local t = {}
		for s64,sum in SortedPairsByValue(sid_sum, true) do
			table.insert(t, {s64, sum})
			if #t >= pick_n then break end
		end

		cb(t)
	end, nil, 2000)	
end

getTopDonators(10, function(t)
	http.Post("https://example.com", { top = util.TableToJSON(t) })
end)

Обрати внимание, что нельзя выполнять getTopDonators слишком часто. Лучше не чаще, чем раз в 5 минут, а в идеале раз в час или раз в несколько часов

Эта штука строит данные не по датам, а по последним транзакциям, так что погрешности будут, но никто не заметит. Чем больше число вместо 2000 тыс указать, тем более точны будут данные, но лимиты не позволят выполнять ее слишком часто и будут кидать проект в flood-wait

gmd api не возвращает x-ratelimit-remaining / x-ratelimit-reset-after?

возвращает

а очередь реквестов?

если очередь есть то это не проблема.

Просто не надо так делать