@novikov433 said in не работает расширение:
почему оно не работает?
Что конкретно не работает?
Screenshot_1.png
@Q_Q said in Как отслеживать, что скрипт работает и не "упал" ?:
@kuzkuz ты можешь и просто асинхронку при on application пустить и пусть она пишет в тг раз в пару часов. Единственное, если ресурсы кончатся и потоки сдохнут, асинхронка останется, поэтому надо ещё условий докинуть, чтобы слать предсмертное сообщение потока асинхронки) и после ее убивать.
Ну если писать в ТГ реально, так зачем онапликейшн, просто первый поток будет это делать при старте. А стартовать он будет автоматически каждые 20-30 минут. Как только час сообщения нет - софт лежит. Вопрос только это фантазии или такое реально реализовать. Надо как в новом бас так и в старой версии. Очень старой. 23.2.2
@kuzkuz прикол метрики в том что можно смотреть графики, + насколько мне известно можно будет настроить различные алётры, которые будут приходить куда тебе удобно.
онапликейшен для тг нужен что бы запустить отдельный поток который будет мониторить нужные тебе параметры и стучать в тг, такое реально (и не очень сложно) реализовать. Что в новой, что в старой версии - без проблем, отправить сообщение в тг это ведь http запрос 🙂
В BAS лично мне не хватает пачку функций по аналогии с OnApplicationStart:
Если бы такие функции там были, можно было бы запихнуть нужное в них.
Да и вообще events штука полезная, я бы нашел применение onBrowserStart, onBrowserOpenUrl, etc.
@sergerdn said in Как отслеживать, что скрипт работает и не "упал" ?:
Если бы такие функции там были, можно было бы запихнуть нужное в них.
Да и вообще events штука полезная, я бы нашел применение onBrowserStart, onBrowserOpenUrl, etc.
Нейросеть нужнее что бы кубики придумывала )) Об этом сто раз просили, но раз раз пилит, то что ему по приколу
Есть программа, она же что то делает.
Скачивает порнушку например, ставит на неё лайки, или делает гугл ADS.
За час она вырабатывает энную норму, и вы скорее всего её знаете. 10 фильмов, 2 аккаунта, и т.д
Ставите глобальную переменную, + время. Естественно асинхронно, и проверяете скок ваша скотина отпахала, если не 10 а 8, пишем в TG что так и так чет мало пинка, если 5 то ахтунг нас порнохаб забанил. Если 0, все приплыли.
@lomaster said in Как отслеживать, что скрипт работает и не "упал" ?:
Есть программа, она же что то делает.
Скачивает порнушку например, ставит на неё лайки, или делает гугл ADS.
За час она вырабатывает энную норму, и вы скорее всего её знаете. 10 фильмов, 2 аккаунта, и т.д
Ставите глобальную переменную, + время. Естественно асинхронно, и проверяете скок ваша скотина отпахала, если не 10 а 8, пишем в TG что так и так чет мало пинка, если 5 то ахтунг нас порнохаб забанил. Если 0, все приплыли.
Все проще. Софт работает в 30 потоков. Каждый поток запускается раз в n минут. И задача простая - при запуске потока №1 - давать сигнал - "я запустился". Всё. Больше ничего и не нужно.
@rkk9 said in Как отслеживать, что скрипт работает и не "упал" ?:
онапликейшен для тг нужен что бы запустить отдельный поток который будет мониторить нужные тебе параметры и стучать в тг, такое реально (и не очень сложно) реализовать. Что в новой, что в старой версии - без проблем, отправить сообщение в тг это ведь http запрос 🙂
Ну да, это как вариант. В онапликейшн запускается отдельный поток и раз в 30 минут, например, стучит в ТГ - "работаю". Тоже выглядит все просто и логично. Пока не понимаю как реализовать "стук" в ТГ. Буду разбираться завтра.
ps но в целом меня устроит и то что если поток №1 это будет делать при запуске. Тогда и огород городить не надо. Стартанул поток №1 и проделал "стук". Через n минут он выполнит работу, передохнет и снова запустится и снова "стукнет" - вот был бы норм вариант.
@lomaster said in Как отслеживать, что скрипт работает и не "упал" ?:
@kuzkuz Происходит отвал, работает 1 поток, отвалился 7, 14, и с 20 по 27... либо зависло что то. И ваша схема тютю.
Нет. Софт падает совсем или работает исправно. Та ситуация о которой пишете вы - не возможна.
Всё решается просто через гугл таблицы. В них можно написать скрипт в "App script" для приёма данных (заполнения таблицы), для проверки данных и отправки данных в телеграм бота (да-да, гугл таблица может фоном отправлять get-запросы). В "App script" можно создать тригер по времени, который запускает функцию проверки данных в таблице (например раз в минуту или раз в пол часа). Если непонятно, но интересно, могу расписать пошагово
@Fox said in Как отслеживать, что скрипт работает и не "упал" ?:
угл таблица может фоном отправлять get-запросы
Пока вопрос такой - если гугл таблица это может делать, так может быть такой же гет запрос можно сделать к ТГ непосредственно из софта на БАС?
@kuzkuz said in Как отслеживать, что скрипт работает и не "упал" ?:
@Fox said in Как отслеживать, что скрипт работает и не "упал" ?:
угл таблица может фоном отправлять get-запросы
Пока вопрос такой - если гугл таблица это может делать, так может быть такой же гет запрос можно сделать к ТГ непосредственно из софта на БАС?
Цель то какая? Я так понял, вам нужно оперативное уведомление о сбое вне зависимости от причины (вылетел BAS, крашнулся сервер и т.д.). Если да, то проверять работу нужно извне. А так для работы с телеграмм в BAS есть даже модуль :D
@Fox said in Как отслеживать, что скрипт работает и не "упал" ?:
\
Цель то какая? Я так понял, вам нужно оперативное уведомление о сбое вне зависимости от причины (вылетел BAS, крашнулся сервер и т.д.). Если да, то проверять работу нужно извне. А так для работы с телеграмм в BAS есть даже модуль
:D
Да, цель именно такая.
Я предположил, что можно раз в 30 минут заставить софт открывать некую ссылку (телеграмм) благодаря которой в ТГ будет приходить уведомление типа "работаю".
Модуль я так понимаю есть для новой версии бас, а мне нужно решить задачу эту и для старой версии тоже. В идеале решить без модуля.
@kuzkuz said in Как отслеживать, что скрипт работает и не "упал" ?:
Да, цель именно такая.
Я предположил, что можно раз в 30 минут заставить софт открывать некую ссылку (телеграмм) благодаря которой в ТГ будет приходить уведомление типа "работаю".
В итоге вы получите кучу спам сообщений от бота с текстом "работаю", вместо того, что бы в случае проблемы получить уведомление именно о проблеме
Модуль я так понимаю есть для новой версии бас, а мне нужно решить задачу эту и для старой версии тоже. В идеале решить без модуля.
Модуль появился в официальной сборке очень-очень давно, задолго до 23 версии BAS.
@Fox said in Как отслеживать, что скрипт работает и не "упал" ?:
В итоге вы получите кучу спам сообщений от бота с текстом "работаю", вместо того, что бы в случае проблемы получить уведомление именно о проблеме
Хм, понял. Слабо пока представляю логику , как реализовать уведомление именно при "вылете".
@Fox said in Как отслеживать, что скрипт работает и не "упал" ?:
Всё решается просто через гугл таблицы. В них можно написать скрипт в "App script" для приёма данных (заполнения таблицы), для проверки данных и отправки данных в телеграм бота (да-да, гугл таблица может фоном отправлять get-запросы). В "App script" можно создать тригер по времени, который запускает функцию проверки данных в таблице (например раз в минуту или раз в пол часа). Если непонятно, но интересно, могу расписать пошагово
Ясно! Есть тригер по времени. Если пол часа в таблице "0" , например, то срабатывает тригер.
Для начала нужен гугл аккаунт, авторизируемся, переходим в гугл таблицы https://docs.google.com/spreadsheets и создаём новую таблицу

Далее заходим в меню "расширения" -> "Apps script"

В нём пишем функцию заполнения данных из скрипта BAS через get-запрос. Отправлять мы будем номер строки для записи данных и сами данные:
function doGet(e) {
var rowNumber = e.parameter.rowNumber;
var data = e.parameter.data;
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
sheet.getRange(rowNumber, 1).setValue(new Date().getTime());
sheet.getRange(rowNumber, 2).setValue(data);
return ContentService.createTextOutput("Your advertisement could be here :)");
}
Благодаря этому скрипту данные будут заполнятся в таблице в таком виде:

Что бы проверить, что всё работает как надо, нужно сохранить скрипт

Затем нужно развернуть приложение "Начать развёртывание" -> "Новое развёртывание":

В описании укажите хотя бы цирфу, что бы потом не запутаться. В поле "запуск от имени" нужно указать "От моего имени" что бы данные в таблицу можно было добавлять без авторизации в гугле через get-запросы из BAS. В поле "У кого есть доступ" указать нужно "Все" тоже для того, что бы не авторизовываться в гугле при добавлении данных в таблицу

Затем нужно нажать "Начать развёртывание" и в появившемся окне скопировать ссылку на веб-приложение и нажать кнопку "Готово"

Сохранённая ссылка будет подобного вида:
https://script.google.com/macros/s/AKfyмногобукавOia06eA/exec
Пробуем передать данные. Для этого к ссылке нужно добавить параметры "rowNumber" и "data"
https://script.google.com/macros/s/AKfyмногобукавOia06eA/exec?rowNumber=1&data=potok_1
Заходим в BAS и создаём get-запрос с этой ссылкой. После выполнения проверяем добавились ли данные в таблицу:

Убедившись, что всё хорошо продолжаем работу. Теперь нам нужно создать функцию отправки сообщения в телеграмм. Для этого нужно создать бота телеграмм и получить id чата. Расписывать подробно не буду, проще прочитать здесь https://habr.com/ru/articles/306222/
Добавляем в наш скрипт в "Apps script" функцию отправки:
function sendTelegramMessage(messageText) {
var telegramToken = "BOT_TOKEN";
var chatId = "CHAT_ID";
var url = "https://api.telegram.org/bot" + telegramToken + "/sendMessage?chat_id=" + chatId + "&text=" + encodeURIComponent(messageText);
var response = UrlFetchApp.fetch(url);
}
Для проверки добавляем чуть ниже вызов функции:
sendTelegramMessage("hello")
выбираем функцию "sendTelegramMessage" и нажимаем кнопку "Выполнить". В итоге вам в тг от бота должно придти сообщение "hello".
Если всё хорошо, удаляем из кода строку sendTelegramMessage("hello") и приступаем к написанию функции проверки данных.
function checkForData() {
var minutesCheck = 5 //количество минут прошедших с последнего обновления данных, для регистрации проблемы
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var dataRange = sheet.getDataRange();
var data = dataRange.getValues();
var currentTime = new Date().getTime();
var resultArray = [];
for (var i = 0; i < data.length; i++) {
var timestamp = data[i][0];
var timeDifference = (currentTime - timestamp) / (1000 * 60);
if (timeDifference > minutesCheck) {
resultArray.push(data[i][1]);
}
}
if(resultArray.length > 0) {
sendTelegramMessage("Проблема с потоками:\n" + resultArray.join('\n'))
}
}
Функция проверяет столбец "A" с записанным временем и сверяет, прошло ли с того времени 5 минут, если прошло, то функция берёт данные с этой строки из столбца "B" и отправляет в тг
Для проверки выбираем функцию "checkForData" и жмём кнопку "Выполнить". В итоге вам в тг от бота должно придти сообщение

Если всё хорошо, можно приступить к установке тригера по времени. Для этого нужно нажать на значок с часами на левой панели "Apps scripts"

Справа внизу будет кнопка "Добавить триггер"

Функцию нужно выбрать "checkForData". Развёртывание лучше указать "Основное развёртывание". Тип триггера указать "по минутам" и промежуток указать "раз в минуту" (ну или по больше, если не так важно)

Нажимаем кнопку "Сохранить" и в списке триггеров должен появится только что созданный триггер:

В конце нужно сделать снова новое развёртывание и получить ссылку. Разворачивать кстати придётся при каждом изменении скрипта в будущем.
Приступаем к проверке работы всей системы. Создаём скрипт BAS на 10 потоков, в которых каждый поток узнаёт свой номер и отправляет его в качестве номера строки в таблице и данных. Для корректной передачи данных для параметра "data" нужно использовать действие "Url компонент кодировать/декодировать", а номер потока можно передавать просто цифрой:

Данные в таблице будут в таком виде:

Всё. Если остановить скрипт, то через минуту придёт сообщение в тг:

Сообщение об ошибках будет приходить в тг каждую минуту, потому что в настройках триггера было установлено частота выполнения "раз в минуту"
Я показал только самые основы, можно как угодно изменять, улучшать и усложнять скрипты на любых этапах (передавать данные в json, добавлять стили, цвета, кнопки управления в таблицу или тг чат и т.д.)