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

Как заставить бота вносить правки в отосланные им ранее сообщения?
 
Да я в других целях использую уведомление в ТГ, к отлову ошибок это не имеет никакого значения)
ну как бе это и так понятно, смысл изменять то что задаешь изначально....
понятное дело связано с какой-то подменой ссылки или картинки
тут надо курить api телеги в общем :)
 
  • Спасибо
Реакции: proffman
Народ подскажите, в соседней ветке есть снипет, который пишет ошибки + скрины и отправляет в телегу через плагин. Но плагин у меня что-то не заработал.
Как поправить этот код, чтобы передавать ошибки и скрин в телегу?
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
 
Кто просил забирать сообщения из телеграм? Точно так же ка показывал ТС создаете бота и добавляете админом его в группу откуда нужно забирать сообщения или пишите ему напрямую. Далее обращаемся ГЕТ к апи телеги - 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":"Сообщение из группы"}}]}
 
Последнее редактирование:
Всем доброго дня.
Благодаря автору данной темы и всем участникам создал несколько кубиков по отправке уведомлений ботом в чат, в личку. Смог отправить жирный шрифт и картинку, используя прямую ссылку на изображение. Большое всем спасибо!
Есть два вопроса:
1) Как будет выглядеть код отправки сообщения от одного юзера - другому?
2) Как будет выглядеть код отправки сообщения юзером в группу, в которой он состоит и не является админом?
Если кто-то знает, конечно?
 
Подскажите, как в телегу направлять файлы, т.е. зашел в почту забрал вложение и шмальнул в чат., с текстом все понятно.
 
Для кого этот шаблон?
Хорошо подойдет для новичков, а так же для старичков. Отлов ошибок он можно сказать вечный.

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

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

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


АПГРЕЙД ТЕМЫ для опции с телеграмом
в процессе обсуждения найден более простой вариант отправки сообщения, на прямую от бота, а не через канал.
было бы лучше ,если робот звонил бы на телефон и говорил про ошибку
 
Код:
Развернуть Свернуть Копировать
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 получить понимание в каком кубике произошла ошибка?
 
  • Спасибо
Реакции: gospodinkot
Как из ActionId: ec7ffdac-a4ec-4488-9a87-df27cf5c1de5 получить понимание в каком кубике произошла ошибка?
открываешь шаблон нажимаешь - CTRL + F , появляется поиск, туда вводишь id ошибки, и ищешь, зенка находит нужный кубик
 
  • Спасибо
Реакции: gospodinkot
О новый дивный мир! Пару лет уже пользуюсь зенкой. Не то что бы активно, но всё же. Но про такую штуку не знал) Спасибо!
 
Уважаемые знатоки, коллеги, помогите пожалуйста!
1. Сделал канал публичным, затем перевел в частный. Оповещение в канал не приходят, что не так сделал?
бот тг.png

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

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

Лично в бота писать получилось. Т.е. из zp в свой бот посылать сообщения. Уже здорово, надеюсь будет работоспособно всегда
А канал чтоб использовать, то нужно ставить прокси 6(не российский) в кубик get, если верно понял из чата, по другому бот в мой канал не будет писать, хоть и админом установил бота, это так или не правильно понимаю?
 
Последнее редактирование:
Блин, я канал уже удалил. Про get_info теперь буду знать.
У меня рабочий вариант через бота идет.
Пару советов еще попрошу.
1. С какими проблемами сталкивались вы и как решали? или может проблемы редко и если возникнут, сюда к вам бежать
хотелось бы знать как самому быстренько подредактировать, что нужно в случае проблем
1.1. может что почитать подскажете, чтоб в теме нормально ориентироваться? как я понял, много лет уже у всех работает норм, главное не паниковать. в 18 написали, а кто-то несколько лет ранее поставил, а я в 24 все тоже самое сделал и работает!)
2. Можно отправлять get запрос так, чтобы мне в личные сообщения приходило сообщение,? а не в бота. в аккаунт который зарегистрирован на телефон, т.е. личный официальный
 
Последнее редактирование:
  • Спасибо
Реакции: Биржевик
Ясно. Еще хорошо бы знать к кому обращаться.. за магарыч, или за благодарность, если можно. Здорово, что вы рядом.
 
Последнее редактирование:
Может кому пригодиться всё тоже самое но правда работу с БД не добавлял так как там индивидуально , + 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);
 
Последнее редактирование:
Не получается установить значение из переменной. Подскажите пожалуйста
Как сделать, чтобы устанавливалось значение из переменной?
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 те же строки - ошибки, про которые до меня человек писал.
Вопрос свой снимаю, не обращайте внимания.
 
Будьте добры, подскажите как в с sharp скриншот всей страницы сделать(instance.ActiveTab)
сохраняя в директорию проекта, либо директория проекта и в ней опред папка
 
Последнее редактирование:
 

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