mirror of
https://github.com/anten-ka/gotelegram_pro.git
synced 2026-05-19 22:36:03 +00:00
v2.3.1: bot install with spinner waiting for first admin + auto/manual choice
This commit is contained in:
76
install.sh
76
install.sh
@@ -799,20 +799,25 @@ bot_install() {
|
|||||||
[ -z "$token" ] && log_error "Токен не может быть пустым"
|
[ -z "$token" ] && log_error "Токен не может быть пустым"
|
||||||
done
|
done
|
||||||
|
|
||||||
echo -ne " ${WHITE}ID администраторов (через пробел/запятую, Enter = авто):${NC} "
|
echo ""
|
||||||
read -r admin_ids
|
echo -e " ${WHITE}Как добавить администратора?${NC}"
|
||||||
# Нормализуем: пробелы и запятые → запятые
|
echo -e " ${CYAN}1${NC}) Автоматически — бот определит ID при первом /start"
|
||||||
admin_ids=$(echo "$admin_ids" | tr ' ' ',' | sed 's/,,*/,/g; s/^,//; s/,$//')
|
echo -e " ${CYAN}2${NC}) Вручную — ввести ID сейчас"
|
||||||
|
echo -ne " ${WHITE}Выбор [1]:${NC} "
|
||||||
|
read -r admin_mode
|
||||||
|
admin_mode="${admin_mode:-1}"
|
||||||
|
|
||||||
|
local admin_ids=""
|
||||||
|
if [ "$admin_mode" = "2" ]; then
|
||||||
|
echo -ne " ${WHITE}ID администраторов (через пробел/запятую):${NC} "
|
||||||
|
read -r admin_ids
|
||||||
|
admin_ids=$(echo "$admin_ids" | tr ' ' ',' | sed 's/,,*/,/g; s/^,//; s/,$//')
|
||||||
|
fi
|
||||||
|
|
||||||
{
|
{
|
||||||
echo "BOT_TOKEN=$token"
|
echo "BOT_TOKEN=$token"
|
||||||
[ -n "$admin_ids" ] && echo "ALLOWED_IDS=$admin_ids"
|
[ -n "$admin_ids" ] && echo "ALLOWED_IDS=$admin_ids"
|
||||||
} > "$BOT_DIR/.env"
|
} > "$BOT_DIR/.env"
|
||||||
|
|
||||||
if [ -z "$admin_ids" ]; then
|
|
||||||
echo -e " ${YELLOW}Авто-режим: первый кто напишет /start станет админом${NC}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
chmod 600 "$BOT_DIR/.env"
|
chmod 600 "$BOT_DIR/.env"
|
||||||
log_success ".env создан"
|
log_success ".env создан"
|
||||||
else
|
else
|
||||||
@@ -841,6 +846,59 @@ SVCEOF
|
|||||||
systemctl enable "$BOT_SERVICE" &>/dev/null
|
systemctl enable "$BOT_SERVICE" &>/dev/null
|
||||||
systemctl restart "$BOT_SERVICE" 2>/dev/null || systemctl start "$BOT_SERVICE"
|
systemctl restart "$BOT_SERVICE" 2>/dev/null || systemctl start "$BOT_SERVICE"
|
||||||
|
|
||||||
|
# Если авто-режим — ждём пока бот словит первого админа
|
||||||
|
local has_ids
|
||||||
|
has_ids=$(grep "^ALLOWED_IDS=" "$BOT_DIR/.env" 2>/dev/null | cut -d= -f2)
|
||||||
|
if [ -z "$has_ids" ]; then
|
||||||
|
echo ""
|
||||||
|
echo -e " ${YELLOW}╔══════════════════════════════════════════════════════╗${NC}"
|
||||||
|
echo -e " ${YELLOW}║${NC} ${BOLD}Ожидание администратора${NC} ${YELLOW}║${NC}"
|
||||||
|
echo -e " ${YELLOW}║${NC} ${YELLOW}║${NC}"
|
||||||
|
echo -e " ${YELLOW}║${NC} Откройте бота в Telegram и отправьте ${CYAN}/start${NC} ${YELLOW}║${NC}"
|
||||||
|
echo -e " ${YELLOW}║${NC} Бот автоматически назначит вас администратором ${YELLOW}║${NC}"
|
||||||
|
echo -e " ${YELLOW}║${NC} ${YELLOW}║${NC}"
|
||||||
|
echo -e " ${YELLOW}║${NC} ${DIM}Нажмите Ctrl+C чтобы пропустить${NC} ${YELLOW}║${NC}"
|
||||||
|
echo -e " ${YELLOW}╚══════════════════════════════════════════════════════╝${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
local frames=('⠋' '⠙' '⠹' '⠸' '⠼' '⠴' '⠦' '⠧' '⠇' '⠏')
|
||||||
|
local i=0
|
||||||
|
local waited=0
|
||||||
|
local max_wait=300 # 5 минут максимум
|
||||||
|
|
||||||
|
# Ловим Ctrl+C чтобы выйти из ожидания без убийства скрипта
|
||||||
|
local interrupted=0
|
||||||
|
trap 'interrupted=1' INT
|
||||||
|
|
||||||
|
while [ $waited -lt $max_wait ] && [ $interrupted -eq 0 ]; do
|
||||||
|
printf "\r ${CYAN}${frames[$i]}${NC} Ожидание... напишите /start боту (%d сек) " "$waited" >&2
|
||||||
|
i=$(( (i+1) % ${#frames[@]} ))
|
||||||
|
sleep 1
|
||||||
|
waited=$((waited + 1))
|
||||||
|
|
||||||
|
# Проверяем появился ли ALLOWED_IDS
|
||||||
|
has_ids=$(grep "^ALLOWED_IDS=" "$BOT_DIR/.env" 2>/dev/null | cut -d= -f2)
|
||||||
|
if [ -n "$has_ids" ]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
trap - INT
|
||||||
|
printf "\r\033[K" >&2 # очистить строку со спиннером
|
||||||
|
|
||||||
|
if [ -n "$has_ids" ]; then
|
||||||
|
echo ""
|
||||||
|
log_success "Администратор назначен!"
|
||||||
|
echo -e " ${WHITE}ID:${NC} ${GREEN}${has_ids}${NC}"
|
||||||
|
elif [ $interrupted -eq 1 ]; then
|
||||||
|
echo ""
|
||||||
|
log_warning "Пропущено. Добавить админа позже: меню → Telegram-бот → Настройки"
|
||||||
|
else
|
||||||
|
echo ""
|
||||||
|
log_warning "Таймаут (5 мин). Добавить админа: меню → Telegram-бот → Настройки"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
log_success "Бот установлен и запущен!"
|
log_success "Бот установлен и запущен!"
|
||||||
echo -e " ${DIM}Проверка: systemctl status $BOT_SERVICE${NC}"
|
echo -e " ${DIM}Проверка: systemctl status $BOT_SERVICE${NC}"
|
||||||
|
|||||||
Reference in New Issue
Block a user