callstats log телеграм что это такое
Не секрет, что Telegram является на данный момент одним из самых популярных мессенджеров. Особенно в среде ИТ-специалистов. Он удобен, в нем нет встроенной рекламы и работает весьма стабильно. Довольно большую часть времени я общаюсь как по работе, так и по личным вопросам именно в этом мессенджере. Поэтому в один прекрасный день я подумал о том, что было бы удобно, чтобы в этом же мессенджере я мог получать уведомления о работе некоторых своих сервисов. На тот момент я как раз активно работал над интеграцией проекта //devdigest и Telegram, поэтому используя тот же родной Telegram Bot SDK довольно быстро реализовал логгер.
Несколько дней назад я решил вернуться к этому проекту, слегка почистить и отрефакторить код, а затем выложить его в открытый доступ – быть может возможность получения логов в Телеграм будет полезна кому-то еще.
Вот в таком виде приходят логи в телеграмм из одного из проектов, которыми я занимаюсь
Подготовка
Прежде чем перейти к настройке самого логгера необходимо будет выполнить несколько предварительных шагов. А именно – создать канал (публичный, или приватный), где будут отображаться логи и создать бота в телеграмм, через которого и будет реализован процесс публикации логов.
Согласно инструкции на официальном сайте Telegram, для того чтобы создать бота нам нужен другой бот. Детально описывать весь процесс создания бота я здесь не буду, так как сами разработчики Telegram описали его максимально просто и доступно. Отмечу лишь то, что нам нужно будет получить токен новосозданного бота, а также этого бота нужно будет добавить администратором в тот канал, где мы хотим видеть логи.
Получение идентификатора приватного канала.
Чтобы получить идентификатор приватного канала придется воспользоваться помощью еще одного бота – @JsonDumpBot. Вам нужно будет любое сообщение из этого канала переслать в этот бот. В ответ вы получите сообщение примерно такого вида:
Теперь, имея идентификатор чата и токен бота мы можем перейти к настройке логгера.
Настройка логгера
Для конфигурации логгера используется класс TelegramLoggerOptions, который содержит следующие поля:
AccessToken – токен бота;
ChatId – идентификатор канала (приватного, или публичного), или чата, куда бот будет отправлять сообщения;
LogLevel – минимальный уровень сообщений, которые будут отправляться в канала. Обычно я в канал отправляю сообщения начиная с уровня Warning, или Error;
Source – удобочитаемое название сервиса. Полезно, если в один канал приходят сообщения из нескольких сервисов;
Существует несколько вариантов конфигурации логгера – непосредственно через код, или через файл кофигурации.
Настройка логгера в коде
Для начала нужно создать и инициализировать экземпляр класса TelegramLoggerOptions.
Зачем передать этот объект в метод-расширение AddTelegram():
Пример такой конфигурации можно посмотреть здесь.
Настройка логгера через файл конфигурации appconfig.json
Также блоггер можно настраивать через файл конфигурации приложения, как это показано ниже:
Далее, в метод-расширение AddTelegram() необходимо передать экземпляр IConfiguration,
Установка
Установить логгер можно из NuGet, или же интегрировать код прямо к себе в проект. Библиотека распространяется под лицензией MIT.
Логирование в телеграм, или история о том, как я сделал питон библиотеку
Intro
Давным-давно, а точнее несколько месяцев назад, накануне Нового года, я сидел дома и решал задачу по машинному обучению. Связана она была с нейронными сетями и классификацией текстов, поэтому я естественно пользовался бесплатным GPU от гугла (colab). За окном шел снег, а модели обучались ну уж очень долго. Обучать модель оставалось всего несколько минут, как вдруг появляется уведомление, что подключение к runtime потеряно, а это значит, что обученную модель и сабмиты из этого runtime скачать я не смогу, и все придется начинать заново.
Данная ситуация меня расстроила и заставила задуматься от том, что надо как-то через код сохранять файлы, потому что процесс выполнения кода не прекращается, когда возникает такая ошибка. Почему-то я сразу подумал про телеграм ботов и, написав несколько функций, смог сохранять самбиты и промежуточную информацию о том, как обучается модель и сколько ей осталось.
Копировал я этот код из ноутбука (jupyter notebook) в ноутбук, а потом осознал, что это можно встроить в модуль logging и завернуть в библиотеку, чтобы не таскать каждый раз большие куски кода, а использовать всего пару строк.
Logging.handlers
Понятно было, что за основу надо взять модуль для логирования, встроенный в питон. Очевидно, потому что изобретать свой велосипед мне не хотелось, а еще потому что, для использования в приложениях пришлось бы переписывать весь код логирования. Надо было найти способ перехватывать логи, и пересылать их в телеграмм. К счастью, в logging есть такой класс, как StreamHandler. Не буду вдаваться в подробности, но с помощью него можно сделать свою функцию, которая будет запускаться для каждой новой строки в логах и отправлять ее в телеграмм.
Tg-logger
И вот, держа в голове все вышеописанные идеи, я отправился писать свою библиотеку. Вот, что получилось.
Для тех, кому лень запускать код, но хочется понять, как это будет работать, я сделал бота @tg_logger_demo_bot.
Чтобы воспользоваться библиотекой нужно:
создать телеграмм бота (как это сделать описано здесь)
получить свой user_id (это можно сделать через @tg_logger_demo_bot с помощью команды /id )
Установим библиотеку через pip.
Рассмотрим код примера
Особо интересна для нас строка, в которой подключается логирование в телеграмм.
В функцию setup() нужно просто передать тот logger, к которому вы хотите подключить мост. Если заглянуть в документацию, то можно посмотреть на другие параметры функции setup(). С помощью них можно, в частности, настроить формат, в котором логи будут отправлены.
TgFileLogger
Стоит также упомянуть, что функцию отправки файлов я тоже добавил.
Outro
Весь исходный код есть на гитхабе: github.com/otter18/tg_logger.
Документация на английском есть на Read the Docs.
Подключение телеграм бота к гугл таблицам
Всем привет, хабравчане!
Это мой первый пост на этой площадке, целью которого является погружение в коммьюнити для обратной связи и полезных ремарок относительно этой статьи. Также буду рада, если эта статья станет полезной для начинающих свой путь в написании ботов людей 🙂
За последний год я узнала об интересном способе автоматизации бизнес-процессов, которая достигается комбинацией гугл-таблиц и телеграма. Такие задачи как учет финансов, тайм-менеджмент, пересылка событий, сообщений, уведомлений и т.п. легко решаются с помощью бесплатного инструментария гугла и телеги.
Далее речь пойдет о создании первого бота и написании скрипта в Apps Script. Поехали!
Создание телеграм-бота
Откуда вообще берутся боты в телеграме? Опытному пользователю можно пропустить это пункт, ну а новичкам настало время познакомится с @BOTFATHER
Находим отца всех ботов в поиске телеги и видим, что этот бот вообще из себя представляет.
После старта этого бота мы увидим список команд.
Здесь нам нужна команда /newbot, чтобы создать нашего первого бота.
Порядок действий незамысловатый: создаем бота помандой /newbot, даем ему вменяемое имя и задать ему username с обязательным окончанием bot. В результате получаем API токен нашего бота, который и будем дальше использовать.
Можете проверить работоспособность созданного бота перейдя по следующему URL:
https://api.telegram.org/bot2011183802:AAEW7ZNRVvlr1TG1N0DNkRB9G4FmvkBUUUU/getMe
выделенное жирным замените на апи своего бота
Запрос вернет примерно это:
Подключение гугл-таблицы
Переходим к гугл табличкам и создаем новый док.
Должно получиться вот это:
Затрем скрипт и напишем свой на языке JavaScript. Дополнительно в скрипте могут быть использованы инструменты гугла (классы, методы и т.п.), что мы далее и рассмотрим.
Напомню, что АПИ бота мы получили в диалоге с botfather.
Далее напишем функцию send, которая будет отправляет сообщение в чат с нашим ботом.
Это стандартная функция при работе с телеграм ботами, в которую зашиваются ответные действия от бота при отправке сообщения в чат с ним.
Здесь мы сравниваем текст полученного ботом сообщения с текстом «/hello» и вызываем функцию send() при совпадении. Это все действия нашего бота.
В результате откроется окно New deployment, где нужно кликнуть по шестеренке и выбрать Web app.
В поле Who has access выбираем Anyone, что позволит другим пользователям вносить правки в проект и деплоить без вашего участия.
При первом запуске приложение попросит авторизации. Проделываем это упражнение.
Здесь нам нужен URL в самом конце. Копируем его по кнопке Copy и вставляем в качестве значения глобальной переменной App_link, значение для которой мы оставили изначально пустым.
Создадим функцию установки вебхука для получения обновлений от нашего бота.
Добавим следующий код к нашему скрипту:
Функция принимает обе глобальные переменные API и App_link, так что убедитесь, что они у вас есть и их значения установлены корректно.
Снова сохраняем код и запускаем только функцию api_connector:
Если функция выполнилась без ошибок, идем проверять работу нашего бота непосредственно в телеге.
Сообщение «/hello» успешно распознано, на что наш бот ответил «Hello world».
Скрипт целиком ниже:
Заключение
Мы создали простейшего бота для демонстрации работы гугл скриптов в связке с телеграмом.
Если тема интересна, с удовольствием подготовлю материал по написанию более сложных функций и/или более полезных с точки зрения бизнеса и автоматизации
TelegramBot инструкция по созданию базового функционала для бота. (Часть 1)
Не так давно я предложил вам воспользоваться моим ботом для телеграмма.
Получив много вопросов в личку, я понял, что вопрос создания ботов для Телеграм довольно популярен.
У меня спрашивали исходный код бота, просили поделиться конкретными примерами реализации тех или иных возможностей бота, просили подсказать тот или иной функционал по работе с ботом и сообщениями.
Я решил написать цикл статей, в которых хочу показать базовые вещи, которые будут нужны вам для написания своего бота.
Вас ждет Java, Maven, TelegramAPI, Lombok и Log4j.
Кому интересно — прошу под кат…
И сразу с козырей зайду 🙂
То, о чем просили в предыдущей статье.
В ветке «master» будет финальная версия бота, которого мы вместе с вами и напишем, в процессе появления новых статей.
Полный исходники по этой статье будет находится в ветке «Part1-Base».
В данной части мы создадим с вами базовый шаблон, который способен будет:
Создаем стандартный maven проект
(я упущу мануалы по работе со средой разработки и базовые вещи из Java программирования. Все эти вещи достаточно легко гугляться.А если не будет получаться — пишите вопросы).
Давайте посмотрим, какие зависимости нам будут нужны в этом проекте.
В первую очередь это Lombok. Что это и зачем — можно почитать, например, тут.
И обязательно добавим логгер. Я использую log4j и чуть дальше покажу вам как полезно его можно использовать при отладке данного приложения и более глубокого осмысления работы TelegramAPI.
И, т.к. мы пишем бота для Телеграм, то и саму библиотеку от Telegram:
Структуру pom файла можно посмотреть тут
Структуру файла pom.xml можно увидеть тут.
Далее добавляем базовый класс Bot.java, который и будет реализовывать все наше взаимодействие с с сервисами Telegram. Работать мы будем с помощью LongPolling, т.к. этот метод не требует сертификатов шифрования и запускаться может с любой машины, которая имеет Java у себя на борту.
Для этого мы наследуемся от класса TelegramLongPollingBot и реализуем базовые методы:
public void onUpdateReceived(Update update)
public String getBotUsername()
public String getBotToken()
И от себя нам нужно будет добавить процедуру, которая будет подключать наш бот к TelegramAPI:
public void botConnect()
В принципе все. Данный код умеет подключаться к серверам Телеграмм и при получении адресованных ему сообщений будет фиксировать в лог файл информацию, что он получил Update.
Давайте создадим класс, который и будет запускать наше приложение.
Этим займется класс App.java. Ссылка на файл: тут
Как вы видите, для работы бота нам понадобятся только «имя бота» и «токен», которые мы и передадим в конструкторе нашего класса Bot.
Имя и токен для бота вы можете получить у отца всех ботов :), написав ему в телеграмме.
Его ник: @BotFather
Общение с ним очень простое и лаконичное.
В результате у вас должен получиться такой диалог:
Так же здесь пишут, что аккуратнее, никому не показывайте эту информацию, иначе кто-то другой сможет управлять вашим ботом 🙂
Вы скажете, что я не очень аккуратен… Возможно, но отец ботов позволяет нам менять токены и отзывать те, что попали в публичный доступ. Потому с попробовав подключиться с моими данными, вы получите такое сообщение:
Так что с моими данными вам подключиться не получится. Регистрируйте свои. Новые данные укажите в классе App.java
Теперь запустив метод main в классе App мы позволим нашему боту подключиться и ждать новых сообщений. О своих действиях и попытках он напишет нам в консоле.
Log4j
Помните, выше я говорил о полезности библиотеки log4j. И вот тут для любопытных открывается клондайк полезных данных.
В файле log4j.properties уже прописаны базовые настройки для логирования и конкретные уровни логирования для сторонних классов и для тех, которые работают в нашем боте.
Базовый уровень логирования у нас указан как Error.
Для классов Bot и App указан вывод логов на уровне Debug.
Что это за уровни и чем отличаются — вы легко найдете в гугле.
Если хотите посмотреть, как и в каком порядке отрабатывает библиотека Телеграм все ваши действия — переключите режим общего логирования на уровень ниже: info или debug.
И при запуске приложения вы в консоли увидите, сколько всего интересного происходит в процессе подключения, работы. Сколько раз опрашиваются ваши функции с именем и токеном бота.
Уровни логирования меняются вот этой строчкой:
Чтобы получить логи по уровню info, ставите вот так:
Для уровня debug, вот так:
И в заключение
Сейчас у нас бот: подключается, показывает нам красивые логи и сообщает о том, что ему приходят сообщения.
Но выше я вам обещал, что бот будет отзываться на команду старт. Давайте немного изменим процедуру, ответственную за обработку полученных сообщений.
Как видно из кода бот делает следующее:
В дальнейшем я покажу вам, как в моих ботах реализуется:
А второй — Дерзкий киноман. Он очень любит фильмы и очень много о них знает. А еще больше он любит делится с вами своими знаниями. Он ведет свой канал в телеграмме, в котором сам решает, какие фильмы ему нравятся и предлагает их вам. Он умеет формировать индивидуальные подборки по жанрам и создавать подписку на персональные рекомендации. Он умеет находить такие шедевры, о которых вы никогда не слышали и даже не знали как такие фильмы вообще можно найти.
Например, как вы думаете, существуют ли фильмы с такой «дикой» комбинацией жанров, как: документальный, ужасы, комедия.
А вот бот по команде
Скажет, что таких фильмов с 2010 по текущий момент сняли аж 6 штук 🙂
Как работать с подобными командами, как разбирать строки и последовательности команд мы рассмотрим с вами в следующих публикациях.
Спасибо вам за внимание. Программируйте в удовольствие 🙂
20 неочевидных, но полезных функций Telegram
Использование мессенджера можно сделать еще удобнее и эффективнее. Рассказываем, как именно, – и, честно говоря, часть этих фишек мы сами не знали.
1. Отложенная отправка сообщений
Оказывается, тут есть таймер для посланий. Для того чтобы его включить, необходимо подготовить сообщение (напечатать текст или прикрепить файл) и удержать кнопку отправки (стрелочка). Появится всплывающее меню, где можно выбрать необходимую функцию. Кроме того, сообщение можно доставить тогда, когда получатель будет онлайн.
1.2. Напоминание
Вдогонку к первому пункту – если проделать все то же самое в «Избранных сообщениях», появится возможность создать для себя напоминание. В установленное время оно придет вам в виде обыкновенного сообщения в телеграме.
2. Отправка сообщений без звука для получателя
Вспоминаем алгоритм действий из предыдущего трюка – и находим на этот раз другую функцию. Можно отправить сообщение беззвучно для получателя. При этом он увидит уведомление на экране блокировки и в строке уведомлений (если они у него в принципе включены). Это полезно, например, когда вы работаете по ночам, беспокоить заказчиков в столь позднее время уже неприлично, а отправить работу нужно.
3. Самоуничтожающиеся файлы
Про секретные чаты вы, должно быть, уже знаете. С ними все понятно – настраиваешь время исчезновения контента и общаешься только с того устройства, с которого создал беседу.
Но в обычных чатах есть функция отправки самоуничтожающихся файлов – к примеру, фотографий. Правда, для Android и iOS она включается по-разному.
Для первой системы выбираем скрепку, затем нужное фото. Внизу, рядом со значками редактирования, будет иконка таймера.
На гаджетах Apple кликаем на ту же скрепку, также нажимаем на необходимую картинку. Затем удерживаем значок отправки смс и выбираем таймер.
Теперь ваш собеседник получит заблюренное изображение с иконкой огонька. Когда он кликнет на него – пойдет обратный отсчет, затем контент автоматически исчезнет.
4. Очистка памяти без потери информации
В отличие от, например, WhatsApp, у телеграма при очистке кэша контент не удаляется внутри самого мессенджера – вы лишь чистите память телефона. Если какой-то файл вам понадобится вновь, вы можете зайти в нужный чат и скачать его. Кстати, можно установить пределы накопления кэша – временные и количественные. Например, чтобы память самостоятельно очищалась, когда кэш достигнет 5 Гб. Все это находится в разделе «Трафик и хранилище» в настройках. Если память вашего устройства переполнена – проверьте Telegram. Может, дело в нем.
5. Предпросмотр сообщений
Без дополнительных хитростей эта функция доступна только на iOS (спойлер: есть инструкция и для Android). Чтобы прочитать как одно новое сообщение, так и всю переписку, необходимо удержать нажатие на необходимый чат. Откроется всплывающее окошко, внутри которого можно даже листать диалог. Собеседник при этом не увидит, что вы прочитали новые послания.
А вот более сложный вариант (зато рабочий для любого устройства с любым ПО). Отключите интернет или включите авиарежим. Только после этого зайдите в мессенджер. Прочитайте все что необходимо – и обязательно закройте открытое приложение и удалите его из меню запущенных программ. Уведомление о вашем прочтении не будет отправлено.
6. Веб-версия мессенджера
Вы можете скачать приложение Telegram на смартфон, на планшет, на ноутбук или компьютер. Оказывается, и это еще не все – по ссылке доступна версия мессенджера для браузера. Будет удобно в случае, если вам необходимо, например, зайти в свою учетную запись с чужого или рабочего устройства. Правда, эта функция доступна только для тех, у кого уже есть аккаунт в телеграме – зарегистрироваться в веб-версии нельзя.
7. Отображение вашего имени при пересылке сообщений
Может быть, вы просто не задумывались об этом нюансе – зато о нем задумались разработчики. Когда собеседник пересылает кому-то ваши сообщения, третий пользователь видит ваше имя и ссылку на ваш аккаунт. Но это можно исправить. Например, разрешить доступ к нику и ссылке только своим контактам или вообще всем запретить. Для этого необходимо зайти в настройки и найти раздел «Конфиденциальность». Там есть пункт «Пересылка сообщений». Для сравнения – WhatsApp автоматически скрывает от всех источник пересланного сообщения, оставляя только отметку «Пересланное». «ВКонтакте» наоборот – автоматически указывает ссылку.
8. Видимость номера телефона
Там же, где мы нашли предыдущую функцию, можно отыскать пункт «Номер телефона». Он отвечает за то, кому будет виден ваш номер телефона. Если человек указал ник, его можно найти в поиске, даже если не знаете номер телефона этого пользователя.
Если вы хотите, чтобы те, кто нашел ваш профиль просто по имени, не могли получить доступ к номеру – установите соответствующие настройки.
9. Тайм-код для отправленного видео
Если в трехчасовом интервью вас заинтересовал конкретный момент где-то в середине ролика – необязательно просить товарища самостоятельно перематывать видео. Добавьте в смс ссылку на ролик и тайм-метку в формате 00:00. Таких меток может быть несколько.
10. Сжатие данных во время звонков
Экономьте трафик, общаясь по телефону в Telegram. Для этого необходимо в настройках в разделе «Трафик и хранилище» активировать сжатие данных при звонках.
11. Хештеги в чатах
Мы привыкли, что обычно хештеги помогают продвинуть какой-то контент – например, в инстаграме. Но их можно использовать и для того, чтобы упорядочить информацию. Если вы уже используете «Избранные сообщения» в качестве облачного хранилища, можно проставлять хештеги на каждом сообщении. Так необходимый контент по одной теме будет гораздо проще найти. Кроме того, эту функцию можно применить и в групповых чатах, и в личных диалогах, и в каналах. С ее помощью важные письма не потеряются.
12. Несколько аккаунтов в одном приложении
Есть возможность одновременно зайти в несколько учетных записей Telegram в одном приложении на одном устройстве. Может быть, у вас есть личный аккаунт и рабочий (или вы обменялись с кем-то логинами и паролями). На iOS удерживайте иконку «Настройки». На Android – в левом боковом меню под аватаркой и именем есть стрелочка. Нажав на нее, вы увидите окно, в котором можно добавить другой профиль.
13. Отправка геопозиции
Если вы (а может быть, ваш собеседник) потерялись или просто не хочется долго объяснять, где вы находитесь, можно отправить свою геопозицию прямо в мессенджере. Тут же есть возможность выбрать, как долго будет доступно ваше местоположение другому человеку. Более того, можно сделать так, чтобы получатель видел ваши передвижения в режиме онлайн.
14. Свои стикеры
Разнообразить общение можно стикерами – и совсем необязательно выбирать из существующих. Может быть, в вашей компании давно сформировалась целая коллекция мемов – пора превратить их собственный стикерпак. Для этого необходимо найти бота @Stickers – и следовать его инструкциям. Он укажет и в каком формате нужны картинки, и как загрузить их в мессенджер. Спойлер: все можно сделать на смартфоне и совершенно бесплатно.
15. Удаление сообщений у всех
А это довольно нечестная функция, которая тем не менее существует. В отличие от многих других мессенджеров, телеграм позволяет удалять у всех сообщения любой давности. Причем не только свои, но и своего собеседника. К счастью, в общих чатах уничтожить чужое послание может только создатель беседы. И если WhatsApp хотя бы уведомляет о том, что сообщение было удалено, тут никто ничего не увидит – если смс уже было проверено. Если нет, то у собеседника останется лишь уведомление на экране блокировки. Только вот, зайдя в чат, он не увидит уже этого послания.
16. Настройка звука уведомлений
Кажется, телеграм – это мессенджер, который максимально подстраивается под пользователя. Кроме того, что тут можно выбирать иконку приложения, цвет и тему интерфейса, можно кастомизировать уведомления для каждого конкретного чата или канала. Правда, на iOS вы сможете только поменять звук – зато важный диалог будет сразу узнаваем. Выбираем чат, нажимаем на имя (или название – если это групповая беседа или канал), затем – «Редактировать». Для Android – после нажатия на имя кликаем на пункт «Уведомления».
17. Боты
Боты – то есть автоматизированные чаты, где с вами «общается» компьютер, могут существенно облегчить многие задачи. Есть как официальные (те же Stickers), так и созданные другими пользователями. С помощью ботов можно быстро искать песни и скачивать их, находить электронные книги в нужном формате, форматировать текст для инстаграма и многое (действительно многое!) другое. Найти нужного бота можно в интернете или по поиску в самом приложении.
18. Отметить как непрочитанное
Любой чат можно «пометить как непрочитанный» – для собеседника при этом ничего не поменяется. Это может понадобиться вам – чтобы, например, не забыть ответить на важное смс. На iOS нужно просто удержать диалог (или свайпнуть вправо) и выбрать соответствующий пункт. На Android тоже удержать беседу – а после нажать три точки в правом верхнем углу экрана. И уже там выбрать эту функцию.
19. Раздел «Звонки»
«Очевидно», – подумала я, когда впервые узнала об этом. А потом зашла в свой телеграм и поняла, что ничего не очевидно и у меня эта функция отключена. На Android есть левое боковое меню со всеми разделами. Но на iOS все устроено иначе – там иконки находятся внизу. Обычно это три пункта – контакты, чаты и настройки. Можно включить четвертый – звонки. В настройках «недавних звонков» нужно активировать «вкладку звонки».
20. Удалить аккаунт
Ну а если вы изучили все эти фишки, но Telegram вам все еще не нужен, вы можете удалить свою учетную запись. Вообще, в настройках можно задать время – например, если вы не будете заходить в телеграм полгода, профиль автоматически удалится. Но если вам необходимо срочно избавиться от аккаунта, перейдите по этой ссылке и следуйте дальнейшим указаниям.
Вероятно, вам также будет интересно:
Как Павел Дуров придумал Telegram и почему не следует доверять мессенджеру
В WhatsApp появилась функция исчезающих сообщений