summaryrefslogtreecommitdiff
path: root/luamods/twitter.lua
blob: aaacd5fca30ba6c08592e2d89d27df68937a7071 (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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
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) (%s)",
        ["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 назад) (%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.rss.bridge == 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.rss.bridge, { "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, latest_post.id })
    end,
}