diff --git a/bashbot.sh b/bashbot.sh index 99ef0cb..eee1333 100755 --- a/bashbot.sh +++ b/bashbot.sh @@ -30,7 +30,7 @@ BOTCOMMANDS="-h help init start stop status suspendback resumeback killb # 8 - curl/wget missing # 10 - not bash! # -#### $$VERSION$$ v1.32-dev-13-gf995eee +#### $$VERSION$$ v1.35-dev-1-g9023b21 ################################################################## # emmbeded system may claim bash but it is not @@ -689,8 +689,8 @@ process_client() { "${iQUERY[USERNAME]:0:20} (${iQUERY[USER_ID]})" "${iQUERY[0]}" >>"${UPDATELOG}" elif [ -n "${iBUTTON[ID]}" ]; then process_inline_button "${num}" "${debug}" - printf "%(%c)T: Inline Button update received FROM=%s iBUTTON=%s\n" -1\ - "${iBUTTON[USERNAME]:0:20} (${iBUTTON[USER_ID]})" "${iBUTTON[0]}" >>"${UPDATELOG}" + printf "%(%c)T: Inline Button update received FROM=%s CHAT=%s ID=%s DATA:%s \n" -1\ + "${iBUTTON[USERNAME]:0:20} (${iBUTTON[USER_ID]})" "${iBUTTON[CHAT_ID]}" "{iBUTTON[ID]" "{iBUTTON[DATA]" >>"${UPDATELOG}" else if grep -qs -e '\["result",'"${num}"',"edited_message"' <<<"${UPDATE}"; then # edited message @@ -866,17 +866,20 @@ process_inline_query() { return 0 } process_inline_button() { +# debugging for impelemetation + log_message "${res}" +set -x local num="$1" - iBUTTON[0]="$(JsonDecode "${UPD["result,${num},inline_callback,query"]}")" + iBUTTON[DATA]="${UPD["result,${num},inline_callback,data"]}" iBUTTON[CHAT_ID]="${UPD["result,${num},inline_callback,chat_instance"]}" iBUTTON[MESSAGE_ID]="${UPD["result,${num},inline_callback,inline_message_id"]}" - iBUTTON[MESSAGE_TEXT]="${UPD["result,${num},inline_callback,message,text"]}" -# XXX should we give back pressed button or all buttons? - iBUTTON[MESSAGE_BUTTONS]="${UPD["result,${num},inline_callback,message,reply_markup"]}" + iBUTTON[MEESSAGE]="$(JsonDecode "${UPD["result,${num},inline_callback,message,text"]}")" +# XXX should we give back pressed button, all buttons or nothing? iBUTTON[USER_ID]="${UPD["result,${num},inline_callback,from,id"]}" iBUTTON[FIRST_NAME]="$(JsonDecode "${UPD["result,${num},inline_callback,from,first_name"]}")" iBUTTON[LAST_NAME]="$(JsonDecode "${UPD["result,${num},inline_callback,from,last_name"]}")" iBUTTON[USERNAME]="$(JsonDecode "${UPD["result,${num},inline_callback,from,username"]}")" +set +x # always true return 0 } diff --git a/dev/all-tests.sh b/dev/all-tests.sh index d0a2051..dd9ebe2 100755 --- a/dev/all-tests.sh +++ b/dev/all-tests.sh @@ -5,7 +5,7 @@ # # Description: run all tests, exit after failed test # -#### $$VERSION$$ v1.30-0-g3266427 +#### $$VERSION$$ v1.35-dev-0-gd9b3342 ############################################################# #shellcheck disable=SC1090 diff --git a/modules/sendMessage.sh b/modules/sendMessage.sh index 4911085..acd0768 100644 --- a/modules/sendMessage.sh +++ b/modules/sendMessage.sh @@ -6,7 +6,7 @@ # Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying) # # shellcheck disable=SC1117 -#### $$VERSION$$ v1.32-dev-1-g662c6f4 +#### $$VERSION$$ v1.35-dev-1-g9023b21 # will be automatically sourced from bashbot @@ -159,13 +159,16 @@ send_button() { # helper function to create json for a button row # buttons will specified as "text|url" ... "text|url" empty arg starts new row +# url not starting with http:// or https:// will be send as callback_data _button_row() { [ -z "$1" ] && return 1 - local arg json sep + local arg type json sep for arg in "$@" do [ -z "${arg}" ] && sep="],[" && continue - json+="${sep}"'{"text":"'"$(JsonEscape "${arg%|*}")"'", "url":"'"${arg##*|}"'"}' + type="callback_data" + [[ "${arg##*|}" =~ ^https*:// ]] && type="url" + json+="${sep}"'{"text":"'"$(JsonEscape "${arg%|*}")"'", "'"${type}"'":"'"${arg##*|}"'"}' sep="," done printf "[%s]" "${json}"