Все дело было в том что я не мог получить ид канала. Ну и замудрили они. Зачем его вообще скрыватьпод РУ ip телега не работает
Все дело было в том что я не мог получить ид канала. Ну и замудрили они. Зачем его вообще скрыватьпод РУ ip телега не работает
зачем это делать?Как заставить бота вносить правки в отосланные им ранее сообщения?
Да я в других целях использую уведомление в ТГ, к отлову ошибок это не имеет никакого значения)зачем это делать?
ну как бе это и так понятно, смысл изменять то что задаешь изначально....Да я в других целях использую уведомление в ТГ, к отлову ошибок это не имеет никакого значения)
//формируем текст с данными для отправки
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);
было бы лучше ,если робот звонил бы на телефон и говорил про ошибкуДля кого этот шаблон?
Хорошо подойдет для новичков, а так же для старичков. Отлов ошибок он можно сказать вечный.
В это шаблоне будут разобраны части:
Поехали.
- как поймать ошибку
- как ее обработать / записать
- как оповестить себя об этом
Как говорится - "Все гениальное - просто", на самом деле так и есть.
На сколько бы простым не казался шаблон, он сэкономил мне уйму времени и сил.
Выглядит он так:
Посмотреть вложение 27286
Первый кубик шарпа получает ошибку инстанса и записывает ее в переменную - action_errors
Сохранение ошибки происходит в корневую папку проекта, где лежит сам шаблон (путь можно поменять) в текстовый файл - actions_errors.txtКод://Получить ошибку из-за которой выполнение шаблона остановилось 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;
{-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 --------------------------------------------------------
Делаем визуализацию, чтобы визуально понятно было где и на каком шаге произошла ошибка, и что при этом было на экране. Делаем скрин экрана, и записываем под названием логина, так как логин уникален.
- на каком логине ошибка произошла
- в какое время
- при каком действии (в основном это "click")
- в какой группе кубиков (не важная инфа)
- в каком кубике (самая важная инфа)
(на одном скрине показаны настройки данного кубика, по созданию скриншота ошибки)
Посмотреть вложение 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=тут ваш текст
Выглядеть будет так
- копируем токен для бота
- указываем id вашего чата
- добавляем переменную с текстом
Посмотреть вложение 27298
Вы можете настроить абсолютно как угодно свои оповещения.
У меня настроено так:
[ Название шаблона ] Действие Описание
Достаточно одного бота и канала чтобы следить за всеми проектами, которые у вас есть. Достаточно лишь нужные пометки в каждом из шаблонов где вы будете использовать оповещение.
Применение оповещений, безграничны, ограничиваются только вашей фантазией, ну и знаниями самой зенки, но это все поправимо.
Как пример:
У меня есть шаблон который ходит по партнеркам и парсит профит и/или баланс, тоже удобно, оповещения в реальном времени о статусе баланса/вывода и тп.
PS \ я не смог добавить бота админом в приватный канал, сделал следующее, создал паблик канал, добавил бота админом, перевел канал из паблика в приватный.
PS \ логику создания шаба брал по кусочкам с этого форума. Спасибо всем, что делитесь информацией и помогаете друг другу.
АПГРЕЙД ТЕМЫ для опции с телеграмом в процессе обсуждения найден более простой вариант отправки сообщения, на прямую от бота, а не через канал.
и денег на карту засылал )было бы лучше ,если робот звонил бы на телефон и говорил про ошибку
Как обработать полученную информацию?из ошибки нам становится понятно, что:Код:marmarisDood 02/16/2018 18:05:22 ActionComment: Конструктор действий, тип RiseEvent. ActionGroupId: 93a06fc7-2ff2-43e1-9a3e-408ba7cfb117. ActionId: ec7ffdac-a4ec-4488-9a87-df27cf5c1de5 --------------------------------------------------------
- на каком логине ошибка произошла
- в какое время
- при каком действии (в основном это "click")
- в какой группе кубиков (не важная инфа)
- в каком кубике (самая важная инфа)
поиском по шаблонуКак обработать полученную информацию?
Как из ActionId: ec7ffdac-a4ec-4488-9a87-df27cf5c1de5 получить понимание в каком кубике произошла ошибка?
открываешь шаблон нажимаешь - CTRL + F , появляется поиск, туда вводишь id ошибки, и ищешь, зенка находит нужный кубикКак из ActionId: ec7ffdac-a4ec-4488-9a87-df27cf5c1de5 получить понимание в каком кубике произошла ошибка?
Наверное боты изолированы, точнее информация которую личную получаю через него. Доступна только хозяину площадки и доверенным)).какой ответ то приходит
ответ в логе, шаблон успешно выполнен, а в тг канале своем, сообщения из шаблона неткакой ответ то приходит
А в переменную get_info что возвращает? Там должна быть инфа о том что ему не нравится.ответ в логе, шаблон успешно выполнен, а в тг канале своем, сообщения из шаблона нет
научись пользоваться поиском, все есть на форумеПару советов еще дайте новичку.
Не получается установить значение из переменной. Подскажите пожалуйстаМожет кому пригодиться всё тоже самое но правда работу с БД не добавлял так как там индивидуально , + 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);
в resultGet те же строки - ошибки, про которые до меня человек писал.Не получается установить значение из переменной. Подскажите пожалуйста
Как сделать, чтобы устанавливалось значение из переменной?
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);