Если вы получите страницу запросом - капча не погрузиться,потом получите капчу и решите её и всё будет нормально
Как сейчас отправлять уведомления на Телеграм telegram???
-
Мой скрипт при отправке уведомления в Телеграм стал выдавать сообщение Thread ended with message "Failed to get page https://api.telegram.org/bot1280...
Уведомления отправляю стандартным модулем Telegram v.1
Предполагаю что это связано с блокировками Телеграма в России (март 2026 года)
Кто знает как решить проблему??? Прокси на HTTP - клиента?? -
@andreyx said in Как сейчас отправлять уведомления на Телеграм telegram???:
Мой скрипт при отправке уведомления в Телеграм стал выдавать сообщение Thread ended with message "Failed to get page https://api.telegram.org/bot1280...
Уведомления отправляю стандартным модулем Telegram v.1
Предполагаю что это связано с блокировками Телеграма в России (март 2026 года)
Кто знает как решить проблему??? Прокси на HTTP - клиента??https://community.bablosoft.com/topic/30055/установить-прокси-для-любого-кубика/7?_=1773995164930
-
У самого такая проблема уже пару недель, только что доделал до конца все.
Выход – реверс-прокси.
Берём бесплатный хостинг с доменом третьего уровня, который не заблокирован в РФ (или другом ограниченном гео), и он будет полностью передавать все запросы на официальный API Telegram.
После этого в коде Telegram-моделей БАСв и в xml-проекте меняем официальный URL на новый прокси-домен.
Что пробовал из бесплатных хостингов
ИИ рекомендовал pythonanywhere и cloudflare pages – сделал, но коннект к ним тоже не проходит.
Больше всего бесплатных доменов третьего уровня – на PHP-хостингах. До них пока не добрался, хватило Netlify и Vercel. В конце заметки дам ссылку на прокси на верселе.
Что с Vercel и Netlify
- Сервисы сами навайбкодят вам прокси-приложение по вашему запросу.
- Вроде безлимит по времени жизни поддомена бесплатно пока проект не удален.
- У Netlify считаются запросы к вашему сервису: бесплатно 125к в месяц.
- Ещё пишут, что проекты на бесплатных тарифах засыпают через 15–30 минут неактивности. Клод код сказал что разница из неглубокого сна это плюсом пара секунд.
- В вайбкоде v0.app pекомендую Pro-модель.
Младшие модели пишут заметно хуже и медленнее.
Как бороться со сном: поставить бесплатный крон-джоб на 15 минут на сайте cron-job.org.
Правда, он без ВПН вроде не работает. Хотя может и не нужно, если он просыпается за пару секунд.
Что отбраковал
ИИ от Replit – опубликованный проект бесплатно живет 30 дней, потом надо переопубликовывать. Неудобно.
Как проверить, работает ли твой новый URL
Запрос
/getMeпосле/бот123:токен/. Пример:
https://ваш_проект.netlify.app/bot999999999:AAAA....ts/getMeЕсли ответ в json с именем вашего бота – всё ок. Быстрый вариант теста в один гет запрос.
Для СУЩЕСТВУЮЩЕГО проекта
- Выключить BAS, чтобы он не перезаписал измененным вами проект из оперативной памяти.
- Найдите в XML-файле проекта строку, которая содержит https://api.telegram.org/bot.
Обычно она начинается так:
_url_temp = "https://api.telegram.org/bot"+ "Замените домен для каждого вызова отправки сообщения на рабочий прокси-URL. Сколько телеграм блоков в проекте - столько раз и заменить.
Изменение в модуле телеграм для создания НОВЫХ рабочих блоков
Файл:
C:\Users\admin\AppData\Roaming\BrowserAutomationStudio\apps\29.3.1\modules\Telegram\send_message_code.js29-я строчка.
Заменяем"api.telegram.org"на"ваш_проект.netlify.app".Версия 29.3.1 и имя пользователя у каждого свои – сами понимаете.
PowerShell-скрипт для автоматизации
Я сделал скрипт, который сам заменяет в крайней версии БАСа нужный URL.
Можно задать новый домен прямо в скрипте и запускать по клику на файл или в терминале через флаг--new_url.replace_telegram_domain.ps1 - может стоило файлом прикрепить?
<# .SYNOPSIS Скрипт замены URL Telegram API на пользовательский домен или восстановления из резервной копии. .DESCRIPTION Скрипт находит последнюю версию BrowserAutomationStudio, создаёт резервную копию файла send_message_code.js, заменяет в нём "api.telegram.org/bot" на "<ваш_домен>/bot" и сохраняет изменения. Режим --recover восстанавливает исходный файл из резервной копии. .PARAMETER new_url Новый домен (или полный URL). Будет извлечён домен третьего уровня (без протокола и пути). Примеры: --new_url https://myproject.vercel.app , --new_url myproject.vercel.app .PARAMETER recover Восстановить оригинальный файл из send_message_code.js.bak. .EXAMPLE .\replace_telegram_domain.ps1 -new_url "https://myproject.vercel.app" Заменяет api.telegram.org/bot на myproject.vercel.app/bot в актуальном файле. .EXAMPLE .\replace_telegram_domain.ps1 -recover Восстанавливает оригинальный файл из резервной копии (если она существует и содержит корректную строку). #> param( [string]$new_url, [switch]$recover ) # ============================================================ # ВСТРОЕННЫЙ ДОМЕН (если указан, используется при отсутствии -new_url) # ============================================================ $default_new_url = "" # <-- сюда можно прописать домен, например "myproxy.example.com" # Функция для получения чистого домена из URL function Get-CleanDomain { param([string]$url) $url = $url.Trim() if ($url -notmatch '^https?://') { $url = "http://$url" } try { $uri = [System.Uri]::new($url) $hostname = $uri.Host return $hostname } catch { Write-Error "Не удалось распознать домен из '$url'." exit 1 } } # Функция ожидания нажатия клавиши перед выходом function WaitForExit { Write-Host "`nНажмите любую клавишу для выхода..." $null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown") exit } # Функция восстановления из резервной копии function Invoke-Recover { Write-Host "=== РЕЖИМ ВОССТАНОВЛЕНИЯ ===" # Определяем пользователя и путь $username = $env:USERNAME if (-not $username) { Write-Error "Не удалось определить имя пользователя." WaitForExit } $appsPath = "C:\Users\$username\AppData\Roaming\BrowserAutomationStudio\apps" if (-not (Test-Path $appsPath)) { Write-Error "Папка с версиями не найдена: $appsPath" WaitForExit } # Поиск последней версии $versionFolders = Get-ChildItem -Path $appsPath -Directory | Where-Object { $_.Name -match '^\d+(\.\d+){1,2}$' } if ($versionFolders.Count -eq 0) { Write-Error "Не найдено ни одной папки версии в $appsPath" WaitForExit } $latestVersion = $versionFolders | Sort-Object { [version]$_.Name } -Descending | Select-Object -First 1 $latestVersionPath = $latestVersion.FullName Write-Host "Найдена последняя версия: $($latestVersion.Name)" $targetFile = Join-Path -Path $latestVersionPath -ChildPath "modules\Telegram\send_message_code.js" $backupFile = $targetFile -replace '\.js$', '.js.bak' if (-not (Test-Path $backupFile)) { Write-Error "Резервная копия не найдена: $backupFile" WaitForExit } Write-Host "Найдена резервная копия: $backupFile" # Проверяем, что в бэкапе есть оригинальная строка $backupContent = Get-Content -Path $backupFile -Raw -ErrorAction Stop $searchPattern = "api.telegram.org/bot" if ($backupContent -notmatch $searchPattern) { Write-Error "В резервной копии отсутствует строка '$searchPattern'. Восстановление отменено (возможно, бэкап повреждён)." WaitForExit } Write-Host "Проверка пройдена: в бэкапе найдено '$searchPattern'" # Переименовываем текущий файл (если существует) в .old if (Test-Path $targetFile) { $oldFile = $targetFile -replace '\.js$', '.js.old' if (Test-Path $oldFile) { Remove-Item -Path $oldFile -Force Write-Host "Удалён старый .old файл" } Rename-Item -Path $targetFile -NewName (Split-Path $oldFile -Leaf) -Force Write-Host "Текущий файл переименован в $oldFile" } # Восстанавливаем из бэкапа Copy-Item -Path $backupFile -Destination $targetFile -Force Write-Host "Файл восстановлен из резервной копии: $targetFile" # Удаляем бэкап (можно закомментировать, если хотите оставить) Remove-Item -Path $backupFile -Force Write-Host "Резервная копия удалена." Write-Host "Восстановление успешно завершено!" WaitForExit } # ========== ОСНОВНАЯ ЛОГИКА ========== # Если указан ключ -recover, выполняем восстановление и выходим if ($recover) { Invoke-Recover exit } # Определяем итоговый URL для замены $final_url = "" if ($new_url) { $final_url = $new_url Write-Host "Используется домен из параметра -new_url: $final_url" } elseif ($default_new_url) { $final_url = $default_new_url Write-Host "Используется домен из встроенной переменной `$default_new_url: $final_url" } else { Write-Error "Ошибка: не указан -new_url и переменная `$default_new_url пуста. Укажите домен через --new_url ваш_домен.xyz или впишите его в скрипт." WaitForExit } # 1. Получаем имя текущего пользователя $username = $env:USERNAME if (-not $username) { Write-Error "Не удалось определить имя пользователя." WaitForExit } # 2. Базовый путь к папке apps $appsPath = "C:\Users\$username\AppData\Roaming\BrowserAutomationStudio\apps" if (-not (Test-Path $appsPath)) { Write-Error "Папка с версиями не найдена: $appsPath" WaitForExit } # 3. Находим все подпапки, которые выглядят как версии $versionFolders = Get-ChildItem -Path $appsPath -Directory | Where-Object { $_.Name -match '^\d+(\.\d+){1,2}$' } if ($versionFolders.Count -eq 0) { Write-Error "Не найдено ни одной папки версии в $appsPath" WaitForExit } $latestVersion = $versionFolders | Sort-Object { [version]$_.Name } -Descending | Select-Object -First 1 $latestVersionPath = $latestVersion.FullName Write-Host "Найдена последняя версия: $($latestVersion.Name)" # 4. Путь к целевому файлу $targetFile = Join-Path -Path $latestVersionPath -ChildPath "modules\Telegram\send_message_code.js" if (-not (Test-Path $targetFile)) { Write-Error "Файл не найден: $targetFile" WaitForExit } Write-Host "Целевой файл: $targetFile" # 5. Проверяем наличие строки "api.telegram.org/bot" в файле $searchPattern = "api.telegram.org/bot" $content = Get-Content -Path $targetFile -Raw -ErrorAction Stop if ($content -notmatch $searchPattern) { Write-Error "В файле не найдено вхождение '$searchPattern'. Замена не требуется (возможно, уже заменён или повреждён)." WaitForExit } Write-Host "Найдено вхождение '$searchPattern', продолжаем..." # 6. Создаём резервную копию (переименовываем в .bak) $backupFile = $targetFile -replace '\.js$', '.js.bak' if (Test-Path $backupFile) { Write-Host "Старый бэкап уже существует: $backupFile. Удаляем..." Remove-Item -Path $backupFile -Force } Rename-Item -Path $targetFile -NewName (Split-Path $backupFile -Leaf) -Force Write-Host "Создан бэкап: $backupFile" # 7. Обрабатываем новый домен из параметра --new_url или из переменной $cleanDomain = Get-CleanDomain -url $final_url if (-not $cleanDomain) { Write-Error "Не удалось получить домен из значения --new_url" WaitForExit } Write-Host "Новый домен: $cleanDomain" # 8. Заменяем все вхождения $newContent = $content -replace [regex]::Escape($searchPattern), "$cleanDomain/bot" # 9. Записываем обратно в исходный файл Set-Content -Path $targetFile -Value $newContent -NoNewline Write-Host "Готово! Файл обновлён. Исходная строка '$searchPattern' заменена на '$cleanDomain/bot'" WaitForExitВот пример того, что v0.app вам «навайбкодит»:
https://v0-telegram-proxy-api.vercel.app/В netlify тоже самое только на другом домене и нет чувства ужатости по кредитам в момент разработки.