1 место Разбираем User - API Telegram по косточкам

stud

Client
Регистрация
23.06.2013
Сообщения
89
Благодарностей
132
Баллы
33

stud

Client
Регистрация
23.06.2013
Сообщения
89
Благодарностей
132
Баллы
33

Kokos

Client
Регистрация
05.09.2019
Сообщения
114
Благодарностей
54
Баллы
28
Статья огонь, спасибо.
 
  • Спасибо
Реакции: stud

stud

Client
Регистрация
23.06.2013
Сообщения
89
Благодарностей
132
Баллы
33
А как отправить сообщение и/или картинку пользователю?
С отправкой простого сообщения, там все просто.
Получаем данные юзера (AccessHash и UserId), кому отправляем сообщение. Получаем любым способом: из списков участников групп, поиском, из диалогов ...
Формируем запрос, и отправляем.

C#:
// Отправить сообщение
long accessHashUser = 0;
int idUser = 0;

// Данные User, кому отправляем сообщения
var inpUser = new TeleSharp.TL.TLInputPeerUser
{
    AccessHash = accessHashUser,
    UserId = idUser
};

var random = new Random();
// Генерируем случайный ID сообщения
long idMessage = (long)random.Next() << 32 | (uint)random.Next();

// Запрос отправки сообщения
var requestUserMess = new TeleSharp.TL.Messages.TLRequestSendMessage()
{
    Peer = inpUser,
    Message = "Text Message",
    RandomId = idMessage
};
var sendRes = client.SendRequest<TeleSharp.TL.TLAbsUpdates>(requestUserMess);

С отправкой медиа, там не все так просто, на целую статью потянет)
Как направление, могу подсказать порядок запросов:
  1. Загружаем файл на сервер Телеграм методом upload.saveFilePart (до 10Mb) или upload.saveBigFilePart (более 10Mb)
  2. Отправляем медиа сообщение методом messages.sendMedia
 
  • Спасибо
Реакции: zarufakis

zarufakis

Client
Регистрация
22.03.2019
Сообщения
1 149
Благодарностей
659
Баллы
113
Получаем данные юзера (AccessHash и UserId), кому отправляем сообщение. Получаем любым способом: из списков участников групп, поиском, из диалогов ...
Можно этот вопрос развернуто, потому что все примеры из того же гитхаба ругаются на оператор await.
 

Castaneda

Client
Регистрация
24.05.2019
Сообщения
779
Благодарностей
252
Баллы
63
Был бы у нас такой препод в универе, знал бы я хорошо C#.
Автору спасибо за подробнейшее описание! Статья супер!)
 
  • Спасибо
Реакции: stud

stud

Client
Регистрация
23.06.2013
Сообщения
89
Благодарностей
132
Баллы
33
Можно этот вопрос развернуто, потому что все примеры из того же гитхаба ругаются на оператор await.
На примере диалогов, если из стартпоста, то
C#:
// Ищем юзера по username в диалоге
var user = dialogs.Users.OfType<TeleSharp.TL.TLUser>().FirstOrDefault(x => x.Username == "username");

// Подставляем данные найденного пользователя
var inpUser = new TeleSharp.TL.TLInputPeerUser
{
    AccessHash = user.AccessHash.Value,
    UserId = user.Id
};
 

SteveJobs

Client
Регистрация
03.11.2016
Сообщения
283
Благодарностей
30
Баллы
28
А подскажите пожалуйста как с паролем залогиниться?
 

haliul

Client
Регистрация
18.01.2016
Сообщения
88
Благодарностей
10
Баллы
8
Здравствуйте а что значит
Couldn't read the packet length
в логе после выполнения второго кубика авторизации
 

stud

Client
Регистрация
23.06.2013
Сообщения
89
Благодарностей
132
Баллы
33
Здравствуйте а что значит
Couldn't read the packet length
в логе после выполнения второго кубика авторизации
Приветствую.
значит ошибка была при передаче данных.
Можно повторить запрос.
Данная ошибка как правило появляется при плохих прокси, попробуйте другие.
 

le0

Новичок
Регистрация
22.09.2022
Сообщения
2
Благодарностей
0
Баллы
1
А сколько устройств и их параметров вы прошили в библиотеку для рандомизации ?
Кстати я видел в некоторых клиентах что lang_pack='android' а не язык )
Кто-то вообще реверсил топовые телеграм клиенты )?
 

stud

Client
Регистрация
23.06.2013
Сообщения
89
Благодарностей
132
Баллы
33
А сколько устройств и их параметров вы прошили в библиотеку для рандомизации ?
в библиотеке устройства не прошиты)
вы сами прописываете их из своих источников тут
C#:
var app = new TLSharp.Core.AppData(16623, "8c9dbfe58437d1739540f5d53c72ae4b")
{
    DeviceModel = "Desktop",    // Модель нашего устройства
    AppVersion = "1.4.8 x64",    // Версия нашего приложения
    LangCode = "ru",            // Язык нашего приложения
    SystemLangCode = "ru",      // Язык нашей системы
    SystemVersion = "Windows 10", // Версия нашей системы
};
Кстати я видел в некоторых клиентах что lang_pack='android' а не язык )
lang_pack - используется только в оф.клиентах
у нас языки тут прописываются LangCode и SystemLangCode
 

Szerzs

Client
Регистрация
15.06.2019
Сообщения
238
Благодарностей
62
Баллы
28

kokoko

Client
Регистрация
23.06.2016
Сообщения
249
Благодарностей
19
Баллы
18
а я как раз пишу бота ))) у некоторых операторов безлимитный интернет через телегу, я человеку пишу бота который шарится по сайтам и возвращает html страницы, ну и ещё качает файлы и пересылает их через телегу, инфа нужная, пригодится)) спасибо
 

Oleg-KC

Client
Регистрация
17.02.2020
Сообщения
156
Благодарностей
52
Баллы
28
Проблему с переодическим разлогином как то можно решить?
 

stud

Client
Регистрация
23.06.2013
Сообщения
89
Благодарностей
132
Баллы
33
Проблему с переодическим разлогином как то можно решить?
данные авторизации сохраняется в файл
как правило разлогина из сессии не происходит,
все зависит как с ней работаешь
 
Регистрация
26.05.2020
Сообщения
412
Благодарностей
146
Баллы
43
а я как раз пишу бота ))) у некоторых операторов безлимитный интернет через телегу, я человеку пишу бота который шарится по сайтам и возвращает html страницы, ну и ещё качает файлы и пересылает их через телегу, инфа нужная, пригодится)) спасибо
Есть пример кубика отправки файла? )
 

Кто просматривает тему: (Всего: 2, Пользователи: 0, Гости: 2)