Отправляем сообщения в Telegram из C#

от автора

TLSharp rocks!

С# — развитый язык с большим количеством библиотек, но среди них нет ни одной работающей реализации Telegram API. Эту ситуацию я хочу исправить с помощью своей небольшой библиотеки TLSharp. В статье будет много кода и один котик.

Сразу хочу оговорить детали, будет рассмотрена отсылка сообщения с использованием Telegram API, а не Telegram Bot API. В чем разница?
Telegram Bot API — это API для создания ботов, соответственно оно имеет бОльшие ограничения. Например, нельзя отправить сообщение пользователю пока тот не добавил вашего бота. С Telegram API таких ограничений нет, все официальные клиенты используют именно его.

Создаем сессию

Сначала инициализируем библиотеку и создадим хранилище сессий.

var store = new FileSessionStore(); var client = new TelegramClient(store, "session"); 

Соединимся с сервером.

client.Connect(); 

Теперь мы можем создавать сессию. Для этого выполним следующий код:

var hash = await client.SendCodeRequest(phoneNumber); //отсылаем запрос на создании сессии  var code = "1234"; // код который придет от Telegram   var user = await client.MakeAuth(phoneNumber, hash, code); // создаем сессию 

Немного о параметрах методов:

  • phoneNumber — ваш номер телефона в интернациональном формате (например, 79184981723)
  • code — код который вы получите от Telegram, после выполнения метода SendCodeRequest

Отправляем сообщение

Для отправки сообщения импортируем контакт по номеру телефона или юзернейму.

var userByPhoneId = await client.ImportContactByPhoneNumber("791812312323"); // импорт по номеру телефона var userByUserNameId = await await client.ImportByUserName("userName"); // импорт по юзернейму 

Отправляем сообщение.

await client.SendMessage(userId, "Hello Habr!"); 

Старался сделать интерфейс библиотеки как можно проще, чтобы каждый мог разобраться.
Например, чтобы отправить картинку с котиками достаточно выполнить следующий код:

var mediaFile = await client.UploadFile("cat.jpg", file); var res = await client.SendMediaMessage(userId, mediaFile); 

Cats in Telegram

На данный момент в библиотеке реализованы только самые необходимые методы. Код библиотеки еще не готов для использования в продакшене, поэтому я не стал выкладывать ее как nuget пакет. Чтобы добавить библиотеку к себе в проект надо стянуть исходники с GitHub, скомпилировать их и добавить референс TLSharp.Core.dll.

Спасибо за внимание, буду рад если вы поддержите библиотеку своими коммитами.

Репозиторий GitHub: github.com/sochix/TLSharp

ссылка на оригинал статьи https://habrahabr.ru/post/277079/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *