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
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()); [/code] Но Exception Media pelly, я печатаю информацию о медиа, оригинальная медиа -фото - это фото PNG и информация о медиа в качестве этого: [code]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 [/code] Помогите мне исправить?