From 3847ff5468ca5a86c09c68e432e247ae66e14b67 Mon Sep 17 00:00:00 2001 From: "Kay Marquardt (Gnadelwartz)" Date: Fri, 22 Mar 2019 20:30:22 +0100 Subject: [PATCH] provide information about replied and forwarded messages --- README.md | 15 ++++++++++++++- bashbot.sh | 17 ++++++++++++++++- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 4549ccb..6c20315 100644 --- a/README.md +++ b/README.md @@ -81,8 +81,9 @@ Then start editing the commands. You can read incoming data using the following variables: * ```$MESSAGE```: Incoming messages -* ```$MESSAGE[ID]```: ID of incoming message +* ```${MESSAGE[ID]}```: ID of incoming message * ```$CAPTION```: Captions +* ```$REPLYTO```: Original message wich was replied to * ```$USER```: This array contains the First name, last name, username and user id of the sender of the current message. * ```${USER[ID]}```: User id * ```${USER[FIRST_NAME]}```: User's first name @@ -96,6 +97,18 @@ You can read incoming data using the following variables: * ```${CHAT[TITLE]}```: Title * ```${CHAT[TYPE]}```: Type * ```${CHAT[ALL_MEMBERS_ARE_ADMINISTRATORS]}```: All members are administrators (true if true) +* ```$REPLYTO```: This array contains the First name, last name, username and user id of the ORIGINAL sender of the REPLEYED message. + * ```${REPLYTO[ID]}```: ID of message wich was replied to + * ```${REPLYTO[UID]}```: Original user's id + * ```${REPLYTO[FIRST_NAME]}```: Original user's first name + * ```${REPLYTO[LAST_NAME]}```: Original user's' last name + * ```${REPLYTO[USERNAME]}```: Original user's username +* ```$FORWARD```: This array contains the First name, last name, username and user id of the ORIGINAL sender of the FORWARDED message. + * ```${FORWARD[ID]}```: Same as MESSAGE[ID] if message is forwarded + * ```${FORWARD[UID]}```: Original user's id + * ```${FORWARD[FIRST_NAME]}```: Original user's first name + * ```${FORWARD[LAST_NAME]}```: Original user's' last name + * ```${FORWARD[USERNAME]}```: Original user's username * ```$URLS```: This array contains documents, audio files, stickers, voice recordings and stickers stored in the form of URLs. * ```${URLS[AUDIO]}```: Audio files * ```${URLS[VIDEO]}```: Videos diff --git a/bashbot.sh b/bashbot.sh index 012a0c8..0a43d68 100755 --- a/bashbot.sh +++ b/bashbot.sh @@ -83,7 +83,7 @@ FILE_URL='https://api.telegram.org/file/bot'$TOKEN'/' UPD_URL=$URL'/getUpdates?offset=' GET_URL=$URL'/getFile' OFFSET=0 -declare -A USER MESSAGE URLS CONTACT LOCATION CHAT +declare -A USER MESSAGE URLS CONTACT LOCATION CHAT FORWARD REPLYTO urlencode() { echo "$*" | sed 's:%:%25:g;s: :%20:g;s:<:%3C:g;s:>:%3E:g;s:#:%23:g;s:{:%7B:g;s:}:%7D:g;s:|:%7C:g;s:\\:%5C:g;s:\^:%5E:g;s:~:%7E:g;s:\[:%5B:g;s:\]:%5D:g;s:`:%60:g;s:;:%3B:g;s:/:%2F:g;s:?:%3F:g;s^:^%3A^g;s:@:%40:g;s:=:%3D:g;s:&:%26:g;s:\$:%24:g;s:\!:%21:g;s:\*:%2A:g' @@ -424,6 +424,21 @@ process_client() { USER[LAST_NAME]="$(echo "$UPDATE" | egrep '\["result",'$PROCESS_NUMBER',"message","from","last_name"\]' | cut -f 2 | cut -d '"' -f 2)" USER[USERNAME]="$(echo "$UPDATE" | egrep '\["result",'$PROCESS_NUMBER',"message","from","username"\]' | cut -f 2 | cut -d '"' -f 2)" + # in reply to message from + REPLYTO[0]="$(echo -e "$(echo "$UPDATE" | egrep '\["result",'$PROCESS_NUMBER',"message","reply_to_message","text"\]' | cut -f 2 | cut -d '"' -f 2)" | sed 's#\\/#/#g')" + REPLYTO[ID]="$(echo "$UPDATE" | egrep '\["result",'$PROCESS_NUMBER',"message","reply_to_message","message_id"\]' | cut -f 2 | cut -d '"' -f 2)" + REPLYTO[UID]="$(echo "$UPDATE" | egrep '\["result",'$PROCESS_NUMBER',"message","reply_to_message","from","id"\]' | cut -f 2)" + REPLYTO[FIRST_NAME]="$(echo "$UPDATE" | egrep '\["result",'$PROCESS_NUMBER',"message","reply_to_message","from","first_name"\]' | cut -f 2 | cut -d '"' -f 2)" + REPLYTO[LAST_NAME]="$(echo "$UPDATE" | egrep '\["result",'$PROCESS_NUMBER',"message","reply_to_message","from","last_name"\]' | cut -f 2 | cut -d '"' -f 2)" + REPLYTO[USERNAME]="$(echo "$UPDATE" | egrep '\["result",'$PROCESS_NUMBER',"message","reply_to_message","from","username"\]' | cut -f 2 | cut -d '"' -f 2)" + + # forwarded message from + FORWARD[UID]="$(echo "$UPDATE" | egrep '\["result",'$PROCESS_NUMBER',"message","forward_from","id"\]' | cut -f 2)" + FORWARD[FIRST_NAME]="$(echo "$UPDATE" | egrep '\["result",'$PROCESS_NUMBER',"message","forward_from","first_name"\]' | cut -f 2 | cut -d '"' -f 2)" + FORWARD[LAST_NAME]="$(echo "$UPDATE" | egrep '\["result",'$PROCESS_NUMBER',"message","forward_from","last_name"\]' | cut -f 2 | cut -d '"' -f 2)" + FORWARD[USERNAME]="$(echo "$UPDATE" | egrep '\["result",'$PROCESS_NUMBER',"message","forward_from","username"\]' | cut -f 2 | cut -d '"' -f 2)" + [ "${FORWARD[UID]}" == "" ] || FORWARD[ID]="${MESSAGE[ID]}" # same as message ID + # Audio URLS[AUDIO]="$(get_file $(echo "$UPDATE" | egrep '\["result",'$PROCESS_NUMBER',"message","audio","file_id"\]' | cut -f 2 | cut -d '"' -f 2))" # Document