diff options
| author | Maria Lisina <sekoohaka.sarisan@gmail.com> | 2025-05-16 15:44:01 +0500 |
|---|---|---|
| committer | Maria Lisina <sekoohaka.sarisan@gmail.com> | 2025-05-16 15:44:01 +0500 |
| commit | a9a802d493cda6d96576e6febf3608896b670125 (patch) | |
| tree | cfa22a067963ece73546eb4593a29c7214a906d9 | |
| parent | 5620434c22a4f2c218f9cdfa5482e3a876d0e49d (diff) | |
bot: Add ping command
Signed-off-by: Maria Lisina <sekoohaka.sarisan@gmail.com>
| -rw-r--r-- | README.md | 1 | ||||
| -rw-r--r-- | files/help.txt.default | 1 | ||||
| -rw-r--r-- | modules/commands.sh | 3 | ||||
| -rw-r--r-- | submodules/command_ping.sh | 117 |
4 files changed, 122 insertions, 0 deletions
@@ -141,6 +141,7 @@ Caching modes: * `/short [query]` - Create inline shortcut * `/shorts` - Manage saved shortcuts * `/stop` - Remove all user data +* `/ping` - Measure bot latency * `/donate` - Send donation details ### Inline aliases diff --git a/files/help.txt.default b/files/help.txt.default index bfd8510..e653955 100644 --- a/files/help.txt.default +++ b/files/help.txt.default @@ -45,6 +45,7 @@ /short [query] - Create inline shortcut /shorts - Manage saved shortcuts /stop - Remove all your data +/ping - Measure bot latency /donate - Send donation details <b>Inline aliases:</b> diff --git a/modules/commands.sh b/modules/commands.sh index 7871004..82bd66c 100644 --- a/modules/commands.sh +++ b/modules/commands.sh @@ -45,6 +45,9 @@ case "${command}" in ("/original" | "/original@${username}") . "${submodules}/command_original.sh" ;; + ("/ping" | "/ping@${username}") + . "${submodules}/command_ping.sh" + ;; ("/post" | "/post@${username}") . "${submodules}/command_post.sh" ;; diff --git a/submodules/command_ping.sh b/submodules/command_ping.sh new file mode 100644 index 0000000..af1e7b7 --- /dev/null +++ b/submodules/command_ping.sh @@ -0,0 +1,117 @@ +# Copyright (C) 2024-2025 Maria Lisina +# Copyright (C) 2024-2025 Danil Lisin +# SPDX-License-Identifier: Apache-2.0 + +output_text="Measuring..." +output_file="${cache}/${update_id}_sendMessage.json" +dump="${dump} ${output_file##*/}" + +latency_init="$(cat /proc/timer_list | sed '3!d' | parameter 3)" + +if ! curl --data-urlencode "chat_id=${chat_id}" \ + --data-urlencode "message_thread_id=${message_thread_id}" \ + --data-urlencode "text=${output_text}" \ + --data-urlencode "reply_parameters=${reply_parameters}" \ + --get \ + --max-time ${internal_timeout} \ + --output "${output_file}" \ + --proxy "${internal_proxy}" \ + --silent \ + --user-agent "${useragent}" \ + "${api_address}/bot${api_token}/sendMessage" +then + output_text="Failed to measure latency" + log_text="sendMessage (${update_id}): Failed to access Telegram Bot API" + + . "${units}/log.sh" + . "${units}/dump.sh" + + return 0 +fi + +latency_fin="$(cat /proc/timer_list | sed '3!d' | parameter 3)" + +if ! jq -e '.' "${output_file}" > /dev/null +then + output_text="An unknown error occurred" + log_text="sendMessage (${update_id}): An unknown error occurred" + + . "${units}/log.sh" + . "${units}/dump.sh" + + return 0 +fi + +if [ "$(jq -r '.ok' "${output_file}")" != "true" ] +then + output_text="Failed to measure latency" + error_description="$(jq -r '.description' "${output_file}")" + + if [ "${error_description}" != "null" ] + then + log_text="sendMessage (${update_id}): ${error_description}" + else + log_text="sendMessage (${update_id}): An unknown error occurred" + fi + + . "${units}/log.sh" + . "${units}/dump.sh" + + return 0 +fi + +chat_id="$(jq -r '.result.chat.id' "${output_file}")" +message_id="$(jq -r '.result.message_id' "${output_file}")" + +latency=$(((latency_fin - latency_init) / 1000000 - 10)) +output_text="$(printf "<b>Latency:</b> %ums" "${latency}")" + +output_file="${cache}/${update_id}_editMessageText.json" +dump="${dump} ${output_file##*/}" + +if ! curl --data-urlencode "chat_id=${chat_id}" \ + --data-urlencode "message_id=${message_id}" \ + --data-urlencode "text=${output_text}" \ + --data-urlencode "parse_mode=HTML" \ + --get \ + --max-time ${internal_timeout} \ + --output "${output_file}" \ + --proxy "${internal_proxy}" \ + --silent \ + --user-agent "${useragent}" \ + "${api_address}/bot${api_token}/editMessageText" +then + log_text="editMessageText (${update_id}): Failed to access Telegram Bot API" + + . "${units}/log.sh" + . "${units}/dump.sh" + + exit 0 +fi + +if ! jq -e '.' "${output_file}" > /dev/null +then + log_text="editMessageText (${update_id}): An unknown error occurred" + + . "${units}/log.sh" + . "${units}/dump.sh" + + exit 0 +fi + +if [ "$(jq -r '.ok' "${output_file}")" != "true" ] +then + error_description="$(jq -r '.description' "${output_file}")" + + if [ "${error_description}" != "null" ] + then + log_text="editMessageText (${update_id}): ${error_description}" + else + log_text="editMessageText (${update_id}): An unknown error occurred" + fi + + . "${units}/log.sh" + . "${units}/dump.sh" +fi + +exit 0 |
