diff options
| author | ilotterytea <iltsu@alright.party> | 2025-07-23 01:59:04 +0500 |
|---|---|---|
| committer | ilotterytea <iltsu@alright.party> | 2025-07-23 01:59:04 +0500 |
| commit | d63df159a389d5b2e071d5c116fda75e73c40e99 (patch) | |
| tree | 381a56af53e03fa11e2ed7633868ab6e19cb728f | |
| parent | a8cfae1690c3fb6033065738788815f264749b5e (diff) | |
feat: !twitter command
| -rw-r--r-- | luamods/twitter.lua | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/luamods/twitter.lua b/luamods/twitter.lua new file mode 100644 index 0000000..56fe0a3 --- /dev/null +++ b/luamods/twitter.lua @@ -0,0 +1,69 @@ +local lines = { + english = { + ["not_configured"] = "{sender.alias_name}: This command is not set up properly. Try again later.", + ["not_found"] = "{sender.alias_name}: Account %s not found.", + ["no_value"] = "{sender.alias_name}: Valid Twitter account must be specified.", + ["message"] = "{sender.alias_name}: %s's last post: %s (posted %s ago)", + ["no_messages"] = "{sender.alias_name}: This Twitter account does not have any posts." + }, + russian = { + ["not_configured"] = "{sender.alias_name}: Команда не настроена. Попробуйте позже.", + ["not_found"] = "{sender.alias_name}: Аккаунт %s не найден.", + ["no_value"] = "{sender.alias_name}: Нужно указать Twitter аккаунт.", + ["message"] = "{sender.alias_name}: Последний пост %s: %s (опубликовано %s назад)", + ["no_messages"] = "{sender.alias_name}: Этот Twitter аккаунт не содержит каких-либо постов." + }, +} + +return { + name = "twitter", + description = [[ +Get the latest post from the specified Twitter account. + +## Syntax + +`!twitter [username]` + ++ `[username]` - Valid Twitter username. + +## Usage + ++ `!twitter forsen` ++ `!x twitch` +]], + delay_sec = 5, + options = {}, + subcommands = {}, + aliases = { "xitter", "x", "lt" }, + minimal_rights = "user", + handle = function(request) + local cfg = bot_config() + if cfg.url.rssbridge == nil then + return l10n_custom_formatted_line_request(request, lines, "not_configured", {}) + end + + if request.message == nil then + return l10n_custom_formatted_line_request(request, lines, "no_value", {}) + end + + local url = str_format(cfg.url.rssbridge, { "FarsideNitterBridge", request.message }) + local channel = rss_get(url) + if channel == nil then + return l10n_custom_formatted_line_request(request, lines, "not_found", { request.message }) + end + + local posts = channel.messages + if #posts == 0 then + return l10n_custom_formatted_line_request(request, lines, "no_messages", {}) + end + + local latest_post = posts[1] + local post_time = "N/A" + if latest_post.timestamp ~= 0 then + post_time = time_humanize(time_current() - latest_post.timestamp) + end + + return l10n_custom_formatted_line_request(request, lines, "message", + { request.message, latest_post.title, post_time }) + end, +} |
