aboutsummaryrefslogtreecommitdiff
path: root/operators/command_ping.zsh
diff options
context:
space:
mode:
Diffstat (limited to 'operators/command_ping.zsh')
-rw-r--r--operators/command_ping.zsh112
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