...

четверг, 11 февраля 2016 г.

Отправляем сообщения в 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: http://ift.tt/1TV6Mnj

This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.

Комментариев нет:

Отправить комментарий