Идея отправлять логи из Unity в Telegram, мне пришла когда мне стало не хватать двух мониторов для разработки&
Делать это достаточно легко, как с помощью REST API, так и с помощью библиотек находящихся в общем доступе. В данном мануале мы будем использовать способ с использованием библиотеки https://github.com/TelegramBots/Telegram.Bot , для работы библиотеки необходимо так же скачать библиотеку [Newtonsoft.Json](https://github.com/jilleJr/Newtonsoft.Json-for-Unity ), скачав и установив это, мы готовы начать работу с логами.
Для начала определимся с данными, которые нам нужны для работы. В первую очередь нам нужен токен для взаимодействия с ботом. А так же нужен идентификатор чата, в который будут отправляться логи.
Для того что-бы можно было легко изменять данные, создадим Scriptable Object, в котором зададим поля Token и ChatId
Далее определимся со структурой лога, так как все логи будут отправляться в реальном времени, то хранить дату и время создания не нужно и исходя из стандартов, будем хранить:
1. Тип лога
2. Сообщение
3. Подробная ошибка
Всё это будет задаваться при создании и не может быть изменено
Разберёмся с типом логов
Изначально я хотел использовать стандартные типы используемые в Unity, но я решил для независимости системы сделать свои Перечисления.
Теперь необходимо связать наши перечисления с перечислениями самого Unity, сделаем это при помощи класса расширения
Создадим модель данных самого лога. Исходя из наших необходимостей.
Теперь определимся с ботом и его возможностями. Бот будет отвечать только за одно - за отправку логов в чат.
Мы бы могли принимать логи сразу и сразу их отправлять, но в случае если бы мы захотели потом отправлять их пачкой, у нас бы возникла проблема, нам бы пришлось переписывать скрипт.
Для этого мы введём специальные контейнеры в которых сможем хранить логи.
Мы всё еще не начали получать логи от Unity, как же это сделать?
Всё просто, существует событие, которое отдаёт нам логи от Unity. (Application.logMessageReceivedThreaded), он отдаёт нам сообщение, ошибку и тип лога в Юнити формате.
Теперь как же нам отправить логи в Telegram? Всё просто нужно просто подписаться на событие добавления лога в контейнер.
Возможно это довольно не тривиальная задача и вообще некоторым она покажется странной, ведь зачем отправлять логи в Telegram если они всегда видны в Unity. Но я скажу так - это правда удобно.