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