Создание своего клиента Telegram
Все разработчики могут использовать API и исходный код Telegram, чтобы бесплатно создавать похожие приложения на этой платформе.
В целях обеспечения совместимости и безопасности в экосистеме, все сторонние клиенты должны соответствовать Условиям использования API.
Получение api_id
Для получения API id и возможности разработать собственный клиент на основе Telegram API нужно сделать следующее:
- Зарегистрироваться в Telegram, используя любой клиент.
- Авторизоваться в Telegram по ссылке: https://my.telegram.org.
- Перейти по ссылке ‘API development tools’ и заполнить форму.
- Будут получены адреса и параметры api_id и api_hash, необходимые для авторизации пользователя.
- На данный момент к любому номеру может быть привязан только один api_id.
Важные оповещения для разработчиков будут присылаться по указанному телефону, поэтому рекомендуется использовать актуальный номер, к которому привязан активный аккаунт Telegram.
Использование открытого исходного кода Telegram
Открытый исходный код Telegram доступен для всех. К нему также прилагается пример API id, использование которого ограничено и возможно лишь для серверной части. Его нельзя применять в приложениях для конечного пользователя – попытки использовать этот API id для любых целей, кроме тестирования, вызовут ошибку API_ID_PUBLISHED_FLOOD на стороне пользователей. Поэтому перед выпуском клиента необходимо получить собственный API id.
Для соответствия лицензии GNU GPL разработчику также необходимо выложить в открытый доступ исходный код своего приложения.
Сайт про Telegram на русском (неофициальный).
Здесь собраны приложения на базе MTProto, переведена некоторая документация с официального сайта, а также работает Webogram.
Creating your Telegram Application
We welcome all developers to use our API and source code to create Telegram-like messaging applications on our platform free of charge.
In order to ensure consistency and security across the Telegram ecosystem, all third-party client apps must comply with the API Terms of Service.
Obtaining api_id
In order to obtain an API id and develop your own application using the Telegram API you need to do the following:
- Sign up for Telegram using any application.
- Log in to your Telegram core: https://my.telegram.org.
- Go to «API development tools» and fill out the form.
- You will get basic addresses as well as the api_id and api_hash parameters required for user authorization.
- For the moment each number can only have one api_id connected to it.
We will be sending important developer notifications to the phone number that you use in this process, so please use an up-to-date number connected to your active Telegram account.
Using the api_id
Before using the MTProto Telegram API, please note that all API client libraries are strictly monitored to prevent abuse.
If you use the Telegram API for flooding, spamming, faking subscriber and view counters of channels, you will be banned forever.
Due to excessive abuse of the Telegram API, all accounts that sign up or log in using unofficial Telegram API clients are automatically put under observation to avoid violations of the Terms of Service.
If you didn’t violate the Terms of Service but your account does get banned after using the API, write to recover@telegram.org explaining what you intend to do with the API, asking to unban your account.
Please note that emails are checked by a human, so automatically generated emails will be detected and banned.
Using Telegram’s open source code
Everyone is welcome to use our open source code. We have included a sample API id with the code. This API id is limited on the server side and is not suitable for apps released to end-users — using it for anything but testing purposes will result in the API_ID_PUBLISHED_FLOOD error for your users. It is necessary that you obtain your own API id before you publish your app.
Please remember to publish your code as well in order to comply with the GNU GPL licences.
Ведение Telegram-канала с помощью GitHub Actions
Наверное каждому разработчику хотя бы раз в жизни приходила идея что-нибудь автоматизировать. Ведь если есть возможность избавиться от рутины, то грех ей не воспользоваться.
Для меня эта идея стала основой многих собственных разработок, начиная с программ для решения Судоку, подсчёта времени нахождения за компьютером, имитации работы пользователя ПК с помощью самописных скриптов (всё это ещё в давние времена), и заканчивая более сложными проектами.
И вот, среди прочих родилась простая идея: «А почему бы не автоматизировать отслеживание новых выпусков ИТ-подкастов с помощью Telegram-бота и GitHub Actions? Чтобы просто подписаться на telegram-канал и получать актуальные выпуски подкастов по мере их выхода.
Конечно, можно скачать специализированные приложения, типа «Poket Casts», либо подписаться на RSS, но лично для меня использование Telegram-канала является самым удобным, простым и привычным.
Так был создан telegram-канал @awesome_russian_podcasts, куда в автоматическом режиме публикуются новые выпуски множества ИТ-подкастов, собранных в моём репозитории. Собственно, о процессе создания этого канала (его техническую часть) я и хочу рассказать далее.
Используемые инструменты
Для решения задачи я использовал следующие инструменты:
- GitHub Actions;
- .NET Core Console App; — для получения данных о подкастах из iTunes; — для взаимодействия с API Telegram-бота;
- Git.
Пункты 2-4 можно легко заменить, чтобы реализовать описанный сценарий на удобном вам языке программирования. Кроме того, с Telegram API можно взаимодействовать напрямую через HTTP-запросы, как и с API iTunes.
GitHub Actions
Описание функционала GitHub Actions
С появлением GitHub Actions для разработчиков открылось новое поле для исследований и экспериментов, ведь этот инструмент позволяет автоматизировать вещи, которые ранее приходилось делать вручную или с помощью сторонних не всегда простых в освоении и интеграции сервисов.
Подробная документация (только на английском языке) будет понятна даже тем, кто никогда не работал с подобными инструментами. И времени на её изучение понадобится не очень много.
Для решения своей задачи я выбрал GitHub Actions по нескольким причинам:
- Он бесплатный для публичных репозиториев;
- Позволяет запускать «события» по таймеру;
- Его легко изучить и адаптировать под новые задачи.
Идея состоит в том, что по заданному таймеру запускается Action-скрипт, сконфигурированный таким образом, что при изменении числа выпусков для каждого подкаста в репозитории, данные о новых выпусках публикуются в Telegram-канале через Telegram-бота, управляемого консольным .NET Core приложением.
Задание секретов репозитория
Сначала необходимо задать «секреты» (API-ключ Telegram-бота и id Telegram-канала, куда будут публиковаться новые выпуски) в репозитории с GitHub Action, как это указано на скриншоте:

На самом деле, id Telegram-канала вы можете указать непосредственно в Action-скрипте или в приложении, но для решения однотипных задач лучше иметь возможность изменять эти данные.
Они будут использоваться для передачи в качестве параметров командной строки в консольное .NET Core приложение.
Получение API-ключа Telegram-бота
Для взаимодействия с Telegram-ботом необходимо его создать и получить специальный API-ключ. Сделать это очень просто.
В строке поиска Telegram необходимо ввести BotFather — это официальный Telegram-бот для создания своих ботов:

Для создания нового бота нужно в чате BotFather ввести команду /newbot , на что он попросит указать название нового бота:

Вы можете дать любое название вашему боту.
Далее BotFather попросит ввести username для нового бота. По сути, это будет его уникальный идентификатор в Telegram.
Здесь есть небольшие ограничения: username должен заканчиваться на bot (без учёта регистра) и он должен быть уникальным (если такой username уже существует, то вам не удастся создать нового бота):

В итоге ваш бот будет создан, а вам отобразится API-ключ для управления им извне (первая чать API-ключа — это идентификатор бота).
P.S. Если вы забыли API-ключ, его всегда можно посмотреть, введя команду /mybots в чате BotFather, выбрать нужного бота из списка и нажать кнопку «API Token». Там же можно обновить ключ в случае его компрометации.
Далее необходимо найти в строке поиска Telegram созданного бота по его username, перейти в него и нажать кнопку «Запустить». Теперь бот готов к работе:

Получение id Telegram-канала
Чтобы Telegram-бот знал, куда ему отправлять сообщения, необходимо узнать id Telegram-канала для публикаций.
Для это необходимо добавить бота в созданный вами Telegram-канал (бота в канал можно добавить только в качестве администратора), написать какое-нибудь сообщение в этом канале, и вызвать HTTP GET-запрос: https://api.telegram.org/bot<api_key>/getUpdates , где <api_key> — это API-ключ бота, полученный ранее:

В поле id внутри chat получите необходимый id Telegram-канала.
P.S. Так как Telegram, к сожалению, всё ещё заблокирован на территории Российской Федерации, то указанный выше HTTP GET-запрос необходимо отправить через прокси. Например, можно воспользоваться браузером Opera и его встроенным прокси, как это сделал я.
Структура скрипта
Далее перейдём непосредственно к Action-скрипту.
О том, как создавать и редактировать скрипты подробно описано в документации. Разобраться в этом не составит труда. Здесь я лишь приведу свой скрипт с комментариями:
Как можно убедиться, сам Action-скрипт довольно прост. Его можно улучшить, например, добавив возможность не делать commit, если изменений не было. Но пока в этом нет необходимости. Вся полезная работа кроется в консольном .NET Core приложении «Unchase.HtmlTagsUpdater». Давайте посмотрим, что у него внутри.
.NET Core Console App
«Unchase.HtmlTagsUpdater» — это обычное консольное .NET Core приложение, в которое передаются заданные параметры командной строки. Здесь я приведу упрощенный код: без допоплнительных проверок, обработок, промежуточных частей и частей, не относящихся к задаче.
Для разбора параметров командной строки удобно использовать nuget-пакет CommandLineParser. Он позволяет поместить входные параметры приложения в заданный класс:
В основном методе Main приложения необходимо вызвать Parser.Default.ParseArguments :
Дальнейшаая обработка происходит в методах ProcessPodcasts и SendPodcastData :
Это всё, что минимально необходимо выполнить для решения поставленной задачи.
Вывод
GitHub Actions можно использовать как для работы с Telegram-каналами: публикация сообщений, модерация, интерактивное взаимодействие с участниками канала… Так и для множества других задач: CI/CD для ваших проектов, обновление статических страниц для GitHub Pages, взаимодействие с любыми сторонними сервисами по описанному сценарию и т.д.
Применений этому действительно полезному и удобному инструменту можно найти много. Я лишь постарался описать один из возможных вариантов.
Я убеждён, что каналы должны приносить пользу не только его создателям, поэтому если вам нравится слушать ИТ-подкасты, или вы в поисках новых знаний, — присоединяйтесь к каналу @awesome_russian_podcasts и добавляйте свои любимые русскоязычные ИТ-подкасты в репозиторий, чтобы и о них могли услышать другие люди.
Если же вы адепт youtub’а и просмотра видео, то и для вас есть аналогичный канал — @awesome_russian_youtube.
Спасибо, что дошли до конца. Будьте здоровы и не сходите с пути познания. Удачи!
Where to find the Telegram Api Key
I am trying to find the Api Key for Telegram but I cannot find it. Where do I find it on the website? If I use the Api Id, I get the error Incorrect Token Format in the C# Console Application.
4 Answers 4
Trending sort
Trending sort is based off of the default sorting method — by highest score — but it boosts votes that have happened recently, helping to surface more up-to-date answers.
It falls back to sorting by highest score if no posts are trending.
Switch to Trending sort
Like ihoru mentioned in his answer, you can find all of your bots relevant information in BotFather.
So navigate to @BotFather in Telegram. If you have not yet created a bot do so by entering /newbot and follow the instructions on screen. You should get your key at the end of the process.
But now let’s assume you already have a bot and can’t find the key anymore. Again, go to @BotFather but this time enter /mybots . You should see something like this:

Click/Touch whatever bot you would like your API key for, then you should see this: