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

ахма

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

proffman

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

backoff

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

proffman

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

backoff

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

minfin

Client
Регистрация
13.01.2020
Сообщения
144
Благодарностей
99
Баллы
28
Народ подскажите, в соседней ветке есть снипет, который пишет ошибки + скрины и отправляет в телегу через плагин. Но плагин у меня что-то не заработал.
Как поправить этот код, чтобы передавать ошибки и скрин в телегу?
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
Сообщения
156
Благодарностей
53
Баллы
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

Fedman09

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

Banivur

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

oleg21621

Client
Регистрация
20.04.2016
Сообщения
739
Благодарностей
137
Баллы
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
Сообщения
5 914
Благодарностей
6 381
Баллы
113

gospodinkot

Client
Регистрация
04.03.2019
Сообщения
82
Благодарностей
22
Баллы
8
Код:
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 683
Баллы
113
  • Спасибо
Реакции: gospodinkot

backoff

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

gospodinkot

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

backoff

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

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