/
anton.bessolitsyn
/
easyMessageHandlerBot
Обзор
Документация
Войти
/
anton.bessolitsyn
/
easyMessageHandlerBot
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
Core/TgMessageConverter.cs
95 строк
3 KB
Anton Bessolitsyn
refactoring
04 апр 2026, 09:37
04 апр 2026, 09:37
1ea1956
Код
Авторство
О чём код?
using easyMessageHandlerBot.Interfaces; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Telegram.Bot; using Telegram.Bot.Types; namespace easyMessageHandlerBot.Core { /// <summary> /// Ковертер сообщений телеграм /// </summary> internal static class TgMessageConverter { static Dictionary<string, string>[] convertCaptionEntities(MessageEntity[] cp) { Dictionary<string, string>[] res = new Dictionary<string, string>[cp.Length]; for (int i = 0; i<cp.Length; i++) { //res[i] = new(cp[i].Type.ToString(), cp[i].Offset, cp[i].Length, cp[i].Url ?? string.Empty); res[i] = new Dictionary<string, string>() { { "type", cp[i].Type.ToString() }, { "offset", cp[i].Offset.ToString() }, { "length", cp[i].Length.ToString() }, { "url", cp[i].Url ?? string.Empty } }; } return res; } public static object ConvertTgPhotoMessage(Message message) { var msg = new { ContentType = "TelegramPhotoMessage", Caption = message.Caption ?? string.Empty, CaptionEntities = message.CaptionEntities!=null ? convertCaptionEntities(message.CaptionEntities) : null, CaptionValue = message.CaptionEntityValues, CreationDate = message.ForwardDate }; return msg; } public static object ConvertTgMessage(Message message) { var msg = new { ContentType = "TelegramMessage", Caption = message.Text ?? string.Empty, CaptionEntities = message.Entities != null ? convertCaptionEntities(message.Entities) : null, CaptionValue = message.Entities != null ? message.EntityValues : null, CreationDate = message.ForwardDate }; return msg; } public static async Task<ITgMessageDto> GetTgMessageDtoAsync(Message message, ITelegramBotClient botClient) { byte[] photo = []; if (photo != null) { string fileid = message.Photo!.Last().FileId; var file = botClient.GetFile(fileid).Result; if (file.FilePath != null) { var fileStream = new MemoryStream(); await botClient.DownloadFile(file.FilePath, fileStream); photo = fileStream.ToArray(); } } else { //TODO обработчик фотосообщения без фото ЕСЛИ ТАКОЕ может быть } return new TgMessageDto ( ContentType: "TgPhotoMessage", Caption: message.Caption ?? string.Empty, CaptionEntities: message.CaptionEntities != null ? convertCaptionEntities(message.CaptionEntities) : [], CaptionValue: string.Empty, CaptionValues: message.CaptionEntityValues ?? [], CreationDate: message.Date, Image: photo ?? [] ); } } }