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

stud

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

stud

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

Kokos

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

zarufakis

Client
Регистрация
22.03.2019
Сообщения
1 501
Благодарностей
867
Баллы
113
А как отправить сообщение и/или картинку пользователю?
 
  • Спасибо
Реакции: stud

stud

Client
Регистрация
23.06.2013
Сообщения
88
Благодарностей
136
Баллы
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 501
Благодарностей
867
Баллы
113
Получаем данные юзера (AccessHash и UserId), кому отправляем сообщение. Получаем любым способом: из списков участников групп, поиском, из диалогов ...
Можно этот вопрос развернуто, потому что все примеры из того же гитхаба ругаются на оператор await.
 

Castaneda

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

stud

Client
Регистрация
23.06.2013
Сообщения
88
Благодарностей
136
Баллы
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
Сообщения
93
Благодарностей
11
Баллы
8
Здравствуйте а что значит
Couldn't read the packet length
в логе после выполнения второго кубика авторизации
 

stud

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

le0

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

stud

Client
Регистрация
23.06.2013
Сообщения
88
Благодарностей
136
Баллы
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
Сообщения
253
Благодарностей
67
Баллы
28
Приветствую.Не подскажете-что не так?

98221
 

kokoko

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

Oleg-KC

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

stud

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

Deisler

Client
Регистрация
26.10.2019
Сообщения
480
Благодарностей
181
Баллы
43
.
 
Последнее редактирование:

Deisler

Client
Регистрация
26.10.2019
Сообщения
480
Благодарностей
181
Баллы
43
на код

C#:
var client = project.Context["client"];
    
    var chatInfo = new TeleSharp.TL.Channels.TLRequestGetFullChannel()
        {
    Channel = new TeleSharp.TL.TLInputChannel()
            {
                ChannelId= -1189411436
                            
            }
         };
получаю ошибку "CHANNEL_INVALID". Группа существует. Аккаунт в ней состоит. Что я не правильно делаю ?

Ссылка на группу https://web.telegram.org/z/#-1189411436
 

simbioz

Client
Регистрация
31.08.2014
Сообщения
147
Благодарностей
27
Баллы
28
Всем привет, подскажите что не так плиз? Там где красным замазано , это номер телефона.
103196
 

radv

Client
Регистрация
11.05.2015
Сообщения
3 654
Благодарностей
1 849
Баллы
113

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