aboutsummaryrefslogtreecommitdiff
path: root/operators/command_hash.zsh
blob: 3ced3c9b2f232451b0f537ab4ed85472061a7962 (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
70
71
72
73
74
75
76
# Copyright (C) 2024-2026 Maria Lisina
# Copyright (C) 2024-2026 Danil Lisin
# SPDX-License-Identifier: Apache-2.0

if [[ -n "${1}" ]]
then
    ib_post_md5="${1}"
    shift
else
    output_text="You must specify MD5 hash"
    return
fi

if ! [[ ${#ib_post_md5} -eq 32 ]]
then
    output_text="Invalid MD5 hash"
    return
fi

ib_post="${cache}/${update_id}_id.txt"
ib_sample="${cache}/${update_id}_sample.txt"

for lock in "${ib_post}" "${ib_sample}"
do
    until mkdir "${lock%.*}.lock"
    do
        sleep 1
    done
done

while [[ ${#board_table} -ge 2 ]]
do
    source "${units}/ib_hash.zsh" &
    wait

    if ! [[ -f "${ib_post}" ]]
    then
        shift 2 board_table
        continue
    fi

    ib_id="$(< "${ib_post}")"

    keyboard_text1="${board_table[2]}"
    keyboard_query1="post ${board_table[1]} ${ib_id}"

    reply_markup="$(
        jq --compact-output \
            --argjson offset "$(printf "%u" "${keyboard_offset}")" \
            --arg text1 "${keyboard_text1}" \
            --arg query1 "${keyboard_query1}" \
            '.inline_keyboard[$offset] += [{"text": $text1, "switch_inline_query_current_chat": $query1}]' \
        <<< "${reply_markup:-"{}"}"
    )"

    keyboard_offset=$((keyboard_offset + 0.5))
    shift 2 board_table
done

if [[ -f "${ib_sample}" ]]
then
    output_text="$(printf "<b>MD5:</b> <code>%s</code>" "${ib_post_md5}")"

    link_preview_options="$(
        jq --null-input --compact-output \
            --arg url "$(< "${ib_sample}")" \
            '{"url": $url, "prefer_small_media": true, "show_above_text": true}'
    )"
else
    output_text="No results found"
fi

for lock in "${ib_post}" "${ib_sample}"
do
    rmdir "${lock%.*}.lock"
done