Pull to refresh

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

Instant MessagingProgramming.NETC#
Tutorial
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
Tags:telegram apic#.net
Hubs: Instant Messaging Programming .NET C#
Total votes 40: ↑33 and ↓7 +26
Views76.3K

Popular right now

Senior .Net Engineer (C#)
to 230,000 ₽ItivitiСанкт-Петербург
C# .net Developer
from 90,000 to 180,000 ₽АЛМАЗМоскваRemote job
Программист .NET/C#/ASP. NET MVC
from 100,000 ₽МВС ТелекомМосква
Senior .NET Developer (C#) | Remote
from 290,000 to 320,000 ₽C TeleportRemote job
C# .Net developer
from 100,000 to 140,000 ₽МодульбанкRemote job