Отлов ошибок шаблона, с моментальным оповещением в телеграм.

backoff

Client
Регистрация
20.04.2015
Сообщения
6 355
Реакции
6 640
Баллы
113
Для кого этот шаблон?
Хорошо подойдет для новичков, а так же для старичков. Отлов ошибок он можно сказать вечный.

В это шаблоне будут разобраны части:
  • как поймать ошибку
  • как ее обработать / записать
  • как оповестить себя об этом
Поехали.

Как говорится - "Все гениальное - просто", на самом деле так и есть.
На сколько бы простым не казался шаблон, он сэкономил мне уйму времени и сил.

Выглядит он так:
1.jpg


Первый кубик шарпа получает ошибку инстанса и записывает ее в переменную - action_errors
Код:
Развернуть Свернуть Копировать
//Получить ошибку из-за которой выполнение шаблона остановилось
var error = project.GetLastError();
var tmp = "";
if(error != null)
    tmp = string.Format("ActionComment: {0}.\r\nActionGroupId: {1}.\r\nActionId: {2}\r\n--------------------------------------------------------", error.ActionComment, error.ActionGroupId, error.ActionId);
return tmp;

Сохранение ошибки происходит в корневую папку проекта, где лежит сам шаблон (путь можно поменять) в текстовый файл - actions_errors.txt

{-Variable.login-} - Записывается логин на котором произошла ошибка. Так как я пользуюсь большой базой аккаунтов к разным сайтам, и логины всегда разные, очень удобно использовать именно логин.
{-TimeNow.Date-} - эта переменная отвечает за время, она указывает когда точно ошибка возникла
{-Variable.action_errors-} - это список данных об ошибке инстанса

Как выглядит инфа об ошибке с тексте:

Код:
Развернуть Свернуть Копировать
marmarisDood
02/16/2018 18:05:22
ActionComment: Конструктор действий, тип RiseEvent.
ActionGroupId: 93a06fc7-2ff2-43e1-9a3e-408ba7cfb117.
ActionId: ec7ffdac-a4ec-4488-9a87-df27cf5c1de5
--------------------------------------------------------

из ошибки нам становится понятно, что:
  1. на каком логине ошибка произошла
  2. в какое время
  3. при каком действии (в основном это "click")
  4. в какой группе кубиков (не важная инфа)
  5. в каком кубике (самая важная инфа)
Делаем визуализацию, чтобы визуально понятно было где и на каком шаге произошла ошибка, и что при этом было на экране. Делаем скрин экрана, и записываем под названием логина, так как логин уникален.

(на одном скрине показаны настройки данного кубика, по созданию скриншота ошибки)

4.jpg



Дальше у нас идет перезапись в саму БД
Зачем это делать? Просто потому что это очень удобно и всегда можно отсортировать аккаунты по нужному признаку, в данном случае по ошибке, для дальнейшего перезапуска или фиксирования.

2.jpg


Мы удаляем строку из базы данных по логину, так как логины у нас не повторяются и имеют уникальные значения.

Следующий шаг - это полная перезапись строки, в которой мы записываем много информации, но в конце добавляем в столбец status с пометкой errore

Готово, база перезаписана. Теперь надо оповестить же об этом.
Теперь начинается самое интересное и очень полезное.

Чтобы сделать оповещение, надо сделать своего бота, создать свой канал, добавить бота и посылать команды какие нужно.

1. регаем бота!
пишем в поиске botfather выбираем ответ где есть галочка - это официальный бот! Он нам и нужен

3.jpg


Подумал, что нет смысла делать кучу скринов о том, как создать телеграм бота и телеграм канал, этого материала достаточно на ютубе.

понравилось данное видео

В общем после того как вы создали своего бота, создали свой канал, добавили бота в канал админом, только с админ правами бот сможет постить.

telega_send.jpg


сам запрос на постинг:
Код:
Развернуть Свернуть Копировать
https://api.telegram.org/TOKEN_bot/sendMessage?chat_id=@ВашIDКанала&text=тут ваш текст

пример:
https://api.telegram.org/bot373546537:AAGKerfDFHFGHFGGDGERWERTWERGWERGER/sendMessage?chat_id=@RGRGRGHRHRHRGHRGHRHG&text=тут ваш текст
  1. копируем токен для бота
  2. указываем id вашего чата
  3. добавляем переменную с текстом
Выглядеть будет так
telega_vid.jpg

Вы можете настроить абсолютно как угодно свои оповещения.
У меня настроено так:
[ Название шаблона ] Действие Описание

Достаточно одного бота и канала чтобы следить за всеми проектами, которые у вас есть. Достаточно лишь нужные пометки в каждом из шаблонов где вы будете использовать оповещение.

Применение оповещений, безграничны, ограничиваются только вашей фантазией, ну и знаниями самой зенки, но это все поправимо.

Как пример:
У меня есть шаблон который ходит по партнеркам и парсит профит и/или баланс, тоже удобно, оповещения в реальном времени о статусе баланса/вывода и тп.

PS \ я не смог добавить бота админом в приватный канал, сделал следующее, создал паблик канал, добавил бота админом, перевел канал из паблика в приватный.

PS \ логику создания шаба брал по кусочкам с этого форума. Спасибо всем, что делитесь информацией и помогаете друг другу.


АПГРЕЙД ТЕМЫ для опции с телеграмом
в процессе обсуждения найден более простой вариант отправки сообщения, на прямую от бота, а не через канал.
 
Номер конкурса шаблонов
  1. Первый конкурс шаблонов
Уровень сложности
Средний
Категория
  1. Другое

Вложения

Последнее редактирование:
Интересно
 
Очень годно, с телегой вообще класс...спасибо! :az:
 
А возможность слать скриншот страницы то есть (когда произошла ошибка)? А то как-то я не понял этот момент)
 
А возможность слать скриншот страницы
в смысле высылать скрин в телеграм? я реализовал только оповещение текстовое

чтобы высылать картинку, я так и не осилил этот момент в апи телеги, но можно выслать картинку урлом, она тогда нормально будет отображаться в телеге, но перед этим ее надо куда-то закачать.
но так как это оповещалка, не стал заморачиваться на отправку скрина. Мне текста за глаза хватает.
А тем более на первых стадиях отлова, скринов создается ну просто очень много, в основном с однотипными ошибками. Плюс ко всему в чат приходят уведомления с других шабов, поэтому не удобно отслеживать.

Но всегда можно доработать
 
  • Спасибо
Реакции: phoenixs, TIIGR и Gulid
чтобы высылать картинку, я так и не осилил этот момент в апи телеги, но можно выслать картинку урлом, она тогда нормально будет отображаться в телеге, но перед этим ее надо куда-то закачать.
пост запросом картинку постить в имгур , и уже ссылку кидать вместе с текстом в телегу , пойду докручу )
 
  • Спасибо
Реакции: R3re
пост запросом картинку постить в имгур , и уже ссылку кидать вместе с текстом в телегу , пойду докручу )
Да кошернее же прям в телегу картинку и отправлять через API )
 
ну я апи телеги не смотрел , возможно счас и это докручу , так реально круче будет.
 
PS \ я не смог добавить бота админом в приватный канал, сделал следующее, создал паблик канал, добавил бота админом, перевел канал из паблика в приватный.
Немного по другому у себя это реализовал: берете не id канала, а id чата с Вашим ботом. И в него шлете. Как итог, только Вы будете получать сообщения от бота, независимо, сколько людей добавит бота к себе в контакты - писать будет только Вам. Выглядит это примерно так:
KAgdalDHgWMQQr.png
 
Немного по другому у себя это реализовал: берете не id канала, а id чата с Вашим ботом. И в него шлете. Как итог, только Вы будете получать сообщения от бота, независимо, сколько людей добавит бота к себе в контакты - писать будет только Вам. Выглядит это примерно так:
KAgdalDHgWMQQr.png
Давно такую фишку в регистратор аккаунтов Вконтакте внедрил, чтоб он готовые акки слал дополнительно в телегу :)
 
  • Спасибо
Реакции: Биржевик
спасибо, обязательно внедрю, удобно
 
А почему скрин через CaptchaSaver.dll, если для этого есть специальный кубик обработки изображения? :)
Старая привычка или есть ощутимая разница?
 
Вау, просто супер, отличное решение, вот прям то что надо было. Есть шаблоны, которые вечно ошибки выдают и за неименеем, пока, нужных знаний, не могу решить вопрос с этим. Теперь думаю "отлов" будет более качественный. За телеграм отдельный плюс. Спасибо за труды.
 
  • Спасибо
Реакции: backoff
Вау, просто супер, отличное решение, вот прям то что надо было. Есть шаблоны, которые вечно ошибки выдают и за неименеем, пока, нужных знаний, не могу решить вопрос с этим. Теперь думаю "отлов" будет более качественный. За телеграм отдельный плюс. Спасибо за труды.
рад что пригодилось :ay:
 
  • Спасибо
Реакции: TIIGR и Gulid
А почему скрин через CaptchaSaver.dll, если для этого есть специальный кубик обработки изображения? :-)
Старая привычка или есть ощутимая разница?
когда было придуманно , был походу только капча сейвер.
 
Я просто даже и не знал, что сейчас под это дело есть отдельный кубик, хоть и последняя версия стоит :)
Где он находится хоть, поделитесь
 
  • Спасибо
Реакции: TIIGR и Gulid
рад что пригодилось :ay:

Не совсем понял один момент.

Нужно создавать группу или канал?
И затем как создал "группу или канал", то в него уже добавляем бота и берем id чата?
Если да, то как правильно получить id чата, получаю всегда такой ответ {"ok":false,"error_code":400,"description":"Bad Request: chat not found"}
 
Разобрался:)

https://api.telegram.org/TOKEN_bot/sendMessage?chat_id=@ВашIDКанала&text=тут ваш текст
@ВашIDКанала - название чата.

А если вы хотите указать id чата, то тут немного иначе.
Чтобы поулчить это значение идем сюда:
https://api.telegram.org/bot<token>/getUpdates

Получаем значение нужного нам чата "id" и кладем все это в запрос.
В данном случае это будет выглядеть так:
https://api.telegram.org/TOKEN_bot/sendMessage?chat_id=IDКанала&text=тут ваш текст
 
  • Спасибо
Реакции: S10n4eg и Hannes
Может кому пригодиться всё тоже самое но правда работу с БД не добавлял так как там индивидуально , + 2 варианта сохранения скриншота сами подправите что лучше всё в 1 сниппете и удобно

Код:
Развернуть Свернуть Копировать
//Получить ошибку из-за которой выполнение шаблона остановилось
var error = project.GetLastError();
var action_errors = "";
if(error != null)
    action_errors = string.Format("ActionComment: {0}.\r\nActionGroupId: {1}.\r\nActionId: {2}\r\n--------------------------------------------------------", error.ActionComment, error.ActionGroupId, error.ActionId);

project.Variables["action_errors"].Value = action_errors;

//Присваиваем переменной путь к файлу
string strFilePath = project.Directory + @"\actions_errors.txt";
//В файле на этот момент находится текст. Чтобы текст дописывался с новой строки - используем Environment.NewLine
File.AppendAllText(strFilePath,
        project.Variables["login"].Value + Environment.NewLine +
        DateTime.Now.ToString("MM-dd-yyyy_hh-mm-ss") + Environment.NewLine +
        action_errors + Environment.NewLine);

// сохраняем скриншот 1й вариант
string recognition = ZennoPoster.CaptchaRecognition("CaptchaSaver.dll",
        instance.ActiveTab.FindElementByAttribute("body", "tagname", "body", "regexp", 0).DrawToBitmap(false).DrawToBitmap(false),
        project.Path + "error\\" + project.Variables["login"].Value + ".jpg");

// сохраняем скриншот 2й вариант закомментируйте или раскоментируйте вариант сохранения скриншота
//File.WriteAllBytes(project.Path + "error\\" + project.Variables["login"].Value + ".jpg", Convert.FromBase64String(instance.ActiveTab.FindElementByTag("html", 0).DrawToBitmap(false)));

//постим в телегу сообщение
string resultGet = ZennoPoster.HttpGet(
        "https://api.telegram.org/bot373546537:AAGKerfDFHFGHFGGDGERWERTWERGWERGER/sendMessage?chat_id=@RGRGRGHRHRHRGHRGHRHG&text=тут ваш текст",
        "", "UTF-8", ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly);
 
Я тут немного посмотрел примеры и подумал, что лучше на прямую общаться с ботом, как было написано выше, чтобы не заморачиваться с каналами и прочим...
1. Делаем бота
2. ищем инфо бота - @get_id_bot
3. начинаем с ни чат, жмем start
4. пишем ему /my_id или он сам автоматом выдаст вам инфу

этот чат id подставляете и у вас получается сообщение напрямую с ботом без каналов и групп

https://api.telegram.org/ваш бот id/sendMessage?chat_id=ChatID БЕЗ знака @&text=[Шаблон


457cf1b593.jpg
 
Последнее редактирование:
Я конечно извиняюсь, только в чем смысл этой темы, если есть уже давно эта - http://zennolab.com/discussion/threads/oshibki-v-shabax-naxodim-i-reshaem-ix-v-2-raza-bystree.19930/
Тут только телегу добавили, но сама идея уже давно описана другим человеком...Таким образом можно брать соседскую тему и публиковать под собой...
 
Я конечно извиняюсь, только в чем смысл этой темы, если есть уже давно эта - http://zennolab.com/discussion/threads/oshibki-v-shabax-naxodim-i-reshaem-ix-v-2-raza-bystree.19930/
Тут только телегу добавили, но сама идея уже давно описана другим человеком...Таким образом можно брать соседскую тему и публиковать под собой...
Лично мне понравилась идея с этим шабом, понятно расписано + прикручена телега, с котороя я раньше вообще не работал.
Ну а кроме того все темы проходят премодерацию, так что вопросы тут только к тем кто делал премодерацию могут возникать, но никак не к автору. имхо.
 
  • Спасибо
Реакции: Биржевик
Интересная идея, масштабируемая до безграничности фантазии.:ay:

backoff ничего личного :-) :
Напоминает одного участника конкурсов который рерайтил старые конкурсные статьи и вики программы - в профите несколько тем в конкурсе и призоваые места.)))
 
только в чем смысл этой темы
я и не отрицаю ничего и не претендую на авторство, я так и написал в PS в старт посте
PS \ логику создания шаба брал по кусочкам с этого форума. Спасибо всем, что делитесь информацией и помогаете друг другу.

я лишь упростил некоторые моменты, добавил своих и вуаля, хороший апгрейд для функционала, я сам этим пользуюсь во всех шабах, проверено временем, система работает без сбоев.
добавил телеграм, с которым разбирался в свое время очень долго и тратил время, а теперь просто выкладываю решение для масс в пользование.
ну не хотите - не пользуйтесь, не хотите не голосуйте - ваше право
я лишь поделился своей логикой и наработками, ну а если есть еще и конкурс, то в двойне приятно.

судя по ветке и комментариям люди уже оценили, плюс еще то, что некоторые вещи народ возьмет из моего шаба, например инфу по телеге и прикрутят к своим шаблонам, да на здоровье. что теперь забиться в угол и никому ничего не показывать, ну тогда это будет не форум и комьюнити, а кусок понятно чего.

backoff ничего личного :-) :
Напоминает одного участника конкурсов который рерайтил старые конкурсные статьи и вики программы - в профите несколько тем в конкурсе и призоваые места.)))
ну я отличаюсь тем, что не рерайчу, а пишу то что есть и тем чем пользуюсь.

а так как конкурсы устраиваются в основном для привлечения новичков, то и максимально просто стараюсь донести свою инфу, что, как по мне, только привлекает внимание, что соответственно выгодно разработчикам. и все довольны - самое главное
 
  • Спасибо
Реакции: TIIGR, Gulid и kagorec
Я тут немного посмотрел примеры и подумал, что лучше на прямую общаться с ботом, как было написано выше, чтобы не заморачиваться с каналами и прочим...
1. Делаем бота
2. ищем инфо бота - @get_id_bot
3. начинаем с ни чат, жмем start
4. пишем ему /my_id или он сам автоматом выдаст вам инфу

этот чат id подставляете и у вас получается сообщение напрямую с ботом без каналов и групп




457cf1b593.jpg

Не получаеться у меня почему то, выдает {"ok":false,"error_code":404,"description":"Not Found"}!
 
Все именно так и делал по видео! Возможно я пост запрос неправильно составил https://api.telegram.org/ваш бот id/sendMessage?chat_id=тут ChatID из get_id_bot&text=Тут текст

"ваш бот ид" это из botfather токен правильно? Я как только не пробывал уже, все равно {"ok":false,"error_code":404,"description":"Not Found"}
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)