public static AttachmentTelegram AddAttachmentTelegram(int AttachFsId, int BotId, string FileId) { MarketBotDbContext db = new MarketBotDbContext(); try { AttachmentTelegram attachment = new AttachmentTelegram { AttachmentFsId = AttachFsId, FileId = FileId, BotInfoId = BotId, }; db.AttachmentTelegram.Add(attachment); db.SaveChanges(); return(attachment); } catch { return(null); } finally { db.Dispose(); } }
private AttachmentTelegram InsertAttachment(int AttachemntFsID, string FileID) { try { using (MarketBotDbContext db = new MarketBotDbContext()) { if (AttachemntFsID > 0 && FileID != null) { AttachmentTelegram attachment = new AttachmentTelegram { AttachmentFsId = AttachemntFsID, BotInfoId = BotInfo.Id, FileId = FileID }; db.AttachmentTelegram.Add(attachment); db.SaveChanges(); return(attachment); } else { return(null); } } } catch { return(null); } }
/// <summary> /// Добавить доп фото /// </summary> /// <returns></returns> private async Task <IActionResult> InsertAdditionallyPhoto() { AttachmentTelegram TgAttach = null; int ProductId = ProductGet(ProductAdditionallyPhotoReply); ProductFunction = new ProductFunction(); var ProductPhoto = ProductFunction.InsertAdditionallPhoto(ProductId, await base.GetFileAsync(base.PhotoId), base.Caption); if (ProductPhoto != null && base.PhotoId != null) { TgAttach = AttachmentTelegramFunction.AddAttachmentTelegram(ProductPhoto.AttachmentFsId, BotInfo.Id, base.PhotoId); } var product = ProductFunction.GetProduct(ProductId); ProductFunction.Dispose(); if (ProductPhoto != null && ProductPhoto.AttachmentFsId > 0 && TgAttach != null && TgAttach.Id > 0) { await SendMessage(new BotMessage { TextMessage = "Добавлено" }); } return(await SendProductFunc(product)); }
/// <summary> /// Обновить фотографию /// </summary> /// <returns></returns> private async Task <IActionResult> UpdateProductPhoto() { using (MarketBotDbContext db = new MarketBotDbContext()) { var product = db.Product.Where(p => p.Id == ProductGet(ProductEditPhotoReply)).FirstOrDefault(); string NewPhoto = base.PhotoId; int fs_id = await base.InsertToAttachmentFs(base.PhotoId); ProductPhoto productPhoto = new ProductPhoto { AttachmentFsId = fs_id, ProductId = product.Id }; AttachmentTelegram attachment = new AttachmentTelegram { AttachmentFsId = fs_id, FileId = base.PhotoId, BotInfoId = BotInfo.Id, }; db.ProductPhoto.Add(productPhoto); db.AttachmentTelegram.Add(attachment); db.SaveChanges(); return(await SendProductFunc(product)); } }
/// <summary> /// Вставить данные о файл в таблицу AttachmentTelegram. /// </summary> /// <param name="mediaFile">Класс описывающий файл. FileId там должен быть пустой, это значит что для этого бота файл отпралвяется впервые. /// Для этого мы и записываем информацию в таблицу Attachment, что бы постоянно не отправлять этот файл целиков а только FileId на серевере телеграм</param> /// <param name="FileId"></param> /// <returns></returns> protected int InsertToAttachmentTelegram(MediaFile mediaFile, string FileId) { try { if (mediaFile.AttachmentFsId > 0 && FileId != "") { using (Db.BotMngmntDbContext db = new Db.BotMngmntDbContext()) { var Attach = db.AttachmentTelegram.Where(a => a.AttachmentFsId == mediaFile.AttachmentFsId && a.BotInfoId == BotInfo.Id).FirstOrDefault(); if (Attach == null) { AttachmentTelegram attachment = new AttachmentTelegram { AttachmentFsId = mediaFile.AttachmentFsId, FileId = FileId, BotInfoId = BotInfo.Id, }; db.AttachmentTelegram.Add(attachment); db.SaveChanges(); return(attachment.Id); } if (Attach != null && Attach.FileId == null) { Attach.FileId = FileId; db.SaveChanges(); return(Attach.Id); } else { return(-1); } } } else { return(-1); } } catch { return(-1); } }
/// <summary> /// Вставить данные о файл в таблицу AttachmentTelegram. /// Что бы постоянно не отправлять этот файл целиком а только FileId на серевере телеграм /// </summary> /// <param name="FileId"></param> /// <param name="AttachmentFsId"></param> /// <returns></returns> protected int InsertToAttachmentTelegram(string FileId, int AttachmentFsId) { using (Db.BotMngmntDbContext db = new Db.BotMngmntDbContext()) { AttachmentTelegram attachmentTelegram = new AttachmentTelegram { AttachmentFsId = AttachmentFsId, FileId = FileId, BotInfoId = BotInfo.Id }; db.AttachmentTelegram.Add(attachmentTelegram); return(db.SaveChanges()); } }
/// <summary> /// Провереям какие файлы пытается прикрепить к заявке пользователь /// </summary> /// <returns></returns> private async Task <int> CheckAttach() { AttachmentTelegram attachment = new AttachmentTelegram(); using (MarketBotDbContext db = new MarketBotDbContext()) { if (base.FileId != null && base.FileId != "") { await SendMessage(new BotMessage { TextMessage = "Можно прикреплять только Фото, Аудио, Видео" }); return(-1); } if (base.PhotoId != null) { return(await base.InsertToAttachmentFs(base.PhotoId)); } if (base.VideoId != null) { return(await base.InsertToAttachmentFs(base.VideoId)); } if (base.AudioId != null) { return(await base.InsertToAttachmentFs(base.AudioId)); } if (base.VoiceId != null) { return(await base.InsertToAttachmentFs(base.VoiceId)); } if (base.VideoNoteId != null) { return(await base.InsertToAttachmentFs(base.VideoNoteId)); } else { return(-1); } } }
private MediaFile GetMediaFile(AttachmentTelegram telegram_attach) { try { if (telegram_attach != null & telegram_attach.FileId != null) // файл уже загруже на сервер телеграм { MediaFile = new MediaFile { FileTo = new Telegram.Bot.Types.FileToSend { FileId = telegram_attach.FileId, Filename = "File" }, Caption = db.AttachmentFs.Where(a => a.Id == telegram_attach.AttachmentFsId).FirstOrDefault().Caption, FileTypeId = Convert.ToInt32(db.AttachmentFs.Where(a => a.Id == telegram_attach.AttachmentFsId).FirstOrDefault().AttachmentTypeId) }; return(MediaFile); } else { var fs = db.AttachmentFs.Where(a => a.Id == telegram_attach.AttachmentFsId).FirstOrDefault(); MediaFile = new MediaFile { FileTo = new Telegram.Bot.Types.FileToSend { Content = new System.IO.MemoryStream(fs.Fs), Filename = "File" }, Caption = fs.Name, AttachmentFsId = Convert.ToInt32(fs.Id), FileTypeId = Convert.ToInt32(fs.AttachmentTypeId) }; return(MediaFile); } } catch (Exception e) { return(null); } }
private Bot.MediaFile GetMediaFile(MarketBotDbContext db, AttachmentTelegram telegram_attach) { try { if (telegram_attach != null & telegram_attach.FileId != null) { MediaFile = new Bot.MediaFile { FileTo = new Telegram.Bot.Types.FileToSend { FileId = telegram_attach.FileId, Filename = "File" }, Caption = db.AttachmentFs.Where(a => a.Id == telegram_attach.AttachmentFsId).FirstOrDefault().Caption, TypeFileTo = Bot.MediaFile.HowMediaType(db.AttachmentFs.Where(a => a.Id == telegram_attach.AttachmentFsId).FirstOrDefault().AttachmentTypeId) }; return(MediaFile); } else { var fs = db.AttachmentFs.Where(a => a.Id == telegram_attach.AttachmentFsId).FirstOrDefault(); MediaFile = new Bot.MediaFile { FileTo = new Telegram.Bot.Types.FileToSend { Content = new System.IO.MemoryStream(fs.Fs), Filename = "File" }, Caption = fs.Name, TypeFileTo = Bot.MediaFile.HowMediaType(fs.AttachmentTypeId), AttachmentFsId = Convert.ToInt32(fs.Id) }; return(MediaFile); } } catch (Exception e) { return(null); } }
/// <summary> /// Вытаскивам с сервера телеграм этот файл и записываем его в БД бота. Нам нужно хранить эти файлы, т.к если бота заблокируют или /// мы подключим допольнительных ботов, то мы не сможем отправить FileId другого бота. Поэтому мы храним в бд эти файлы /// </summary> /// <param name="id">FileId файл на сервере телеграм</param> /// <returns>Возращает id записи из таблицы AttachmentFS</returns> protected async Task <int> InsertToAttachmentFs(string id = null, string Caption = "") { if (id == null) { id = FileId; } Db.BotMngmntDbContext db = new Db.BotMngmntDbContext(); try { var file = await TelegramClient.GetFileAsync(id); System.IO.MemoryStream memoryStream = new System.IO.MemoryStream(); await file.FileStream.CopyToAsync(memoryStream); // Довавбляем в БД AttachmentFs attachmentFs = new AttachmentFs { Fs = memoryStream.ToArray(), GuId = Guid.NewGuid(), Caption = Caption, AttachmentTypeId = MediaFileTypeId }; db.AttachmentFs.Add(attachmentFs); int type = HowMediaType(Update.Message); // узнаем какой типа файла. Фото, Аудио и тд //Когда оператора будет смотреть заявку через того же бота, через коготого пользователь //оформлял заявку, мы отправим ему ID файла на сервере телеграм вместо целой картинки. Это будет быстрее. //А если оператор будет смотреть заявку из другого бота (например старого удалят), то мы сможем отрпавить файл картинки //максимальный размер файла 15 мб if (file != null && file.FileSize <= 15 * 1024 * 1024 && memoryStream != null && await db.SaveChangesAsync() > 0 && type > 0) { AttachmentTelegram attachment = new AttachmentTelegram(); attachment.FileId = id; attachment.AttachmentFsId = attachmentFs.Id; attachment.BotInfoId = BotInfo.Id; db.AttachmentTelegram.Add(attachment); if (await db.SaveChangesAsync() > 0) { return(Convert.ToInt32(attachment.AttachmentFsId)); } else { return(-1); } } if (file.FileSize > 15 * 1024 * 1024) { await SendMessage(new BotMessage { TextMessage = "Ошибка. Файл не может быть больше 15 мб!" }); return(-1); } else { return(-1); } } catch (Exception exp) { return(-1); } finally { db.Dispose(); } }