From 8b8da674654d5f6dd8e0895dcd6839781a526981 Mon Sep 17 00:00:00 2001 From: "Kay Marquardt (Gnadelwartz)" Date: Thu, 25 Apr 2019 16:59:17 +0200 Subject: [PATCH] add documentation for inline keyboards --- bashbot.sh | 10 ++++---- dev/git-add.sh | 5 +--- doc/6_reference.md | 60 +++++++++++++++++++++++++++++++++------------- modules/aliases.sh | 12 +++++----- 4 files changed, 55 insertions(+), 32 deletions(-) diff --git a/bashbot.sh b/bashbot.sh index 1db0d08..796bf8a 100755 --- a/bashbot.sh +++ b/bashbot.sh @@ -12,7 +12,7 @@ # This file is public domain in the USA and all free countries. # Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying) # -#### $$VERSION$$ v0.70-dev3-3-g0f220bd +#### $$VERSION$$ v0.70-dev3-4-g8f4b168 # # Exit Codes: # - 0 sucess (hopefully) @@ -166,7 +166,7 @@ export BOTSENT USER MESSAGE URLS CONTACT LOCATION CHAT FORWARD REPLYTO VENUE send_normal_message() { text="$2" until [ "$(echo -n "$text" | wc -m)" -eq "0" ]; do - res="$(curl -s "$MSG_URL" -d "chat_id=$1" --data-urlencode "text=${text:0:4096}")" + sendJson "${1}" '"text":"'"${text:0:4096}"'"' "$MSG_URL" text="${text:4096}" done } @@ -174,7 +174,7 @@ send_normal_message() { send_markdown_message() { text="$2" until [ "$(echo -n "$text" | wc -m)" -eq "0" ]; do - res="$(curl -s "$MSG_URL" -d "chat_id=$1" --data-urlencode "text=${text:0:4096}" -d "parse_mode=markdown" -d "disable_web_page_preview=true")" + sendJson "${1}" '"text":"'"${text:0:4096}"'","parse_mode":"markdown"' "$MSG_URL" text="${text:4096}" done } @@ -182,7 +182,7 @@ send_markdown_message() { send_html_message() { text="$2" until [ "$(echo -n "$text" | wc -m)" -eq "0" ]; do - res="$(curl -s "$MSG_URL" -d "chat_id=$1" --data-urlencode "text=${text:0:4096}" -d "parse_mode=html")" + sendJson "${1}" '"text":"'"${text:0:4096}"'","parse_mode":"html"' "$MSG_URL" text="${text:4096}" done } @@ -352,7 +352,7 @@ send_inline_button() { # usage: sendJson "chat" "JSON" "URL" sendJson(){ - res="$(curl -d '{"chat_id":'"${1}"', '"$2"'}' -H "Content-Type: application/json" \ + res="$(curl -s -d '{"chat_id":'"${1}"', '"$2"'}' -H "Content-Type: application/json" \ -X POST "${3}" | "${JSONSHFILE}" -s -b -n )" BOTSENT[OK]="$(echo "$res" | JsonGetLine '"ok"')" BOTSENT[ID]="$(echo "$res" | JsonGetValue '"result","message_id"')" diff --git a/dev/git-add.sh b/dev/git-add.sh index 9385ef5..88ab807 100755 --- a/dev/git-add.sh +++ b/dev/git-add.sh @@ -3,7 +3,7 @@ # # works together with git pre-push.sh and ADD all changed files since last push -#### $$VERSION$$ v0.70-dev3-3-g0f220bd +#### $$VERSION$$ v0.70-dev3-4-g8f4b168 # magic to ensure that we're always inside the root of our application, # no matter from which directory we'll run script @@ -25,6 +25,3 @@ do done echo "done." -# shellcheck disable=SC2086 -git add ${FILES} - diff --git a/doc/6_reference.md b/doc/6_reference.md index 5548129..220cf88 100644 --- a/doc/6_reference.md +++ b/doc/6_reference.md @@ -10,7 +10,6 @@ *"action":* ```typing```, ```upload_photo```, ```record_video```, ```upload_video```, ```record_audio```, ```upload_audio```, ```upload_document```, ```find_location```. - *example:* ```bash send_action "${CHAT[ID]}" "typing" @@ -37,8 +36,8 @@ Telegram supports a [reduced set of Markdown](https://core.telegram.org/bots/api *example:* ```bash -send_normal_message "${CHAT[ID]}" "this is a markdown message, next word is *bold*" -send_normal_message "${CHAT[ID]}" "*bold* _italic_ [text](link)" +send_markdown_message "${CHAT[ID]}" "this is a markdown message, next word is *bold*" +send_markdown_message "${CHAT[ID]}" "*bold* _italic_ [text](link)" ``` ##### send_html_message @@ -126,6 +125,33 @@ send_keyboard "${CHAT[ID]}" "Enter digit" "[ \\"1\\" , \\"2\\" , \\"3\\" ] , [ \ ##### remove_keyboard *usage:* remove_keybord "$CHAT[ID]" "message" +#### send_inline_button +*usage:* send_inine_button "chat-id" "message" "Button text" "Buttton URL" + +*alias:* _inline_button "Button text" "Buttton URL" + +*example:* +```bash +send_inline_button "${CHAT[ID]}" "MAKE MONEY FAST!!!" "Visit my Shop" "https://dealz.rrr.de" +``` + +#### send_inline_keyboard +An inline keyboard is used to place multiple inline buttons in a row. The inline buttons must specified as a JSON array in the following format. Each button consists of a text for the button and an URL to got to if the button is clicked, button definitions +are sourrounded by a pair of '**{ }**' and seperated by a '**,**'. + +```[ {"text":"text1", "url":"url1"}, ... {"text":"textN", "url":"urlN"} ]``` + +*usage:* send_inline_keyboard "chat-id" "message" "[{"text":"text", "url":"url"} ...]" + +*alias:* _inline_keyboard "[{"text":"text", "url":"url"} ...]" + +*example:* +```bash +send_inline_keyboard "${CHAT[ID]}" "MAKE MONEY FAST!!!" '[{"text":"Visit my Shop", url"":"https://dealz.rrr.de"}]' +send_inline_keyboard "${CHAT[ID]}" "" '[{"text":"button 1", url"":"url 1"}, {"text":"button 2", url"":"url 2"} ]' +send_inline_keyboard "${CHAT[ID]}" "" '[{"text":"b 1", url"":"u 1"}, {"text":"b 2", url"":"u 2"}, {"text":"b 2", url"":"u 2"} ]' +``` + ---- ### Manage users @@ -135,21 +161,21 @@ If your Bot is Admin of a chat he can kick and ban a user. *usage:* kick_chat_member "${CHAT[ID]}" "${USER[ID]}" -*alias* _kick_user "${USER[ID]}" +*alias:* _kick_user "${USER[ID]}" ##### unban_chat_member If your Bot is Admin of a chat he can unban a kicked user. *usage:* unban_chat_member "${CHAT[ID]}" "${USER[ID]}" -*alias* _unban "${USER[ID]}" +*alias:* _unban "${USER[ID]}" ##### leave_chat Bot will leave given chat. *usage:* leave_chat "${CHAT[ID]}" -*alias* _leave +*alias:* _leave ```bash if _is_admin ; then @@ -218,19 +244,19 @@ You must use ```source modules/aliases.sh``` in commands.sh or mycommands.sh to *usage:* _is_botadmin -*alias for* user_is_botadmin "${USER[ID]}" +*alias for:* user_is_botadmin "${USER[ID]}" #### _is_admin *usage:* _is_admin -*alias for* user_is_admin "${CHAT[ID]}" "${USER[ID]}" +*alias for:* user_is_admin "${CHAT[ID]}" "${USER[ID]}" #### _is_allowed *usage:* _is_allowed "what" -*alias for* user_is_allowed "${USER[ID]}" "what" "${CHAT[ID]}" +*alias for:* user_is_allowed "${USER[ID]}" "what" "${CHAT[ID]}" ---- @@ -238,19 +264,19 @@ You must use ```source modules/aliases.sh``` in commands.sh or mycommands.sh to *usage:* _kick_user "${USER[ID]}" -*alias for* kick_chat_member "${CHAT[ID]}" "${USER[ID]}" +*alias for:* kick_chat_member "${CHAT[ID]}" "${USER[ID]}" ##### unban_chat_member *usage:* _unban "${USER[ID]}" -*alias for* unban_chat_member "${CHAT[ID]}" "${USER[ID]}" +*alias for:* unban_chat_member "${CHAT[ID]}" "${USER[ID]}" ##### leave_chat *usage:* _leave -*alias for* leave_chat "${CHAT[ID]}" +*alias for:* leave_chat "${CHAT[ID]}" ---- @@ -258,25 +284,25 @@ You must use ```source modules/aliases.sh``` in commands.sh or mycommands.sh to *usage:* _message "message" -*alias for* send_normal_message "${CHAT[ID]}" "message" +*alias for:* send_normal_message "${CHAT[ID]}" "message" #### _normal_message *usage:* _normal_message "message" -*alias for* send_normal_message "${CHAT[ID]}" "message" +*alias for:* send_normal_message "${CHAT[ID]}" "message" #### _html_message *usage:* _html_message "message" -*alias for* send_html_message "${CHAT[ID]}" "message" +*alias for:* send_html_message "${CHAT[ID]}" "message" #### _markdown_message *usage:* _markdown_message "message" -*alias for* send_markdown_message "${CHAT[ID]}" "message" +*alias for:* send_markdown_message "${CHAT[ID]}" "message" ---- @@ -445,5 +471,5 @@ Send Input from Telegram to waiting Interactive Chat. #### [Prev Best Practice](5_practice.md) #### [Next Notes for Developers](7_develop.md) -#### $$VERSION$$ v0.70-dev2-27-g2da31c1 +#### $$VERSION$$ v0.70-dev3-4-g8f4b168 diff --git a/modules/aliases.sh b/modules/aliases.sh index ea8e4b7..1e523e8 100644 --- a/modules/aliases.sh +++ b/modules/aliases.sh @@ -5,7 +5,7 @@ # This file is public domain in the USA and all free countries. # Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying) # -#### $$VERSION$$ v0.70-dev2-27-g2da31c1 +#### $$VERSION$$ v0.70-dev3-4-g8f4b168 # # source from commands.sh to use the aliases @@ -46,17 +46,17 @@ _markdown_message() { } # easy handling of keyboards _inline_button() { - send_inline_button "${CHAT[ID]}" "${1}" "${2}" "${3}" + send_inline_button "${CHAT[ID]}" "" "${1}" "${2}" } _inline_keyboard() { - send_inline_keyboard "${CHAT[ID]}" "${1}" "${2}" + send_inline_keyboard "${CHAT[ID]}" "" "${1}" } _keyboard_numpad() { - send_keyboard "${CHAT[ID]}" "${1}" '["1","2","3"],["4","5","6"],["7","8","9"],["-","0","."]' "yes" + send_keyboard "${CHAT[ID]}" "" '["1","2","3"],["4","5","6"],["7","8","9"],["-","0","."]' "yes" } _keyboard_yesno() { - send_keyboard "${CHAT[ID]}" "${1}" '["yes","no"]' + send_keyboard "${CHAT[ID]}" "" '["yes","no"]' } _del_keyboard() { - remove_keyboard "${CHAT[ID]}" "${1}" + remove_keyboard "${CHAT[ID]}" "" }