🎟 Автопубликация купонов в VK

Команда для постинга купонов на стену ВК. Пример: igs_coupons_to_vk 100 5 — запостит на стену 5 купонов по 100 валюты каждый

Закинуть в любое место, например в /addons/igs-modification/lua/autorun/server/sv_coupons_to_vk.lua, сверху файла внести токен и id сообщества, затем перезагрузить сервер.

local VK_API_KEY = "" -- Вставьте сюда API ключ. Инструкция по получению: https://forum.gm-donate.net/t/1326/3
local VK_WALL_ID = 0  -- Для https://vk.com/wall-143836547 это -143836547 (у сообществ с минусом)

local function vkRequest(method, params, token, cb)
	params.access_token = token

	http.Post( "https://api.vk.com/method/" .. method, params, function(body)
		local dat = assert(util.JSONToTable(body), "NO JSON FROM VK IN IGS MODULE: " .. tostring(body))
		cb(dat)
	end)
end

local function wallPost(api_key, wall_id, text)
	vkRequest("wall.post", {
		owner_id   = tostring(wall_id),
		message    = text,
		from_group = "1",
		v          = "5.131"
	}, api_key, function(dat)
		if not dat.response then
			PrintTable(dat)
			print("Что-то пошло не так...")
			return
		end

		print("Купоны отправлены на стену ВК")
	end)
end

local function wallPostPrepared(text)
	wallPost(VK_API_KEY, VK_WALL_ID, text)
end

local function genCoupons(cb, sum, amount)
	local coupons = {}
	for i = 1,amount do
		IGS.CreateCoupon(sum, nil, "for_vk", function(code)
			coupons[#coupons + 1] = code
			if i == amount then
				cb(coupons)
			end
		end)
	end
end

local function postCoupons(sum, amount)
	genCoupons(function(coupons)
		local msg = "Купоны на " .. PL_MONEY(amount) .. " (активировать в /donate):\n\n" .. table.concat(coupons, "\n")
		wallPostPrepared(msg)
	end, sum, amount)
end


-- Работает только с серверной консоли
concommand.Add("igs_coupons_to_vk", function(pl, _, args)
	if pl ~= NULL then return end
	local sum    = args[1] and tonumber(args[1])
	local amount = args[2] and tonumber(args[2]) or 3
	if not sum then error("Сумма может быть только числом") end
	if amount >= 20 then ErrorNoHalt("Генерация большого кол-ва купонов может привести к задержкам запросов") end

	postCoupons(sum, amount)
end)


По любым вопросам и проблемам пишите в эту тему. Не создавайте новую

Старая ссылка: Telegram: Contact @gmodder
1 симпатия

В апишке выдан весь доступ

error:
                error_code      =       214
                error_msg       =       Access to adding post denied: method is unavailable with group auth

Оказывается, в новых версиях VK wall.post доступен только с API ключом от standalone приложений. Создать такое приложение можно тут: Anmelden | VK

Позже нужно будет сгенерировать API ключ, как описано здесь: Implicit Flow for User Access Token | Für Entwickler | VK

В scope должен быть wall

Api ключ получить можно тут https://vkhost.github.io/
Если кому не хочется парится
Но даже с полными правами у меня не выходит

error_code      =       214
error_msg       =       Access to adding post denied: method is unavailable with group auth

Зашел сюда как раз чтобы скинуть инструкцию, которую мы давали пару лет назад другому человеку)

У меня получилось.

Укажи правильный ID приложения на vkhost и помни, что для публикации на стене группы у тебя должен быть доступ к публикации в этой группе

Если сверху не отображается видео или нужно поставить паузу, то клик сюда

Ааа надо тип токена пользователь, а я сообщество выбирал

Сообщи получилось ли в конечном итоге

Да все работает

upd
Сколько купонов столько и рублей :slight_smile:

fix

local function postCoupons(sum, amount)
	genCoupons(function(coupons)
		local msg = "❤Купоны на " .. PL_MONEY(sum) .. " (активировать в /donate):\n\n💥 " .. table.concat(coupons, "\n💥 ") .. "\n\n✨ Тыкай на \"Рекомендовать\" и \"Уведомления\" если тебе интересно получать новости обновлений и халявы первым!"
		wallPostPrepared(msg)
	end, sum, amount)
end