Исключение media_empty При отправке входящего носителя в другой чат с помощью WtelegramClient C#C#

Место общения программистов C#
Ответить
Anonymous
 Исключение media_empty При отправке входящего носителя в другой чат с помощью WtelegramClient C#

Сообщение Anonymous »

Я изменил пример прослушивать обновление здесь, чтобы отправить входящее сообщение другому пользователю или в чате, вот мой код: < /p>

Код: Выделить всё

public MessageMedia MediaMSG=null;
....
Manager = client.WithUpdateManager(Client_OnUpdate/*, "Updates.state"*/);
var dialogs = .client.Messages_GetAllDialogs(); // dialogs = groups/channels/users
dialogs.Wait();
dialogs.Result.CollectUsersChats(Manager.Users, Manager.Chats);
/***/
private async Task Client_OnUpdate(Update update)        {
switch (update)
{                case UpdateNewMessage unm:
await HandleMessage(unm.message);
break;
}
}
/***/
private Task HandleMessage(MessageBase messageBase, bool edit = false)
{
switch (messageBase)
{
case TL.Message m:

InputPeer peer = null;
//set peer a value for example user or chat
//peer =.....
Task PostResult = null;
CancellationTokenSource cancellationSource = new CancellationTokenSource();
CancellationToken cancellation = cancellationSource.Token;
MediaMSG = m.media;
MessageMediaPhoto d = null;
if (MediaMSG.GetType() == typeof(MessageMediaPhoto))
{
d=new MessageMediaPhoto();
d.flags = ((MessageMediaPhoto)MediaMSG).flags;
d.photo = ((MessageMediaPhoto)MediaMSG).photo;
d.ttl_seconds= ((MessageMediaPhoto)MediaMSG).ttl_seconds;
MessageBox.Show(d.flags.ToString() + ":" + d.photo.ID + " :" + d.ttl_seconds+":"+ m.flags.ToString());
File.WriteAllText("a.txt", d.flags.ToString() + ":" + d.photo.ID + " :" + d.ttl_seconds + ":" + m.flags.ToString());

}

PostResult = client.SendMessageAsync(peer, m.message, d?.ToInputMedia());

PostResult.Wait(cancellation);
break;
case MessageService ms: /*Console.WriteLine($"{Peer(ms.from_id)} in {Peer(ms.peer_id)} [{ms.action.GetType().Name[13..]}]");*/ break;
}
return Task.CompletedTask;
}
< /code>
Когда сообщение является текстом, оно отправлено успешно, но когда в нем есть носитель, например, текст и фото, я получаю исключение media_empty,
это не конкретное сообщение, но какое -либо сообщение со СМИ
Peer инициализируется успешным, потому что когда входящее сообщение является текстовым сообщением, он послал успешно. и по умолчанию принять null, client.sendmessageasync Отправить мультимедиа через: < /p>
client.Messages_SendMedia(peer, m.media.ToInputMedia(), m.message,Helpers.RandomLong());
< /code>
Я попробую напрямую: < /p>
client.Messages_SendMedia(peer, m.media.ToInputMedia(), m.message,Helpers.RandomLong());
Но Exception Media pelly, я печатаю информацию о медиа, оригинальная медиа -фото - это фото PNG и информация о медиа в качестве этого:

Код: Выделить всё

d.flags : has_photo
d.photo.ID : 5949672085112603217
d.ttl_seconds : 0
m.flags : has_from_id, has_media, has_replies
< /code>
Я пытаюсь сохранить фотографию носителя на диск: < /p>
var filename = $"{d.photo.ID}.jpg";

var fileStream = File.Create(filename);
var type =  client.client.DownloadFileAsync((Photo)d.photo, fileStream);
type.Wait();
fileStream.Close();
< /code>
Но он поднимает исключение file_reference_expired
i проверять его в публичном и частном чате, но все же исключение < /p>
400
MEDIA_EMPTY
The provided media object is invalid
Помогите мне исправить?

Подробнее здесь: https://stackoverflow.com/questions/785 ... legramclie
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»