public Task <Message> SendVideoNoteAsync( ChatId chatId, InputTelegramFile videoNote, int duration = 0, int length = 0, bool disableNotification = false, int replyToMessageId = 0, IReplyMarkup replyMarkup = null, CancellationToken cancellationToken = new CancellationToken(), InputMedia thumb = null) => throw new NotImplementedException();
public VideoNoteMessage(InputTelegramFile videoNote, int duration = 0, int length = 0, InputMedia?thumb = null, bool disableNotification = false, int replyToMessageId = 0, IReplyMarkup?replyMarkup = null, ChatId?chatId = null) { VideoNote = videoNote; Duration = duration; Length = length; Thumb = thumb; ReplyToMessageId = replyToMessageId; DisableNotification = disableNotification; ReplyMarkup = replyMarkup; ChatId = chatId; }
public void Should_Serialize_Input_File_File_Id() { const string fileId = "This-is-a-file_id"; InputTelegramFile inputFile = fileId; string json = JsonSerializer.Serialize(inputFile, new JsonSerializerOptions(JsonSerializerDefaults.Web)); InputTelegramFile obj = JsonSerializer.Deserialize <InputTelegramFile>(json, new JsonSerializerOptions(JsonSerializerDefaults.Web)); Assert.Equal($@"""{fileId}""", json); Assert.Equal(fileId, obj.FileId); Assert.Equal(FileType.Id, obj.FileType); Assert.Null(obj.Content); Assert.Null(obj.FileName); }
public void Should_Serialize_Input_File_File_Id() { const string fileId = "This-is-a-file_id"; InputTelegramFile inputFile = fileId; string json = JsonConvert.SerializeObject(inputFile); InputTelegramFile obj = JsonConvert.DeserializeObject <InputTelegramFile>(json); Assert.Equal($@"""{fileId}""", json); Assert.Equal(fileId, obj.FileId); Assert.Equal(FileType.Id, obj.FileType); Assert.Null(obj.Content); Assert.Null(obj.FileName); }
private void VideoNoteReceived(MessageEventArgs e, string filetoobig, out string fileName, string baseUrl) { WebClient wc = new WebClient(); fileName = ""; if (e.Message.VideoNote.FileSize > 20_971_520) { // Отсылаем отправителю сообщение, что файл слишком большой // У себя это сообщение не храним, т.к. мы ничего не получили bot.SendTextMessageAsync(e.Message.Chat.Id, filetoobig); return; } else { // Получаем имя и расширение файла // Для этого делаем запрос, т.к. в e.Message этой инфы нет, // только для файлов типа Document. JObject fileInfo = JObject.Parse(wc.DownloadString(baseUrl + e.Message.VideoNote.FileId)); // Создаём уникальное имя файла string fileExt = (string)System.IO.Path.GetExtension((string)fileInfo["result"]["file_path"]); fileName = e.Message.VideoNote.FileUniqueId + fileExt; // скачиваем файл на диск DownloadFile(e.Message.VideoNote.FileId, fileName); // Пишем в ленту, что получили файл e.Message.Text = $"Видео сообщение сохранено в файл {fileName}\n" + $"Размер: {e.Message.VideoNote.FileSize:##,# байт}"; IncomingTextMessageProcessor(e); // Отсылаем файл назад InputTelegramFile itf = new InputTelegramFile(e.Message.VideoNote.FileId); bot.SendVideoNoteAsync(e.Message.Chat.Id, itf); } }
/// <summary> /// Initializes a new request with chatId and video note /// </summary> /// <param name="chatId">Unique identifier for the target chat or username of the target channel</param> /// <param name="videoNote">Video note to send</param> public SendVideoNoteRequest(ChatId chatId, InputTelegramFile videoNote) : base("sendVideoNote") { ChatId = chatId; VideoNote = videoNote; }
/// <summary> /// /// </summary> /// <param name="chatId"></param> /// <param name="videoNote"></param> /// <param name="duration"></param> /// <param name="length"></param> /// <param name="disableNotification"></param> /// <param name="replyToMessageId"></param> /// <param name="replyMarkup"></param> /// <param name="cancellationToken"></param> /// <param name="thumb"></param> /// <returns></returns> public Task <Message> SendVideoNoteAsync(ChatId chatId, InputTelegramFile videoNote, int duration = 0, int length = 0, bool disableNotification = false, int replyToMessageId = 0, IReplyMarkup replyMarkup = null, CancellationToken cancellationToken = default, InputMedia thumb = null) { return(Client.SendVideoNoteAsync(chatId, videoNote, duration, length, disableNotification, replyToMessageId, replyMarkup, cancellationToken, thumb)); }
private void MessageListener(object sender, Telegram.Bot.Args.MessageEventArgs e) { WebClient wc = new WebClient(); string baseUrl = $@"https://api.telegram.org/bot{token}/getFile?file_id="; string fileName = ""; string fileExt = ""; JObject fileInfo; InputOnlineFile iof; // собираем адресную книгу. Это для 10 домашнего задания if (NotInContactList(e.Message.Chat.Id)) { contactList.Add(e.Message.Chat.Id); } if (e.Message.Type == MessageType.Text) { TextMessageProcessor(sender, e); return; } else { switch (e.Message.Type) { // Всяческие файлы, включая отдельные фото(!), которые пересылают, как файлы case MessageType.Document: if (e.Message.Document.FileSize > 20_971_520) { // Выдаём в чат сообщение о невозможности скачать файл e.Message.Text = $"К сожалению, сейчас Телеграм бот не может передавать файлы " + "размером больше 20 Мб."; } else { DownloadFile(e.Message.Document.FileId, e.Message.Document.FileName); e.Message.Text = $"{e.Message.Document.FileName}\n" + $"Размер: {e.Message.Document.FileSize:##,# bytes}"; fileName = e.Message.Document.FileName; // Отсылаем файл назад iof = new InputOnlineFile(e.Message.Document.FileId); bot.SendDocumentAsync(e.Message.Chat.Id, iof); } break; case MessageType.Photo: PhotoSize photo = e.Message.Photo[2]; if (photo.FileSize > 20_971_520) { // Выдаём в чат сообщение о невозможности скачать файл e.Message.Text = $"К сожалению, сейчас Телеграм бот не может передавать файлы " + "размером больше 20 Мб."; } else { fileInfo = JObject.Parse(wc.DownloadString(baseUrl + photo.FileId)); // Создаём уникальное имя файла fileExt = System.IO.Path.GetExtension((string)fileInfo["result"]["file_path"]); fileName = photo.FileUniqueId + fileExt; // скачиваем файл на диск DownloadFile(photo.FileId, fileName); // Выдаём в чат сообщение о полученном файле e.Message.Text = $"Фото сохранено в файле {fileName}\n" + $"Размер: {photo.FileSize:##,# байт}"; // Отсылаем файл назад iof = new InputOnlineFile(photo.FileId); bot.SendPhotoAsync(e.Message.Chat.Id, iof); } break; case MessageType.Audio: if (e.Message.Audio.FileSize > 20_971_520) { // Выдаём в чат сообщение о невозможности скачать файл e.Message.Text = $"К сожалению, сейчас Телеграм бот не может передавать файлы " + "размером больше 20 Мб."; } else { fileInfo = JObject.Parse(wc.DownloadString(baseUrl + e.Message.Audio.FileId)); // Пытаемся создать нормальное и в то же время уникальное имя файла fileExt = System.IO.Path.GetExtension((string)fileInfo["result"]["file_path"]); fileName = e.Message.Audio.Title + "_" + e.Message.Audio.Performer + "_" + e.Message.Audio.FileUniqueId + fileExt; // скачиваем файл на диск DownloadFile(e.Message.Audio.FileId, fileName); // Выдаём в чат сообщение о полученном файле e.Message.Text = $"Аудио файл {fileName}\n" + $"Размер: {e.Message.Audio.FileSize:##,# байт}"; // Отсылаем файл назад iof = new InputOnlineFile(e.Message.Audio.FileId); bot.SendAudioAsync(e.Message.Chat.Id, iof); } break; case MessageType.Voice: if (e.Message.Voice.FileSize > 20_971_520) { // Выдаём в чат сообщение о невозможности скачать файл e.Message.Text = $"К сожалению, сейчас Телеграм бот не может передавать файлы " + "размером больше 20 Мб."; } else { fileInfo = JObject.Parse(wc.DownloadString(baseUrl + e.Message.Voice.FileId)); // Создаём уникальное имя файла fileExt = System.IO.Path.GetExtension((string)fileInfo["result"]["file_path"]); fileName = e.Message.Voice.FileUniqueId + fileExt; // скачиваем файл на диск DownloadFile(e.Message.Voice.FileId, fileName); // Выдаём в чат сообщение о полученном файле e.Message.Text = $"Голосовое сообщение сохранено в файле {fileName}\n" + $"Размер: {e.Message.Voice.FileSize:##,# байт}"; // Отсылаем файл назад iof = new InputOnlineFile(e.Message.Voice.FileId); bot.SendVoiceAsync(e.Message.Chat.Id, iof); } break; case MessageType.Video: if (e.Message.Video.FileSize > 20_971_520) { // Выдаём в чат сообщение о невозможности скачать файл e.Message.Text = $"К сожалению, сейчас Телеграм бот не может передавать файлы " + "размером больше 20 Мб."; } else { fileInfo = JObject.Parse(wc.DownloadString(baseUrl + e.Message.Video.FileId)); // Создаём уникальное имя файла fileExt = System.IO.Path.GetExtension((string)fileInfo["result"]["file_path"]); fileName = e.Message.Video.FileUniqueId + fileExt; // скачиваем файл на диск DownloadFile(e.Message.Video.FileId, fileName); // Выдаём в чат сообщение о полученном файле e.Message.Text = $"Видео файл {fileName}\n" + $"Размер: {e.Message.Video.FileSize:##,# байт}"; // Отсылаем файл назад iof = new InputOnlineFile(e.Message.Video.FileId); bot.SendVideoAsync(e.Message.Chat.Id, iof); } break; case MessageType.VideoNote: if (e.Message.VideoNote.FileSize > 20_971_520) { // Выдаём в чат сообщение о невозможности скачать файл e.Message.Text = $"К сожалению, сейчас Телеграм бот не может передавать файлы " + "размером больше 20 Мб."; } else { fileInfo = JObject.Parse(wc.DownloadString(baseUrl + e.Message.VideoNote.FileId)); // Создаём уникальное имя файла fileExt = System.IO.Path.GetExtension((string)fileInfo["result"]["file_path"]); fileName = e.Message.VideoNote.FileUniqueId + fileExt; // скачиваем файл на диск DownloadFile(e.Message.VideoNote.FileId, fileName); // Выдаём в чат сообщение о полученном файле e.Message.Text = $"Видео сообщение сохранено в файл {fileName}\n" + $"Размер: {e.Message.VideoNote.FileSize:##,# байт}"; // Отсылаем файл назад InputTelegramFile itf = new InputTelegramFile(e.Message.VideoNote.FileId); bot.SendVideoNoteAsync(e.Message.Chat.Id, itf); } break; case MessageType.Sticker: if (e.Message.Sticker.FileSize > 20_971_520) { // Выдаём в чат сообщение о невозможности скачать файл e.Message.Text = $"К сожалению, сейчас Телеграм бот не может передавать файлы " + "размером больше 20 Мб."; } else { fileInfo = JObject.Parse(wc.DownloadString(baseUrl + e.Message.Sticker.FileId)); // Пытаемся создать нормальное и в то же время уникальное имя файла fileExt = System.IO.Path.GetExtension((string)fileInfo["result"]["file_path"]); fileName = e.Message.Sticker.Emoji + "_" + e.Message.Sticker.SetName + "_" + e.Message.Sticker.FileUniqueId + fileExt; // скачиваем файл на диск DownloadFile(e.Message.Sticker.FileId, fileName); // Выдаём в чат сообщение о полученном файле e.Message.Text = $"Стикер сохранён в файл {fileName}\n" + $"Размер: {e.Message.Sticker.FileSize:##,# байт}"; // Отсылаем файл назад iof = new InputOnlineFile(e.Message.Sticker.FileId); bot.SendStickerAsync(e.Message.Chat.Id, iof); } break; // Cообщения других типов игнорируем default: return; } } TextMessageProcessor(sender, e); w.Dispatcher.Invoke(() => { messagesRoll.Add(new Message() { ChatID = e.Message.Chat.Id, FromTo = "Bot answer to " + e.Message.From.Username, UserName = e.Message.From.Username, Type = e.Message.Type.ToString(), Text = "Возвращаем файл\n" + fileName, MessageDT = DateTime.Now }); // Прокручиваем список, чтобы был виден его последний элемент // Пример нашёл в инете var border = (Border)VisualTreeHelper.GetChild(w.MessagesRoll, 0); var scrollViewer = (ScrollViewer)VisualTreeHelper.GetChild(border, 0); scrollViewer.ScrollToBottom(); }); }