mirror of
https://github.com/octoleo/telegram-bot-bash.git
synced 2024-12-27 04:32:49 +00:00
get/save botid, new function bot_is_admin
This commit is contained in:
parent
d30a700b33
commit
1b8a1d4253
@ -1,12 +1,11 @@
|
||||
#!/bin/sh
|
||||
# description: Start or stop telegram-bash-bot
|
||||
#
|
||||
# example service script to run bashbot in background
|
||||
# may or may not work on your system
|
||||
# example service script to run bashbot in background as specified user
|
||||
#
|
||||
# tested on: ubuntu, opensuse
|
||||
# tested on: ubuntu, opensuse, debian
|
||||
#
|
||||
#### $$VERSION$$ v1.2-0-gc50499c
|
||||
#### $$VERSION$$ v1.2-1-gd30a700
|
||||
# shellcheck disable=SC2009
|
||||
# shellcheck disable=SC2181
|
||||
|
||||
|
12
bashbot.sh
12
bashbot.sh
@ -11,7 +11,7 @@
|
||||
# This file is public domain in the USA and all free countries.
|
||||
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
|
||||
#
|
||||
#### $$VERSION$$ v1.2-0-gc50499c
|
||||
#### $$VERSION$$ v1.2-1-gd30a700
|
||||
#
|
||||
# Exit Codes:
|
||||
# - 0 success (hopefully)
|
||||
@ -607,7 +607,15 @@ title2Json(){
|
||||
|
||||
# get bot name
|
||||
getBotName() {
|
||||
getJson "$ME_URL" | "${JSONSHFILE}" -b -n 2>/dev/null | JsonGetString '"result","username"'
|
||||
local response
|
||||
declare -A BOTARRAY
|
||||
response="$(getJson "$ME_URL" | "${JSONSHFILE}" -b -n 2>/dev/null)"
|
||||
Json2Array 'BOTARRAY' <<<"${response}"
|
||||
[[ -z "${response}" || -z "${BOTARRAY["result","username"]}" ]] && return 1
|
||||
# save botname and id
|
||||
setConfigKey "botname" "${BOTARRAY["result","username"]}"
|
||||
setConfigKey "botid" "${BOTARRAY["result","id"]}"
|
||||
echo "${BOTARRAY["result","username"]}"
|
||||
}
|
||||
|
||||
# pure bash implementation, done by KayM (@gnadelwartz)
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
#### $$VERSION$$ v1.2-0-gc50499c
|
||||
#### $$VERSION$$ v1.2-1-gd30a700
|
||||
|
||||
############
|
||||
# NOTE: you MUST run install-hooks.sh again when updating this file!
|
||||
@ -30,7 +30,7 @@ fi
|
||||
|
||||
# run shellcheck before commit
|
||||
set +f
|
||||
FILES="$(find ./* -name '*.sh' | grep -v 'DIST\/' | grep -v 'STANDALONE\/')"
|
||||
FILES="$(find ./* -name '*.sh' | grep -v -e 'DIST\/' -e 'STANDALONE\/' -e 'JSON.sh')"
|
||||
set -f
|
||||
FILES="${FILES} $(sed '/^#/d' <"dev/shellcheck.files")"
|
||||
if [ "$FILES" != "" ]; then
|
||||
|
@ -244,6 +244,19 @@ fi
|
||||
|
||||
The following functions are bashbot only and not part of the Telegram API.
|
||||
|
||||
##### bot_is_admin
|
||||
Return true (0) if bot is admin or creator of given chat.
|
||||
|
||||
*usage:* bot_is_admin "${CHAT[ID]}"
|
||||
|
||||
|
||||
*example:*
|
||||
```bash
|
||||
if bot_is_admin "${CHAT[ID]}"; then
|
||||
send_markdown_message "${CHAT[ID]}" "*I'm admin...*"
|
||||
fi
|
||||
```
|
||||
|
||||
##### user_is_botadmin
|
||||
Return true (0) if user is admin of bot, user id if botadmin is read from file './botadmin'.
|
||||
|
||||
@ -253,7 +266,7 @@ Return true (0) if user is admin of bot, user id if botadmin is read from file '
|
||||
|
||||
*example:*
|
||||
```bash
|
||||
_is_botadmin && send_markdown_message "${CHAT[ID]}" "You are *BOTADMIN*."
|
||||
user_is_botadmin "${CHAT[ID]}" && send_markdown_message "${CHAT[ID]}" "You are *BOTADMIN*."
|
||||
```
|
||||
|
||||
##### user_is_creator
|
||||
@ -272,7 +285,7 @@ Return true (0) if user is admin or creator of given chat.
|
||||
|
||||
*example:*
|
||||
```bash
|
||||
if _is_admin ; then
|
||||
if user_is_admin "${CHAT[ID]}" ; then
|
||||
send_markdown_message "${CHAT[ID]}" "*LEAVING CHAT...*"
|
||||
leave_chat "${CHAT[ID]}"
|
||||
fi
|
||||
@ -1049,5 +1062,5 @@ The name of your bot is available as bash variable "$ME", there is no need to ca
|
||||
#### [Prev Best Practice](5_practice.md)
|
||||
#### [Next Notes for Developers](7_develop.md)
|
||||
|
||||
#### $$VERSION$$ v1.2-0-gc50499c
|
||||
#### $$VERSION$$ v1.2-1-gd30a700
|
||||
|
||||
|
@ -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$$ v1.2-0-gc50499c
|
||||
#### $$VERSION$$ v1.2-1-gd30a700
|
||||
|
||||
# will be automatically sourced from bashbot
|
||||
|
||||
@ -18,6 +18,7 @@ UNBAN_URL=$URL'/unbanChatMember'
|
||||
GETMEMBER_URL=$URL'/getChatMember'
|
||||
|
||||
# usage: status="$(get_chat_member_status "chat" "user")"
|
||||
# $1 chat # $2 user
|
||||
get_chat_member_status() {
|
||||
sendJson "$1" '"user_id":'"$2"'' "$GETMEMBER_URL"
|
||||
# shellcheck disable=SC2154
|
||||
@ -42,6 +43,13 @@ user_is_creator() {
|
||||
return 1
|
||||
}
|
||||
|
||||
# $1 chat
|
||||
bot_is_admin() {
|
||||
[ "${2:-+}" ] && return 0
|
||||
user_is_admin "$2" "$(getConfigKey "botid")"
|
||||
}
|
||||
|
||||
# $1 chat # $2 user
|
||||
user_is_admin() {
|
||||
[ "${1:--}" == "${2:-+}" ] && return 0
|
||||
user_is_botadmin "$2" && return 0
|
||||
@ -50,6 +58,7 @@ user_is_admin() {
|
||||
return 1
|
||||
}
|
||||
|
||||
# $1 user
|
||||
user_is_botadmin() {
|
||||
local admin; admin="$(getConfigKey "botadmin")"; [ -z "${admin}" ] && return 1
|
||||
[[ "${admin}" == "${1}" || "${admin}" == "${2}" ]] && return 0
|
||||
@ -58,6 +67,7 @@ user_is_botadmin() {
|
||||
return 1
|
||||
}
|
||||
|
||||
# $1 user # $2 key # $3 chat
|
||||
user_is_allowed() {
|
||||
[ -z "$1" ] && return 1
|
||||
# user can do everything
|
||||
|
@ -9,7 +9,7 @@
|
||||
# #### mycommands.clean
|
||||
#
|
||||
# shellcheck disable=SC1117
|
||||
#### $$VERSION$$ v1.2-0-gc50499c
|
||||
#### $$VERSION$$ v1.2-1-gd30a700
|
||||
#
|
||||
|
||||
# uncomment the following lines to overwrite info and help messages
|
||||
@ -149,7 +149,7 @@ else
|
||||
MESSAGE="${MESSAGE#/* }"
|
||||
;;
|
||||
'/_new_chat_member'*)
|
||||
if [[ -n "${WELCOME_NEWMEMBER}" && "${NEWMEMBER[ISBOT]}" != "true" ]]; then
|
||||
if [[ -n "${WELCOME_NEWMEMBER}" && "${NEWMEMBER[ISBOT]}" != "true" ]] && bot_is_admin "${CHAT[ID]}"; then
|
||||
send_normal_message "${CHAT[ID]}"\
|
||||
"${WELCOME_MSG} ${NEWMEMBER[FIRST_NAME]} ${NEWMEMBER[LAST_NAME]} (@${NEWMEMBER[USERNAME]})"
|
||||
MYSENTID="${BOTSENT[ID]}"
|
||||
|
Loading…
Reference in New Issue
Block a user