diff options
Diffstat (limited to 'operators/command_ping.zsh')
| -rw-r--r-- | operators/command_ping.zsh | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/operators/command_ping.zsh b/operators/command_ping.zsh new file mode 100644 index 0000000..83ffb3b --- /dev/null +++ b/operators/command_ping.zsh @@ -0,0 +1,112 @@ +# Copyright (C) 2024-2026 Maria Lisina +# Copyright (C) 2024-2026 Danil Lisin +# SPDX-License-Identifier: Apache-2.0 + +output_text="Measuring..." +latency_init=$(strftime %s%N) + +if ! output_data="$( + curl --connect-timeout ${connrefused_timeout} \ + --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} \ + --proxy "${internal_proxy}" \ + --retry 1 \ + --retry-connrefused \ + --retry-max-time $((internal_timeout - connrefused_timeout)) \ + --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" + source "${units}/log.zsh" + + return +fi + +latency_fin=$(strftime %s%N) + +if ! jq -e '.' <<< "${output_data}" > /dev/null +then + output_text="An unknown error occurred" + + log_text="sendMessage (${update_id}): An unknown error occurred" + source "${units}/log.zsh" + + return +fi + +if [[ "$(jq -r '.ok' <<< "${output_data}")" != "true" ]] +then + output_text="Failed to measure latency" + error_description="$(jq -r '.description' <<< "${output_data}")" + + if [[ "${error_description}" != "null" ]] + then + log_text="sendMessage (${update_id}): ${error_description}" + else + log_text="sendMessage (${update_id}): An unknown error occurred" + fi + + source "${units}/log.zsh" + return +fi + +chat_id="$(jq -r '.result.chat.id' <<< "${output_data}")" +message_id="$(jq -r '.result.message_id' <<< "${output_data}")" + +latency=$(((latency_fin - latency_init) / 1000000)) +output_text="$(printf "<b>Latency:</b> %ums" "${latency}")" + +if ! output_data="$( + curl --connect-timeout ${connrefused_timeout} \ + --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} \ + --proxy "${internal_proxy}" \ + --retry 1 \ + --retry-connrefused \ + --retry-max-time $((internal_timeout - connrefused_timeout)) \ + --silent \ + --user-agent "${useragent}" \ + "${api_address}/bot${api_token}/editMessageText" +)" +then + log_text="editMessageText (${update_id}): Failed to access Telegram Bot API" + source "${units}/log.zsh" + + exit 0 +fi + +if ! jq -e '.' <<< "${output_data}" > /dev/null +then + log_text="editMessageText (${update_id}): An unknown error occurred" + source "${units}/log.zsh" + + exit 0 +fi + +if [[ "$(jq -r '.ok' <<< "${output_data}")" != "true" ]] +then + error_description="$(jq -r '.description' <<< "${output_data}")" + + if [[ "${error_description}" != "null" ]] + then + log_text="editMessageText (${update_id}): ${error_description}" + else + log_text="editMessageText (${update_id}): An unknown error occurred" + fi + + source "${units}/log.zsh" +fi + +exit 0 |
