mirror of
https://github.com/anten-ka/gotelegram_pro.git
synced 2026-05-19 21:56:05 +00:00
fix: admin ID при установке бота, check_port с полными путями ss, промо хостинг #2 в боте
Made-with: Cursor
This commit is contained in:
77
install.sh
77
install.sh
@@ -395,9 +395,19 @@ menu_setup_bot() {
|
||||
if systemctl is-active --quiet "$SERVICE_NAME" 2>/dev/null; then
|
||||
echo -e " Статус бота: ${GREEN}работает${NC}"
|
||||
echo ""
|
||||
# Показываем текущие настройки
|
||||
local cur_ids
|
||||
cur_ids=$(grep "^ALLOWED_IDS=" "$BOT_DIR/.env" 2>/dev/null | cut -d= -f2)
|
||||
if [ -n "$cur_ids" ]; then
|
||||
echo -e " Администратор(ы): ${WHITE}$cur_ids${NC}"
|
||||
else
|
||||
echo -e " Администратор: ${YELLOW}не задан (бот доступен всем)${NC}"
|
||||
fi
|
||||
echo ""
|
||||
echo -e " 1) Обновить файлы бота и перезапустить"
|
||||
echo -e " 2) Изменить BOT_TOKEN"
|
||||
echo -e " 3) Остановить бота"
|
||||
echo -e " 3) Изменить администратора (ALLOWED_IDS)"
|
||||
echo -e " 4) Остановить бота"
|
||||
echo -e " 0) Назад"
|
||||
local sub
|
||||
read -p " Выбор: " sub
|
||||
@@ -414,7 +424,7 @@ menu_setup_bot() {
|
||||
read -r tok
|
||||
tok=$(echo "$tok" | tr -d '[:space:]')
|
||||
if [ -n "$tok" ]; then
|
||||
echo "BOT_TOKEN=$tok" > "$BOT_DIR/.env"
|
||||
sed -i "s/^BOT_TOKEN=.*/BOT_TOKEN=$tok/" "$BOT_DIR/.env"
|
||||
chmod 600 "$BOT_DIR/.env"
|
||||
systemctl restart "$SERVICE_NAME"
|
||||
echo -e "${GREEN}[*] Токен обновлён, бот перезапущен.${NC}"
|
||||
@@ -423,6 +433,23 @@ menu_setup_bot() {
|
||||
fi
|
||||
;;
|
||||
3)
|
||||
echo -e "${YELLOW}Введите Telegram ID администратора (или несколько через запятую):${NC}"
|
||||
echo -e " ${CYAN}Узнать ID: @userinfobot, @getmyid_bot или @RawDataBot${NC}"
|
||||
echo -e " ${CYAN}Оставьте пустым — бот будет доступен всем.${NC}"
|
||||
local new_ids
|
||||
read -r new_ids
|
||||
new_ids=$(echo "$new_ids" | tr -d '[:space:]')
|
||||
# Удаляем старую строку ALLOWED_IDS
|
||||
sed -i "/^ALLOWED_IDS=/d" "$BOT_DIR/.env"
|
||||
if [ -n "$new_ids" ]; then
|
||||
echo "ALLOWED_IDS=$new_ids" >> "$BOT_DIR/.env"
|
||||
echo -e "${GREEN}[*] Администратор(ы): $new_ids. Перезапуск...${NC}"
|
||||
else
|
||||
echo -e "${GREEN}[*] Ограничение снято, бот доступен всем. Перезапуск...${NC}"
|
||||
fi
|
||||
systemctl restart "$SERVICE_NAME"
|
||||
;;
|
||||
4)
|
||||
systemctl stop "$SERVICE_NAME"
|
||||
echo -e "${YELLOW}Бот остановлен.${NC}"
|
||||
;;
|
||||
@@ -466,19 +493,41 @@ menu_setup_bot() {
|
||||
# venv + pip
|
||||
install_bot_deps
|
||||
|
||||
# BOT_TOKEN
|
||||
# BOT_TOKEN + ALLOWED_IDS
|
||||
if [ ! -f "$BOT_DIR/.env" ]; then
|
||||
echo ""
|
||||
echo -e "${YELLOW}Введите BOT_TOKEN от @BotFather:${NC}"
|
||||
echo -e " ${CYAN}(Откройте @BotFather в Telegram → /newbot → скопируйте токен)${NC}"
|
||||
local TOKEN=""
|
||||
while [ -z "$TOKEN" ]; do
|
||||
read -r TOKEN
|
||||
TOKEN=$(echo "$TOKEN" | tr -d '[:space:]')
|
||||
[ -z "$TOKEN" ] && echo -e "${RED}Токен не может быть пустым.${NC}"
|
||||
done
|
||||
echo "BOT_TOKEN=$TOKEN" > "$BOT_DIR/.env"
|
||||
|
||||
echo ""
|
||||
echo -e "${YELLOW}Введите ваш Telegram ID (администратор бота):${NC}"
|
||||
echo -e " ${CYAN}Как узнать свой ID:${NC}"
|
||||
echo -e " • Бот ${WHITE}@userinfobot${NC} — напишите ему /start"
|
||||
echo -e " • Бот ${WHITE}@getmyid_bot${NC} — напишите ему /start"
|
||||
echo -e " • Бот ${WHITE}@RawDataBot${NC} — напишите ему /start"
|
||||
echo -e " ${CYAN}Можно указать несколько через запятую: 123456,789012${NC}"
|
||||
echo -e " ${CYAN}Оставьте пустым, чтобы бот был доступен всем.${NC}"
|
||||
local ADMIN_IDS=""
|
||||
read -r ADMIN_IDS
|
||||
ADMIN_IDS=$(echo "$ADMIN_IDS" | tr -d '[:space:]')
|
||||
|
||||
{
|
||||
echo "BOT_TOKEN=$TOKEN"
|
||||
[ -n "$ADMIN_IDS" ] && echo "ALLOWED_IDS=$ADMIN_IDS"
|
||||
} > "$BOT_DIR/.env"
|
||||
chmod 600 "$BOT_DIR/.env"
|
||||
echo -e "${GREEN}[*] .env создан.${NC}"
|
||||
|
||||
if [ -n "$ADMIN_IDS" ]; then
|
||||
echo -e "${GREEN}[*] .env создан. Администратор(ы): $ADMIN_IDS${NC}"
|
||||
else
|
||||
echo -e "${GREEN}[*] .env создан. Бот доступен всем пользователям.${NC}"
|
||||
fi
|
||||
else
|
||||
echo -e "${GREEN}[*] .env уже есть — используем существующий.${NC}"
|
||||
fi
|
||||
@@ -586,10 +635,12 @@ async def check_port(port):
|
||||
if await proxy_running():
|
||||
hp = await docker_val("{{range $p,$c := .HostConfig.PortBindings}}{{(index $c 0).HostPort}} {{end}}")
|
||||
if str(port) in hp.split(): return None
|
||||
code, out, _ = await sh("ss","-tlnp", timeout=5)
|
||||
if code != 0: code, out, _ = await sh("netstat","-tlnp", timeout=5)
|
||||
for line in out.splitlines():
|
||||
if f":{port} " in line or f":{port}\t" in line: return line
|
||||
for cmd in ["/usr/sbin/ss", "/sbin/ss", "ss", "netstat"]:
|
||||
code, out, _ = await sh(cmd, "-tlnp", timeout=5)
|
||||
if code == 0 and out:
|
||||
for line in out.splitlines():
|
||||
if re.search(rf":{port}\b", line): return line
|
||||
return None
|
||||
return None
|
||||
|
||||
async def docker_containers_info():
|
||||
@@ -763,8 +814,12 @@ async def cmd_promo(update, ctx):
|
||||
msg = update.message or (update.callback_query and update.callback_query.message)
|
||||
if not update.effective_user or not msg: return
|
||||
if not _ok(update.effective_user.id): return
|
||||
text = ("💰 <b>Хостинг со скидкой до -60%</b>\n"
|
||||
f"Ссылка: {PROMO_LINK}\n\nПромокоды: OFF60, antenka20, antenka6, antenka12\n\nДонат: {TIP_LINK}")
|
||||
text = ("💰 <b>Хостинг со скидкой до -60%</b>\n\n"
|
||||
f"<b>Хостинг #1:</b> {PROMO_LINK}\n"
|
||||
"Промокоды: OFF60, antenka20, antenka6, antenka12\n\n"
|
||||
"<b>Хостинг #2:</b> https://vk.cc/cUxAhj\n"
|
||||
"Промокод: OFF60\n\n"
|
||||
f"☕ Донат: {TIP_LINK}")
|
||||
kb = InlineKeyboardMarkup([[InlineKeyboardButton("◀️ Меню", callback_data="menu_main")]])
|
||||
if update.callback_query:
|
||||
await update.callback_query.edit_message_text(text, parse_mode="HTML", reply_markup=kb)
|
||||
|
||||
Reference in New Issue
Block a user