Я использую библиотеку WtelegramClient в приложении .NET для загрузки всех моих диалогов Telegram и их недавних сообщений. Я хочу получить аватар (изображение профиля) каждого диалога в качестве удаленного URI, а не загружать файлы на диск. Это для отображения значков пользователя/чата в пользовательском интерфейсе через HTTP без локального хранилища.protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
var user = await _client.LoginUserIfNeeded();
Console.WriteLine($"Logged in as {user.username ?? user.first_name}");
var dialogs = await _client.Messages_GetAllDialogs();
var scope = _services.CreateScope();
var store = scope.ServiceProvider.GetRequiredService();
foreach (var chatBase in dialogs.chats.Values.OfType())
await store.AddOrUpdateChatAsync(chatBase);
foreach (var usr in dialogs.users.Values.OfType())
await store.AddOrUpdateUserAsync(usr);
var dialogsFiltered = dialogs.dialogs.OfType().ToList();
foreach (var dlg in dialogsFiltered)
{
InputPeer peer = null!;
if (dialogs.chats.TryGetValue(dlg.peer.ID, out var chatPeer))
peer = chatPeer;
else if (dialogs.users.TryGetValue(dlg.peer.ID, out var usrObj))
peer = new InputPeerUser(dlg.peer.ID, usrObj.access_hash);
if (peer is null) continue;
var history = await _client.Messages_GetHistory(peer, limit: 50);
foreach (var msg in history.Messages.OfType())
await store.SaveOrUpdateMessageAsync(msg);
// Here's where I want to get the dialog icon URI
}
await Task.Delay(Timeout.Infinite, stoppingToken);
}
Вопрос:
Есть ли способ получить удаленный URL или публичный URI для аватара пользователя или чата (например, https: //t.me/i/userpic/...), используя wtelegramclient, вместо того, чтобы скачать и не служить самому? Аватары пользователя/чата в веб-интерфейсе без сохранения их локально?private async Task GetAvatarUriAsync(IPeerInfo peer)
{
try
{
var peerName = peer switch
{
User u => $"{u.id}",
ChatBase c => $"{c.ID}",
_ => null
};
if (peerName == null) return null;
var avatarDir = Path.Combine(Directory.GetCurrentDirectory(), "avatars");
Directory.CreateDirectory(avatarDir);
var fileName = $"{peerName}.jpg";
var fullPath = Path.Combine(avatarDir, fileName);
var stream = new FileStream(fullPath, FileMode.Create);
var avatarStream = await _client.DownloadProfilePhotoAsync(peer, stream, true);
stream.Close();
stream.Dispose();
}
catch (Exception ex)
{
Console.WriteLine($"Avatar download failed: {ex.Message}");
}
return null;
}
Подробнее здесь: https://stackoverflow.com/questions/796 ... amclient-c
Как получить значки диалога телеграммы в качестве удаленных URL -адресов с использованием WtelegramClient (c#) ⇐ C#
Место общения программистов C#
1750461925
Anonymous
Я использую библиотеку WtelegramClient в приложении .NET для загрузки всех моих диалогов Telegram и их недавних сообщений. Я хочу получить аватар (изображение профиля) каждого диалога в качестве удаленного URI, а не загружать файлы на диск. Это для отображения значков пользователя/чата в пользовательском интерфейсе через HTTP без локального хранилища.protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
var user = await _client.LoginUserIfNeeded();
Console.WriteLine($"Logged in as {user.username ?? user.first_name}");
var dialogs = await _client.Messages_GetAllDialogs();
var scope = _services.CreateScope();
var store = scope.ServiceProvider.GetRequiredService();
foreach (var chatBase in dialogs.chats.Values.OfType())
await store.AddOrUpdateChatAsync(chatBase);
foreach (var usr in dialogs.users.Values.OfType())
await store.AddOrUpdateUserAsync(usr);
var dialogsFiltered = dialogs.dialogs.OfType().ToList();
foreach (var dlg in dialogsFiltered)
{
InputPeer peer = null!;
if (dialogs.chats.TryGetValue(dlg.peer.ID, out var chatPeer))
peer = chatPeer;
else if (dialogs.users.TryGetValue(dlg.peer.ID, out var usrObj))
peer = new InputPeerUser(dlg.peer.ID, usrObj.access_hash);
if (peer is null) continue;
var history = await _client.Messages_GetHistory(peer, limit: 50);
foreach (var msg in history.Messages.OfType())
await store.SaveOrUpdateMessageAsync(msg);
// Here's where I want to get the dialog icon URI
}
await Task.Delay(Timeout.Infinite, stoppingToken);
}
[b] Вопрос: [/b]
Есть ли способ получить удаленный URL или публичный URI для аватара пользователя или чата (например, https: //t.me/i/userpic/...), используя wtelegramclient, вместо того, чтобы скачать и не служить самому? Аватары пользователя/чата в веб-интерфейсе без сохранения их локально?private async Task GetAvatarUriAsync(IPeerInfo peer)
{
try
{
var peerName = peer switch
{
User u => $"{u.id}",
ChatBase c => $"{c.ID}",
_ => null
};
if (peerName == null) return null;
var avatarDir = Path.Combine(Directory.GetCurrentDirectory(), "avatars");
Directory.CreateDirectory(avatarDir);
var fileName = $"{peerName}.jpg";
var fullPath = Path.Combine(avatarDir, fileName);
var stream = new FileStream(fullPath, FileMode.Create);
var avatarStream = await _client.DownloadProfilePhotoAsync(peer, stream, true);
stream.Close();
stream.Dispose();
}
catch (Exception ex)
{
Console.WriteLine($"Avatar download failed: {ex.Message}");
}
return null;
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79674011/how-to-get-telegram-dialog-icons-as-remote-urls-using-wtelegramclient-c[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия