mirror of
https://github.com/anten-ka/gotelegram_pro.git
synced 2026-05-19 14:26:02 +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 "Токен не может быть пустым"
|
||||
done
|
||||
|
||||
echo -ne " ${WHITE}ID администраторов (через пробел/запятую, Enter = авто):${NC} "
|
||||
read -r admin_ids
|
||||
# Нормализуем: пробелы и запятые → запятые
|
||||
admin_ids=$(echo "$admin_ids" | tr ' ' ',' | sed 's/,,*/,/g; s/^,//; s/,$//')
|
||||
echo ""
|
||||
echo -e " ${WHITE}Как добавить администратора?${NC}"
|
||||
echo -e " ${CYAN}1${NC}) Автоматически — бот определит ID при первом /start"
|
||||
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"
|
||||
[ -n "$admin_ids" ] && echo "ALLOWED_IDS=$admin_ids"
|
||||
} > "$BOT_DIR/.env"
|
||||
|
||||
if [ -z "$admin_ids" ]; then
|
||||
echo -e " ${YELLOW}Авто-режим: первый кто напишет /start станет админом${NC}"
|
||||
fi
|
||||
|
||||
chmod 600 "$BOT_DIR/.env"
|
||||
log_success ".env создан"
|
||||
else
|
||||
@@ -841,6 +846,59 @@ SVCEOF
|
||||
systemctl enable "$BOT_SERVICE" &>/dev/null
|
||||
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 ""
|
||||
log_success "Бот установлен и запущен!"
|
||||
echo -e " ${DIM}Проверка: systemctl status $BOT_SERVICE${NC}"
|
||||
|
||||
Reference in New Issue
Block a user