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

ахма

Пользователь
Регистрация
11.11.2017
Сообщения
34
Благодарностей
1
Баллы
8

proffman

Client
Регистрация
24.01.2013
Сообщения
547
Благодарностей
51
Баллы
28
Как заставить бота вносить правки в отосланные им ранее сообщения?
 

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113

proffman

Client
Регистрация
24.01.2013
Сообщения
547
Благодарностей
51
Баллы
28

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113
Да я в других целях использую уведомление в ТГ, к отлову ошибок это не имеет никакого значения)
ну как бе это и так понятно, смысл изменять то что задаешь изначально....
понятное дело связано с какой-то подменой ссылки или картинки
тут надо курить api телеги в общем :-)
 
  • Спасибо
Реакции: proffman

minfin

Client
Регистрация
13.01.2020
Сообщения
148
Благодарностей
101
Баллы
43
Народ подскажите, в соседней ветке есть снипет, который пишет ошибки + скрины и отправляет в телегу через плагин. Но плагин у меня что-то не заработал.
Как поправить этот код, чтобы передавать ошибки и скрин в телегу?
C#:
//формируем текст с данными для отправки
var action_errors = "";
if(project.GetLastError() != null) action_errors = string.Format("<b>Projectname: {0}</b>\r\n <i>ActionComment: {1}.</i>\r\nActionGroupId: {2}.\r\n%E2%81%89 ActionId: <pre>{3}</pre> %E2%81%89\r\n", project.Name, project.GetLastError().ActionComment, project.GetLastError().ActionGroupId, project.GetLastError().ActionId);
//создаем директорию для скриншотов с ошибкой
if (!System.IO.Directory.Exists(project.Path +"error\\"))
System.IO.Directory.CreateDirectory(project.Path + "error\\");
//делаем скриншот //@"\error\" +
try{System.IO.File.WriteAllBytes(project.Path + "error\\" + project.GetLastError().ActionId + ".jpg", Convert.FromBase64String(instance.ActiveTab.FindElementByTag("html", 0).DrawToBitmap(false)));
}catch{project.SendWarningToLog("Нет инстанса для создания скриншота", true);}
//передаем плагину Айди Ошибки
project.Context["Action_Id"] = project.GetLastError().ActionId;
//передаем плагину текст для отправки
project.Context["action_errors"] = action_errors;

//постим в телегу сообщение
string resultGet = ZennoPoster.HttpGet(
        "https://api.telegram.org/bot00:000/sendMessage?chat_id=000&text=КАК ВСТАВИТЬ СЮДА ОШИБКИ ДЛЯ ОТПРАВКИ?",
        "", "UTF-8", ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly);
72738
 

Oleg-KC

Client
Регистрация
17.02.2020
Сообщения
168
Благодарностей
56
Баллы
28
Кто просил забирать сообщения из телеграм? Точно так же ка показывал ТС создаете бота и добавляете админом его в группу откуда нужно забирать сообщения или пишите ему напрямую. Далее обращаемся ГЕТ к апи телеги - https://api.telegram.org/bot(ВашТокен)/getUpdates?offset=-2
где "-2" - количество сообщений которое забирается из группы при обращении (забирает крайние, если положительное значение соответственно с начала). В ответ получаем примерно такое:

{"ok":true,"result":
[{"update_id":1111111,
"message":{"message_id":1,"from":{"id":111111111,"is_bot":false,"first_name":"1111","last_name":"1111111","username":"11111111"},"chat":{"id":-111111111,"title":"\u11111\u11111\u0411\u0411\u04311\u0413e\u141142\u1440\u131\u0412","type":"group","all_members_are_administrators":true},"date":111111111,"text":"Сообщение из группы}},
{"update_id":11111111,
"message":{"message_id":2,"from":{"id":111111111,"is_bot":false,"first_name":"1111","last_name":"1111111","username":"11111111"},"chat":{"id":-111111111,"title":"\u11111\u111111\u0411\u0411\u04311\u0431e\u141142\u1440\u131\u0412","type":"group","all_members_are_administrators":true},"date":111111111,"text":"Сообщение из группы"}}]}
 
Последнее редактирование:

Fedman09

Client
Регистрация
25.02.2020
Сообщения
95
Благодарностей
40
Баллы
28
Всем доброго дня.
Благодаря автору данной темы и всем участникам создал несколько кубиков по отправке уведомлений ботом в чат, в личку. Смог отправить жирный шрифт и картинку, используя прямую ссылку на изображение. Большое всем спасибо!
Есть два вопроса:
1) Как будет выглядеть код отправки сообщения от одного юзера - другому?
2) Как будет выглядеть код отправки сообщения юзером в группу, в которой он состоит и не является админом?
Если кто-то знает, конечно?
 
Регистрация
21.03.2019
Сообщения
396
Благодарностей
203
Баллы
43
привет можно спросить напиши пожалуйста в телеграмм мне
 

Banivur

Client
Регистрация
28.07.2018
Сообщения
8
Благодарностей
0
Баллы
1
Подскажите, как в телегу направлять файлы, т.е. зашел в почту забрал вложение и шмальнул в чат., с текстом все понятно.
 

oleg21621

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

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

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

Выглядит он так:
Посмотреть вложение 27286

Первый кубик шарпа получает ошибку инстанса и записывает ее в переменную - 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. в каком кубике (самая важная инфа)
Делаем визуализацию, чтобы визуально понятно было где и на каком шаге произошла ошибка, и что при этом было на экране. Делаем скрин экрана, и записываем под названием логина, так как логин уникален.

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

Посмотреть вложение 27302


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

Посмотреть вложение 27287

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

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

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

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

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

Посмотреть вложение 27289

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

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

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

Посмотреть вложение 27297

сам запрос на постинг:
Код:
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. добавляем переменную с текстом
Выглядеть будет так
Посмотреть вложение 27298
Вы можете настроить абсолютно как угодно свои оповещения.
У меня настроено так:
[ Название шаблона ] Действие Описание

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

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

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

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

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


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

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113

gospodinkot

Client
Регистрация
04.03.2019
Сообщения
141
Благодарностей
37
Баллы
28
Код:
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. в каком кубике (самая важная инфа)
Как обработать полученную информацию?
Как из ActionId: ec7ffdac-a4ec-4488-9a87-df27cf5c1de5 получить понимание в каком кубике произошла ошибка?
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 719
Баллы
113
  • Спасибо
Реакции: gospodinkot

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113
Как из ActionId: ec7ffdac-a4ec-4488-9a87-df27cf5c1de5 получить понимание в каком кубике произошла ошибка?
открываешь шаблон нажимаешь - CTRL + F , появляется поиск, туда вводишь id ошибки, и ищешь, зенка находит нужный кубик
 
  • Спасибо
Реакции: gospodinkot

gospodinkot

Client
Регистрация
04.03.2019
Сообщения
141
Благодарностей
37
Баллы
28
О новый дивный мир! Пару лет уже пользуюсь зенкой. Не то что бы активно, но всё же. Но про такую штуку не знал) Спасибо!
 

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113
Регистрация
28.11.2020
Сообщения
48
Благодарностей
4
Баллы
8
Уважаемые знатоки, коллеги, помогите пожалуйста!
1. Сделал канал публичным, затем перевел в частный. Оповещение в канал не приходят, что не так сделал?
бот тг.png

2. Мы создали бота, добавили его админом в свой канал.
2.1. Кто либо угодно, тоже может добавить моего бота админом в свой канал?
3. Передача чего-либо напрямую боту, либо в свой канал через своего бота, это безопасно? или кто пожелает могут получить доступ к боту и информации моей?
4. Без создания бота, можно направлять уведомления прямо на личный телефон? если можно, то как?
4.1. или может через User Name?
 
Последнее редактирование:

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113
Регистрация
28.11.2020
Сообщения
48
Благодарностей
4
Баллы
8
какой ответ то приходит
Наверное боты изолированы, точнее информация которую личную получаю через него. Доступна только хозяину площадки и доверенным)).

Кстати, спасибо огромное за информацию и шаблон! Большущее спасибо!! Благодарен!

Лично в бота писать получилось. Т.е. из zp в свой бот посылать сообщения. Уже здорово, надеюсь будет работоспособно всегда
А канал чтоб использовать, то нужно ставить прокси 6(не российский) в кубик get, если верно понял из чата, по другому бот в мой канал не будет писать, хоть и админом установил бота, это так или не правильно понимаю?
 
Последнее редактирование:
Регистрация
28.11.2020
Сообщения
48
Благодарностей
4
Баллы
8
Последнее редактирование:

gospodinkot

Client
Регистрация
04.03.2019
Сообщения
141
Благодарностей
37
Баллы
28
Регистрация
28.11.2020
Сообщения
48
Благодарностей
4
Баллы
8
Блин, я канал уже удалил. Про get_info теперь буду знать.
У меня рабочий вариант через бота идет.
Пару советов еще попрошу.
1. С какими проблемами сталкивались вы и как решали? или может проблемы редко и если возникнут, сюда к вам бежать
хотелось бы знать как самому быстренько подредактировать, что нужно в случае проблем
1.1. может что почитать подскажете, чтоб в теме нормально ориентироваться? как я понял, много лет уже у всех работает норм, главное не паниковать. в 18 написали, а кто-то несколько лет ранее поставил, а я в 24 все тоже самое сделал и работает!)
2. Можно отправлять get запрос так, чтобы мне в личные сообщения приходило сообщение,? а не в бота. в аккаунт который зарегистрирован на телефон, т.е. личный официальный
 
Последнее редактирование:

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113
Регистрация
28.11.2020
Сообщения
48
Благодарностей
4
Баллы
8
Ясно. Еще хорошо бы знать к кому обращаться.. за магарыч, или за благодарность, если можно. Здорово, что вы рядом.
 
Последнее редактирование:
Регистрация
28.11.2020
Сообщения
48
Благодарностей
4
Баллы
8
Последнее редактирование:
Регистрация
28.11.2020
Сообщения
48
Благодарностей
4
Баллы
8
Может кому пригодиться всё тоже самое но правда работу с БД не добавлял так как там индивидуально , + 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);
Не получается установить значение из переменной. Подскажите пожалуйста
Как сделать, чтобы устанавливалось значение из переменной?
string resultGet = ZennoPoster.HttpGet(
"https://api.telegram.org/bot(project.Variables["sasasa"].Value)/sendMessage?chat_id=(project.Variables["chat_id"].Value)&text=тут мой текст из кубика с sharp",
"", "UTF-8", ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly);
 
Последнее редактирование:
Регистрация
28.11.2020
Сообщения
48
Благодарностей
4
Баллы
8
Не получается установить значение из переменной. Подскажите пожалуйста
Как сделать, чтобы устанавливалось значение из переменной?
string resultGet = ZennoPoster.HttpGet(
"https://api.telegram.org/bot(project.Variables["sasasa"].Value)/sendMessage?chat_id=(project.Variables["chat_id"].Value)&text=тут мой текст из кубика с sharp",
"", "UTF-8", ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly);
в resultGet те же строки - ошибки, про которые до меня человек писал.
Вопрос свой снимаю, не обращайте внимания.
 
Регистрация
28.11.2020
Сообщения
48
Благодарностей
4
Баллы
8
Будьте добры, подскажите как в с sharp скриншот всей страницы сделать(instance.ActiveTab)
сохраняя в директорию проекта, либо директория проекта и в ней опред папка
 
Последнее редактирование:

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 415
Благодарностей
5 454
Баллы
113
 

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