Обработчик события отправки пользователем фото боту приведен ниже. Проблема в следующем — если файл отправляется пользователем первый раз, то сохранения ботом файла в массив не происходит. Если файл из клиента отправляю еще раз, обработчик отлично отрабатывает, файл получается ботом и сохраняется. Используется библиотека от MrRoundRobin. Основа работы с файлами взята оттуда же.
Что не так в коде?
private async Task PhotoMessageHandler(Message m) < if (m.Type != MessageType.PhotoMessage) return; var p = m.Photo.Last(); await Bot.WriteChatAsync(m.Chat.Id, $»загружено изображение байт»); using (System.IO.MemoryStream ms = new System.IO.MemoryStream()) < var file = await _bot.GetFileAsync(p.FileId, ms); var attachName = p.FilePath.Split(‘/’).Last(); var attachData = ms.ToArray(); var attach = new ReqAttach(attachName, attachData); await Bot.WriteChatAsync(m.Chat.Id, $»Добавлено изображение байт»); > >
Отслеживать
задан 31 янв 2017 в 7:33
117 1 1 серебряный знак 9 9 бронзовых знаков
В какой строчке ошибка? Отлаживать пробовали?
31 янв 2017 в 7:40
Локально код не выполнить, он публикуется и работает на удаленном сервере.
Обернутый в try/catch тоже ошибку не вывел.
31 янв 2017 в 7:51
Тогда добавляйте отладочный вывод на каждую строчку.
31 янв 2017 в 7:55
какая версия библиотеки?
31 янв 2017 в 10:03
Не весь код, поэтому не всё понятно, что Вы делаете с переменной file и что такое ReqAttach(), например. await Bot.WriteChatAsync(m.Chat.Id, $»загружено изображение байт»); Тут ошибка, т.к. объект Photo — это массив размеров одного изображения. Хотя тут await Bot.WriteChatAsync(m.Chat.Id, $»Добавлено изображение байт»); вроде всё верно сделано.
Источник: ru.stackoverflow.com
Настройка автозагрузки медиафайлов в Telegram
В Telegram есть возможность подробной настройки автозагрузки медиафайлов (фото, видео, гифки, музыка и т.д.).
Это значит, что можно контролировать откуда (чаты, каналы, группы) и при каком интернет подключении (Wi-Fi, мобильная сеть, роуминг) будут автоматически загружаться те или иные медиафайлы. Таким образом, вы сможете сэкономить мобильный трафик и предотвратить случайное скачивание файлов в роуминге.
Для этого зайдите в настройки и выберите «Данные и диск»
Затем найдите раздел «Автозагрузка медиа» и выберите тип файлов, которые хотите настроить (фото, голосовые собщение, видео, GIF и т.д).
По каждому типу вы можете задать отдельные настройки. Например, чтобы фотографии всегда автоматом скачивались по мобильной сети только от личных контактов, а при Wi-Fi подключении — от групп и каналов.
Кроме того, для аудио и видеофайлов можно устанавливать максимальный размер файла для автоматической загрузки. Например, по мобильной сети скачивать файлы размером только до 20 мб, в Wi-Fi до 100 мб, а в роуминге совсем не скачивать.
Подписывайтесь на канал Вам Телеграм — актуальные новости, полезные статьи и советы по работе с Telegram.
Источник: www.vamtlgrm.com