summaryrefslogtreecommitdiff
path: root/luamods/randompost.lua
blob: 24cbde96cca15fcacd5c148abc989b2bd69e9074 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
local lines = {
	english = {
		["command_unavailable"] = "{sender.alias_name}: This command is not available.",
		["external_api_error"] = "{sender.alias_name}: Failed to get a random post. Try again later. (%s)",
		["success"] = "{sender.alias_name}: %s",
	},
	russian = {
		["command_unavailable"] = "{sender.alias_name}: Эта команда недоступна.",
		["external_api_error"] = "{sender.alias_name}: Не удалось получить случайный пост. Попробуйте позже. (%s)",
		["success"] = "{sender.alias_name}: %s",
	},
}

return {
	name = "randompost",
	delay_sec = 5,
	options = {},
	subcommands = {},
	aliases = { "rpost", "rps", "rtnd" },
	minimal_rights = "user",
	handle = function(request)
		cfg = bot_config()
		if cfg == nil then
			return l10n_custom_formatted_line_request(request, lines, "command_unavailable", {})
		end

		if cfg.commands.rpost_path == nil or cfg.url.randompost == nil then
			return l10n_custom_formatted_line_request(request, lines, "command_unavailable", {})
		end

		response = net_get_with_headers(cfg.url.randompost, { Accept = "application/json" })

		if response.code ~= 200 then
			return l10n_custom_formatted_line_request(request, lines, "external_api_error", { response.code })
		end

		body = json_parse(response.text)

		link = json_get_value(body, cfg.commands.rpost_path)
		if link == nil then
			return l10n_custom_formatted_line_request(request, lines, "command_unavailable", {})
		end

		return l10n_custom_formatted_line_request(request, lines, "success", { link })
	end,
}