summaryrefslogtreecommitdiff
path: root/luamods
diff options
context:
space:
mode:
authorilotterytea <iltsu@alright.party>2025-04-10 21:59:10 +0500
committerilotterytea <iltsu@alright.party>2025-04-10 21:59:10 +0500
commit50d5c3d36c8f00e9d59073c3a0c710de805ead4e (patch)
treed202e70827652444b248607c8b28a78e94063dd3 /luamods
parent5c2cd6d3e293dc524415893cb1b8950193dce3e2 (diff)
feat: !randompost command
Diffstat (limited to 'luamods')
-rw-r--r--luamods/randompost.lua46
1 files changed, 46 insertions, 0 deletions
diff --git a/luamods/randompost.lua b/luamods/randompost.lua
new file mode 100644
index 0000000..24cbde9
--- /dev/null
+++ b/luamods/randompost.lua
@@ -0,0 +1,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,
+}