Большинство современных мессенджеров предоставляют своим пользователям API, предназначенные для различных задач. На примере Telegram посмотрим, как работать с API, что они умеют и чем могут быть полезны.
Если вы не зарегистрированы в Telegram — самое время зарегистрироваться. Вы можете не пользоваться аккаунтом в повседневности, но для учёбы он необходим. Возможно, вам будет удобно работать через десктопную версию приложения, её можно скачать с официального сайта: https://telegram.org/.
API в Telegram
У мессенджера Telegram есть два API — Bot API и Client API.
- Bot API предназначен для работы с ботами.
- Client API позволяет управлять вашим аккаунтом: отправлять от вашего имени сообщения, вступать в группы или изменять информацию в своём профиле.
Начнём с Client API.
Управление аккаунтом через Client API
Для работы с Client API необходима аутентификация по токену, получить его можно на специальном сайте Telegram.
Получение токена для Client API
Зайдите на https://my.telegram.org и введите номер телефона, привязанный к вашему аккаунту:
#18 How to get telegram bot credentials (token and chat ID) in 30 seconds
Запустите Telegram: вам придёт код подтверждения для сайта, введите его в поле на сайте и нажмите кнопку Next.
В открывшемся окне нажмите на ссылку API development tools и введите данные для создания нового приложения. Заполните как минимум поля App title, Short name и укажите платформу: Web.
В следующем окне скопируйте и сохраните значения api_id и api_hash.
Готово! Эти идентификаторы вы перенесёте в код, они будут передаваться в Client API с каждым вашим запросом — и Client API опознает вас как владельца определённого аккаунта.
Программный клиент Telegram
Отправлять запросы к Client API можно через ваш Telegram-клиент на телефоне или на компьютере или через программный клиент.
Для работы с Client API существует несколько популярных Python-библиотек, которые эмулируют работу приложения. С чем-то подобным вы сталкивались в теме «Тестирование Django»: класс Client() в тестах эмулировал работу браузера, отправляя запросы и получая ответы от сервера.
Для создания программного клиента возьмём библиотеку pyrogram.
Создайте директорию /client_api, перейдите в неё, установите и активируйте виртуальное окружение, установите библиотеку pyrogram :
mkdir client_api # Создаём директорию cd client_api # Переходим в эту директорию python3 -m venv venv # Создаём виртуальное окружение . venv/bin/activate # Активируем виртуальное окружение # Для Windows команда source venv/Scripts/activate pip3 install pyrogram # Устанавливаем библиотеку
Создайте и откройте файл /client_api/main.py в текстовом редакторе, перенесите в него код:
from pyrogram import Client api_id = api_hash = «» with Client(«my_account», api_id, api_hash) as app: # Первый параметр метода send_message — id (int) или имя (str) того пользователя, # которому будет отправлено сообщение. # Зарезервированное слово «me» означает ваш собственный аккаунт. app.send_message(«me», «Привет, это я!»)
Сохраните файл и запустите его:
python3 main.py
При первом запуске программы в командной строке будет запрошен номер телефона, на который зарегистрирован ваш Telegram-аккаунт. Введите номер в консоль, после этого на телефон или в Telegram придёт проверочный код. Скопируйте этот код и вставьте в командную строку. Эта процедура выполняется только один раз, после этого приложение будет зарегистрировано.
Из вашего приложения будет отправлено сообщение. «me» — это зарезервированное слово, заменяющее ID аккаунта, для которого выдан токен. Следовательно, сообщение будет отправлено из вашего аккаунта в ваш аккаунт; оно отобразится во вкладке «Избранное» в вашем мессенджере.
Если изменить «me» на ID аккаунта вашего друга в Telegram, то сообщение уйдёт ему.
Начните диалог с ботом: нажмите кнопку Start.
Для начала бот отправит вам информацию о вашем аккаунте: ID, имя (то, что указано в полях First и Last name) и язык.
Если Telegram запущен на мобильном устройстве — вызовите меню долгим нажатием на сообщение и проделайте всё то же самое.
В ответ бот отправит информацию о пользователе: ID, имя (First name) и фамилию (Last name).
Список всех доступных методов библиотеки pyrogram доступен в документации.
Не увлекайтесь рассылкой сообщений через бота: в Client API есть лимит по количеству запросов. Если вы будете слишком часто отправлять сообщения, Telegram может принять вас за злоумышленника-спамера и забанить, лишить доступа к сервису. Telegram не раскрывает точных ограничений.
В первый раз блокировка продлится 24 часа, последующие будут длиться дольше. Во избежание блокировок мы бы предложили отправлять сообщения только на аккаунты из вашего контакт-листа и не отправлять суммарно более десяти сообщений в час.
Похожие записи:
- Бот в Telegram
- Библиотека python-telegram-bot
- Инструментарий для тестирования API
- Unittest в Django: тестирование URLs
Источник: mob25.com
Как узнать chat ID Telegram
Популярное приложение под названием «Телеграмм» в последнее время стало одним из самых распространенных средств общения. Многие люди говорят, что предпочитают данную сеть по ряду преимуществ, которыми обладает мессенджер. С его помощью можно быстро создать чат, обменяться сообщениями на большом расстоянии и передать файлы любого размера. В нововведенном мессенджере существует такое явление, как Тelegram id. Что это такое, вы сможете узнать из нашей статьи.
Для чего нужен telegram user id
Перед тем, как узнать, каким образом можно идентифицировать id в популярном на сегодняшний день приложении, нужно разобраться, что такое telegram id. Для быстрой и налаженной работы сервису необходимо моментально распознавать аккаунты, группы и каналы. Для этого и создан id, который представляет собой набор личных данных пользователя.
Важно. Несмотря на то, что люди могут беспрепятственно идентифицировать свой id или другого человека, Телеграмм все же считается самым безопасным сервисом, утечки информации из которого зафиксировано еще не было.

Как узнать id в telegram
При создании мессенджера разработчики не учли тот факт, что пользователь захочет получить id Телеграмм. В обычных опциях системы этой функции найти невозможно. В старой версии Телеграмма эта опция присутствовала, но создатели удалили ее в целях безопасности пользователей. Опция была удалена еще и по той причине, что данная площадка для обмена сообщениями позиционировала себя как одну из самых безопасных в мире.
Тем не менее, существуют такие ситуации, когда нужно получить данные о Телеграмм id группы, чата или канала. В этом случае на помощь приходят боты. Следует выполнить такой алгоритм действий:
Проверить или выяснить телеграм id можно также с помощью сторонних сервисов. Существуют различные сервисы для получения подобных данных. Например, cmsru/kak-poluchit-chat-id-telegram/ и многие другие, которые можно найти в интернете. Но при этом нужно также отослать сообщение боту со словами: bot token.
Свой telegram user id
Узнать чей-то telegram user id
Узнать id чата telegram
Программисты, разрабатывающие данную программу, не позаботились о том, чтобы человек смог беспрепятственно узнать id telegram chat. Старая версия системы позволяла пользователям видеть айди сразу в пригласительных письмах от сообществ, но сейчас данная функция удалена.
Получить chat id telegram можно также при помощи посторонних ресурсов. Большинство программистов советуют использовать помощник — cmsru/kak-poluchit-chat-id-telegram/. Таким образом, вы сможете получить всю интересующую вас информацию.
Id канала telegram
Также можно найти свой канал в общей базе данных Телеграмма и посмотреть первые цифры url. Это и будет id канала.
Важно. Поменять статус канала на «общедоступный» может только тот человек, который владеет больше, чем пятью ресурсами. В противном случае получить id можно только при помощи специальных ссылок и ботов.
Источник: telegram-rus.ru
Telegram-бот: от первой строчки до размещения
Эта статья о том, как создать Telegram-бот для автоматизации нескольких рутинных задач. Если вас интересует только код, то вот ссылка. Он несложный, и его вполне можно понять самостоятельно.
Что этот бот будет делать?
Отправлять письма
Это совсем не тупо, но мне кажется, надо пояснить. Всю дорогу по ходу учебы мне нужно было отправлять кучу писем, и все они должны были быть определенного формата. К тому же gmail просто бесит, он красный и все такое! При помощи бота я смогу отправлять письма через чат. Я просто пишу в чат, а бот пусть форматирует это и отправляет по мейлу.
Сохранять всякое разное
Я очень много использую Telegram и часто натыкаюсь там на интересные для меня ссылки или просто на полезную информацию. Хотелось бы, чтобы бот сохранял все то, что я ему пересылаю, в базе данных SQL.

Что мы будем использовать при создании бота
Для API Telegram есть оболочки практически на любом языке программирования. Начиная от Python, PHP и Java и заканчивая Node.js. Мы, разумеется, будем использовать Python. Код данной оболочки находится здесь, можете убедиться сами. Также можно поучаствовать в развитии данного проекта (если сможете, конечно).
Оболочки для других языков можно найти здесь.

Наш бот
Чат с BotFather для получения ключей API
Создание Telegram-бота это весьма забавный процесс так как, собственно, весь он строится на вашем общении с Telegram-ботом. Зовут этого бота BotFather (Бот-Отец). В приложении Telegram его можно найти по имени и начать с ним беседу.
Для начала беседы наберите /start .

Вы увидите список команд, при помощи которых можно создавать боты, редактировать их и управлять ними. Так как мы зашли в первый раз, то выбираем /newbot .
После введения команды /newbot вам предстоит выбрать имя и ник (username) для вашего бота. Имя — это то, как пользователи будут видеть этого бота в своем контакт-листе. А ник — имя, по которому этот бот можно будет найти в приложении Telegram. Это то же самое как и ник в Twitter, он должен быть уникальным, и чем короче, тем лучше.
Сделав это, вы получите API-ключ для вашего бота. С помощью него Telegram сможет ассоциировать написанный вами код именно с этим конкретным ботом. У каждого бота есть свой API- ключ, и вы не должны им ни с кем делиться. В противном случае ваш бот можно будет взломать и осуществить злодейские планы.

Код
Начнем с того, что импортируем все необходимое.
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, ConversationHandler from telegram import ReplyKeyboardMarkup, ReplyKeyboardRemove import logging import sqlite3 from mail import send_mail from sensitive import tok, user_id, name, username
Предназначение библиотек logging и sqlite3 вполне видно из их названий. Они будут использоваться для логирования и сохранения всего, что нам потребуется. В файле sensitive содержаться мои учетные данные, а в telegram.ext хранятся все необходимые обработчики.
Updater — это класс, в котором используется telegram.ext.Dispatcher. Он предоставляет интерфейс для telegram.Bot, чтобы можно было сосредоточиться исключительно на программировании бота. Его цель — получать обновления от Telegram и доставлять их указанному диспетчеру. Он также запускается в отдельном потоке, поэтому пользователь может взаимодействовать с ботом, например, из командной строки.
Диспетчер поддерживает обработчики для различных типов данных: обновления от Telegram, основные текстовые команды и даже произвольные типы. Класс Updater может быть использован как служба опроса, а для получения обновлений можно использовать вебхук (webhook). Это достигается с помощью классов WebhookServer и WebhookHandler .
MessageHandler — класс для обработки Telegram-сообщений. Они могут содержать текст, различные медиафайлы или обновления статуса.
ConversationHandler — это класс для ведения диалога с одним пользователем путем управления четырьмя коллекциями других обработчиков. Обратите внимание, что ни сообщения в каналах Telegram, ни групповые взаимодействия с несколькими пользователями не управляются экземплярами данного класса.
Команды
Для каждой команды написана отдельная функция. А все остальное — для работы с SQL и строками.

Иметь дело с электронной почтой несколько сложнее (на самом деле нет — если вы используете ConversationHandler ). Чтобы полностью понять идею того, как значения из одной функции передаются другую и в ней обрабатываются, прочитайте вот это.

Как вы могли заметить, функцию send_mail() я импортировал из модуля mail . Для отправки почтовых сообщений используется протокол SMTP.
def send_mail(to, subject, body, my=me): smt = smtplib.SMTP(‘smtp.gmail.com’, 587) smt.ehlo() smt.starttls() smt.login(user=my, password=pwd) sub = subject body = body message = «Subject: » + sub + «n» + body + «n» smt.sendmail(my, to, message) smt.quit()
Разумеется, для отправки электронной почты через протокол SMTP вы должны иметь имя пользователя и пароль. Вот хорошее пособие на данную тему.
Вот и всё?
Вообще-то нет. Вам еще осталось все это запустить.

def main(): «»»Start the bot.»»» updater = Updater(TOKEN) dp = updater.dispatcher dp.add_handler(CommandHandler(«start», start)) dp.add_handler(CommandHandler(«help», help)) dp.add_handler(CommandHandler(«add_event», add_event)) dp.add_handler(CommandHandler(«view_events», view_events)) dp.add_handler(CommandHandler(«remove_event», remove_event)) email_handler = ConversationHandler( entry_points=[CommandHandler(’email’, email)], states=< TO: [MessageHandler(Filters.text, to, pass_user_data=True)], SUBJECT: [MessageHandler(Filters.text, subject, pass_user_data=True)], MESSAGE: [MessageHandler(Filters.text, body, pass_user_data=True)] >, fallbacks=[CommandHandler(‘cancel’, cancel)] ) dp.add_handler(email_handler) dp.add_error_handler(error) updater.start_polling() updater.idle()
Размещение кода
Для размещения кода существует множество способов. Выбор зависит от того, как и насколько много вы будете этот код использовать.

- Pythonanywhere : бесплатно и просто. Откройте терминал и в нем запустите файл с вашим ботом. Но не ждите, что он будет работать долго.
- Heroku: не будем изобретать колесо. Вот здесь дана пошаговая инструкция по размещению на сервисе Heroku.
Вот здесь также собраны инструкции по размещению Telegram-ботов.
Источник: pythonist.ru