diff --git a/warp.sh b/warp.sh
index ec62368..564c5c3 100644
--- a/warp.sh
+++ b/warp.sh
@@ -430,7 +430,9 @@ show_3xui_guide() {
echo -e " ${CYAN}(пункт 1 основного подменю показывает полный JSON)${NC}"
echo -e ""
- echo -e "${YELLOW}═══ НАСТРОЙКА МАРШРУТИЗАЦИИ ═══${NC}\n"
+ echo -e "${YELLOW}═══ МАРШРУТИЗАЦИЯ (по желанию) ═══${NC}\n"
+ echo -e " ${DIM}По умолчанию WARP не используется пока нет маршрутизации.${NC}"
+ echo -e " ${DIM}Добавьте правило, чтобы указать какие сайты идут через WARP:${NC}\n"
echo -e "${YELLOW}Шаг 5.${NC} Перейдите в ${WHITE}Настройки Xray${NC} → ${WHITE}Routing Rules${NC}"
echo -e "${YELLOW}Шаг 6.${NC} Нажмите ${GREEN}+ Добавить правило${NC}"
echo -e "${YELLOW}Шаг 7.${NC} Заполните:"
@@ -441,9 +443,11 @@ show_3xui_guide() {
echo -e " ${GREEN}geosite:netflix${NC}"
echo -e " ${GREEN}geosite:disney${NC}"
echo -e " ${GREEN}geosite:spotify${NC}"
+ echo -e " ${GREEN}domain:chat.openai.com${NC}"
echo -e " ${GREEN}domain:claude.ai${NC}"
echo -e ""
- echo -e " ${DIM}Каждый домен — на отдельной строке в поле Domain${NC}"
+ echo -e " ${DIM}Каждый домен на отдельной строке.${NC}"
+ echo -e " ${DIM}Можно добавить свои домены или использовать network: tcp,udp для всего трафика.${NC}"
echo -e ""
echo -e "${YELLOW}═══ ПРИМЕНЕНИЕ ═══${NC}\n"
@@ -1453,7 +1457,7 @@ bot_handle_callback() {
tg_edit "$chat_id" "$msg_id" "$s" "$(kbd_back)" ;;
promo)
- local pt="🏢 Хостинг\n\n🌍 РФ и Европа\n👉 https://vk.cc/ct29NQ\n\nOFF60 — 60%\nantenka20 — +20% (3мес)\n\n🇧🇾 Беларусь\n👉 https://vk.cc/cUxAhj\nOFF60 — 60%"
+ local pt="🏢 Хостинг со скидкой до -60%\n\n🌍 РФ и Европа\n👉 https://vk.cc/ct29NQ\n\nOFF60 — 60% скидка\nantenka20 — +20% к балансу (3мес)\nantenka6 — +15% к балансу (6мес)\nantenka12 — +5% к балансу (12мес)\n\n🇧🇾 Беларусь\n👉 https://vk.cc/cUxAhj\nOFF60 — 60% скидка"
tg_edit "$chat_id" "$msg_id" "$pt" "$(kbd_back)" ;;
esac
}
@@ -1535,41 +1539,88 @@ stop_bot() {
echo -e "${GREEN}[OK] Бот остановлен.${NC}"; log_action "Bot stopped"
}
+bot_auto_chatid() {
+ echo -e "${YELLOW} Отправьте боту любое сообщение в Telegram, затем нажмите Enter.${NC}"
+ read -p " > " _
+ local c; c=$(curl -s "https://api.telegram.org/bot${BOT_TOKEN}/getUpdates?limit=1&offset=-1" | jq -r '.result[0].message.chat.id // empty')
+ if [ -n "$c" ]; then
+ save_config_val "BOT_CHAT_ID" "$c"; BOT_CHAT_ID="$c"
+ echo -e " ${GREEN}✓ Chat ID: $c${NC}"
+ return 0
+ else
+ echo -e " ${RED}✗ Не удалось определить Chat ID.${NC}"
+ return 1
+ fi
+}
+
+bot_wizard() {
+ clear
+ echo -e "\n${CYAN}━━━ Настройка Telegram-бота (быстрый старт) ━━━${NC}\n"
+
+ echo -e "${YELLOW}Шаг 1/3.${NC} Введите токен бота"
+ echo -e "${DIM} Получить: @BotFather → /newbot → скопировать токен${NC}\n"
+ read -p " Токен: " t
+ if [ -z "$t" ]; then echo -e " ${RED}Отменено.${NC}"; read -p "Enter..."; return; fi
+ save_config_val "BOT_TOKEN" "$t"; BOT_TOKEN="$t"
+ echo -e " ${GREEN}✓ Токен сохранён${NC}\n"
+
+ echo -e "${YELLOW}Шаг 2/3.${NC} Определение Chat ID (авто)"
+ if ! bot_auto_chatid; then
+ echo -e "\n ${YELLOW}Chat ID не определён — бот будет доступен всем.${NC}"
+ echo -e " ${WHITE}Можно задать вручную позже через меню бота (п.3).${NC}"
+ fi
+ echo ""
+
+ echo -e "${YELLOW}Шаг 3/3.${NC} Запуск бота"
+ start_bot
+ echo ""
+
+ if systemctl is-active warp-bot &>/dev/null; then
+ echo -e "${GREEN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
+ echo -e "${GREEN} ✅ Бот настроен и запущен!${NC}"
+ echo -e "${GREEN} Откройте бота в Telegram и нажмите /start${NC}"
+ echo -e "${GREEN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
+ else
+ echo -e "${YELLOW} ⚠ Бот может не запуститься. Проверьте:${NC}"
+ echo -e " ${WHITE}journalctl -u warp-bot --no-pager -n 10${NC}"
+ fi
+ read -p " Enter..."
+}
+
bot_menu() {
+ source "$WARP_CONF" 2>/dev/null
+ if [ -z "${BOT_TOKEN:-}" ]; then
+ bot_wizard
+ return
+ fi
+
while true; do
clear; source "$WARP_CONF" 2>/dev/null
local bs="${RED}Выкл${NC}"
- [ -f "$BOT_PID_FILE" ] && kill -0 "$(cat "$BOT_PID_FILE" 2>/dev/null)" 2>/dev/null && bs="${GREEN}Вкл ($(cat "$BOT_PID_FILE"))${NC}"
- local td="нет"; [ -n "${BOT_TOKEN:-}" ] && td="***${BOT_TOKEN: -6}"
- echo -e "${CYAN}━━━ Telegram Bot ━━━${NC}"
- echo -e "Статус: $bs"
- echo -e "Токен: ${YELLOW}$td${NC}"
- echo -e "Chat ID: ${YELLOW}${BOT_CHAT_ID:-нет}${NC}\n"
- echo -e "1) Токен бота"
- echo -e "2) Chat ID (авто)"
- echo -e "3) Chat ID (вручную)"
- echo -e "4) ${GREEN}Запустить${NC}"
- echo -e "5) ${RED}Остановить${NC}"
- echo -e "0) Назад"
- read -p "Выбор: " ch
+ systemctl is-active warp-bot &>/dev/null && bs="${GREEN}Вкл${NC}"
+ local td="***${BOT_TOKEN: -6}"
+ echo -e "\n${CYAN}━━━ Telegram Bot ━━━${NC}\n"
+ echo -e " Статус: $bs"
+ echo -e " Токен: ${YELLOW}$td${NC}"
+ echo -e " Chat ID: ${YELLOW}${BOT_CHAT_ID:-нет}${NC}\n"
+ echo -e " 1) Изменить токен"
+ echo -e " 2) Chat ID (авто)"
+ echo -e " 3) Chat ID (вручную)"
+ echo -e " 4) ${GREEN}Запустить${NC}"
+ echo -e " 5) ${RED}Остановить${NC}"
+ echo -e " 0) Назад"
+ echo ""
+ read -p " Выбор: " ch
case $ch in
- 1) echo "Токен:"; read -p "> " t
- [ -n "$t" ] && save_config_val "BOT_TOKEN" "$t" && BOT_TOKEN="$t" && echo -e "${GREEN}OK${NC}"
- read -p "Enter..." ;;
- 2) [ -z "${BOT_TOKEN:-}" ] && echo -e "${RED}Сначала токен!${NC}" && read -p "" && continue
- echo -e "${YELLOW}Отправьте боту сообщение, нажмите Enter.${NC}"; read -p ""
- local c; c=$(curl -s "https://api.telegram.org/bot${BOT_TOKEN}/getUpdates?limit=1&offset=-1" | jq -r '.result[0].message.chat.id // empty')
- if [ -n "$c" ]; then
- save_config_val "BOT_CHAT_ID" "$c"; BOT_CHAT_ID="$c"; echo -e "${GREEN}Chat ID: $c${NC}"
- else
- echo -e "${RED}Не удалось.${NC}"
- fi
- read -p "Enter..." ;;
- 3) echo "Chat ID:"; read -p "> " c
- [ -n "$c" ] && save_config_val "BOT_CHAT_ID" "$c" && BOT_CHAT_ID="$c" && echo -e "${GREEN}OK${NC}"
- read -p "Enter..." ;;
- 4) start_bot; read -p "Enter..." ;;
- 5) stop_bot; read -p "Enter..." ;;
+ 1) echo " Токен:"; read -p " > " t
+ [ -n "$t" ] && save_config_val "BOT_TOKEN" "$t" && BOT_TOKEN="$t" && echo -e " ${GREEN}OK${NC}"
+ read -p " Enter..." ;;
+ 2) bot_auto_chatid; read -p " Enter..." ;;
+ 3) echo " Chat ID:"; read -p " > " c
+ [ -n "$c" ] && save_config_val "BOT_CHAT_ID" "$c" && BOT_CHAT_ID="$c" && echo -e " ${GREEN}OK${NC}"
+ read -p " Enter..." ;;
+ 4) start_bot; read -p " Enter..." ;;
+ 5) stop_bot; read -p " Enter..." ;;
0) return ;;
esac
done
@@ -1759,10 +1810,14 @@ run_startup() {
((s++))
printf " ${CYAN}[%d/%d]${NC} ${YELLOW}⏳${NC} Установка gowarp..." "$s" "$total"
+ local upgrade_msg="установлена"
+ if [ -f "/usr/local/bin/gowarp" ] && [ "$(readlink -f "$0" 2>/dev/null)" != "/usr/local/bin/gowarp" ]; then
+ upgrade_msg="обновлена (v${WARP_VERSION})"
+ fi
if [ "$(readlink -f "$0" 2>/dev/null)" != "/usr/local/bin/gowarp" ]; then
cp -f "$0" "/usr/local/bin/gowarp"; chmod +x "/usr/local/bin/gowarp"
fi
- printf "\r ${CYAN}[%d/%d]${NC} ${GREEN}✓${NC} Команда gowarp \n" "$s" "$total"
+ printf "\r ${CYAN}[%d/%d]${NC} ${GREEN}✓${NC} Команда gowarp %s \n" "$s" "$total" "$upgrade_msg"
((s++))
printf " ${CYAN}[%d/%d]${NC} ${YELLOW}⏳${NC} Определение IP..." "$s" "$total"