Как узнать свой api telegram
спросил(а) 2017-04-08T11:28:00+03:00 4 года, 7 месяцев назад ответил(а) 2017-04-08T13:53:00+03:00 4 года, 7 месяцев назад
Зарегистрируйтесь в Telegram, используя любое приложение. Войдите в свое ядро Telegram: https://my.telegram.org. Перейдите к " Инструменты разработки API и заполните форму. Вы получите основные адреса, а также параметры api_id и api_hash, необходимые для авторизации пользователя. На данный момент к каждому номеру может быть подключен только один api_id.
Но если вам нужен API для бота Telegram, вы можете проверить API вашего бота с помощью BotFather. для деталей, вы можете проверить по этой ссылке
Я надеюсь, что это полезно для вас.
ответил(а) 2019-01-11T14:25:00+03:00 2 года, 10 месяцев назадВы просите найти бот-токен? или ищете код api для телеграммы клиента?
@BotFather, дает вам знак каждого бота, который вы создали.
для получения токена api для создания клиента, вы должны сделать учетную запись разработчика для телеграммы. это может быть ваш личный счет для телеграммы.
ответил(а) 2017-04-10T14:33:00+03:00 4 года, 7 месяцев назадЕсли кто-то знает, как сделать изображения немного меньше с помощью форматирования, пожалуйста, продолжайте и делайте это, потому что этот размер сумасшедший.
Как упоминается в своем ответе ihoru, вы можете найти всех своих ботов соответствующую информацию в BotFather.
Итак, перейдите к @BotFather в Telegram. Если вы еще не создали бота, введите /newbot и следуйте инструкциям на экране. Вы должны получить свой ключ в конце процесса.
Но теперь предположим, что у вас уже есть бот и больше не можете найти ключ. Опять же, перейдите в @BotFather, но на этот раз введите /mybots . Вы должны увидеть что-то вроде этого:
Нажмите/Коснитесь любого бота, для которого вы хотите использовать свой API-ключ, тогда вы должны увидеть следующее:
Тип Язык
Telegram API основан на RPC, поэтому взаимодействие с API включает отправку полезной нагрузки, представляющей вызов функции, и получение результата. Например, чтение содержимого разговора включает вызов messages.getMessage функция с необходимыми параметрами и получения messages.Messages в ответ.
Пример TL-схемы (сначала объявляются типы, за которыми следуют функции с разделителем):
Вызов функции TL и результат с использованием функций и типов из вышеуказанной схемы TL, а также эквивалентное двоичное представление (изофициальная документация):
Слои TL-схемы
Или, похоже, получается, что хотя последний уровень TL-схемы на веб-сайте Telegram - это уровень 23, на момент написания последнего уровня фактически уже был уровень 71. Вы можете найти последнюю версию TL-схемыВотвместо.
Создание приложения Telegram
Кроме того, в тех же инструкциях упоминается, что вы можете использовать образцы учетных данных, которые можно найти в исходных кодах Telegram для тестирования. Для удобства я буду использовать учетные данные, которые я нашел вИсходный код Telegram Desktop на GitHubв примере кода здесь.
Установка Telethon
Мы будем использовать Telethon для связи с Telegram API. Telethon - это клиентская библиотека Python 3 (что означает, что вам придется использовать Python 3) для API Telegram, который будет обрабатывать все специфичные для протокола задачи для нас, поэтому нам нужно только знать, какие типы использовать и какие функции выполнять вызов.
Вы можете установить Telethon с pip :
Использовать pip соответствует вашему интерпретатору Python 3; это может быть pip3 вместо. (Случайно: недавно была выпущена Ubuntu 17.10, и она использует Python 3 в качестве установки Python по умолчанию.)
Создание клиента
Прежде чем вы сможете начать взаимодействовать с Telegram API, вам нужно создать клиентский объект с вашим api_id а также api_hash и подтвердите его с вашим номером телефона. Это похоже на вход в Telegram на новом устройстве; вы можете представить этого клиента как еще одно приложение Telegram
Ниже приведен код для создания и аутентификации объекта клиента, модифицированный из документации Telethon:
Как упоминалось ранее, api_id а также api_hash выше взяты из исходного кода Telegram Desktop. Введите свой номер телефона в phone переменная.
Telethon создаст .session сохраните сведения о сеансе в своем рабочем каталоге, точно так же, как вам не нужно повторно проходить аутентификацию в приложениях Telegram каждый раз, когда вы закрываете и снова открываете их. Имя файла начинается с username переменная. Это зависит от вас, если вы хотите изменить его, если вы хотите работать с несколькими сессиями.
Если предыдущей сессии не было, выполнение этого кода приведет к отправке вам кода авторизации через Telegram. Если вы включили двухэтапное подтверждение в своей учетной записи Telegram, вам также потребуется ввести пароль Telegram. После того, как вы аутентифицировались один раз и .session файл сохранен, вам не придется повторно проходить аутентификацию, пока не истечет время сеанса, даже если вы снова запустите скрипт.
Если клиент был создан и аутентифицирован успешно, объект, представляющий себя, должен быть напечатан на консоли. Это будет похоже на (эллипсы … означает, что какой-то контент был пропущен)
Теперь вы можете использовать этот клиентский объект, чтобы начать делать запросы к Telegram API.
Проверка TL-схемы
Как упоминалось ранее, использование Telegram API включает вызов доступных функций в TL-схеме. В этом случае мы заинтересованы в messages.GetDialogs функция. Мы также должны принять к сведению соответствующие типы в аргументах функции. Вот подмножество TL-схемы, которую мы будем использовать для выполнения этого запроса:
Это не легко читать, но учтите, что messages.getDialogs функция вернет messages.Dialogs , который является абстрактным типом для messages.dialogs или messages.dialogsSlice объект, который оба содержат векторы Dialog , Message , Chat а также User ,
Использование документации Telethon
Документация для GetDialogsRequest указывает тип возвращаемого значения для метода, а также чуть более подробную информацию о параметрах. Кнопка «Копировать импорт в буфер обмена» особенно полезна, когда мы хотим использовать этот объект, как сейчас.
messages.getDialogs функция, а также конструктор для GetDialogsRequest занимает offset_peer аргумент типа InputPeer , В документации для GetDialogsRequest, нажмите через InputPeer ссылка, чтобы увидеть страницу с описанием конструкторов и методов, принимающих и возвращающих этот тип.
Так как мы хотим создать InputPeer объект для использования в качестве аргумента для нашего GetDialogsRequest нас интересуют конструкторы для InputPeer , В этом случае мы будем использовать InputPeerEmpty конструктор. Нажмите еще раз на страницу для InputPeerEmpty и скопируйте его путь импорта, чтобы использовать его. InputPeerEmpty Конструктор не принимает аргументов.
Сделать запрос
Вот наш законченный GetDialogsRequest и как получить его результат, передав его нашему авторизованному клиентскому объекту:
Получение DialogsSlice вместо того Dialogs означает, что не все мои диалоги были возвращены, но count Атрибут говорит мне, сколько диалогов у меня всего. Если у вас меньше определенного количества разговоров, вы можете получить Dialogs вместо объекта, и в этом случае все ваши диалоги были возвращены, а количество диалогов у вас есть только длина векторов.
терминология
Например, если моя история чата была этим скриншотом, я взял изПриложение Telegram в магазине Play:
dialogs будет содержать разговоры на скриншоте: Старые Пираты, Пресс-центр, Моника, Джайна…
chats будет содержать записи для Old Pirates, Press Room и Meme Factory.
(Я еще не работал с секретными чатами через Telegram API, поэтому я не уверен, как они обрабатываются.)
Управление данными ответа
Все соответствующие InputPeer конструкторы принимают то же самое id а также access_hash параметров, но в зависимости от того, является ли разговор индивидуальным чатом, группой или каналом, эти значения находятся в разных местах GetDialogsRequest ответ:
В псевдокоде имеем:
Преобразование в код Python (обратите внимание, что dialogs , chats а также users выше являются членами результата нашего GetDialogsRequest который также называется dialogs ):
Библиотека магии
Telethon имеет несколько вспомогательных функций для упрощения общих операций. На самом деле мы могли бы сделать вышеупомянутое с двумя из этих вспомогательных методов, client.get_dialogs() а также client.get_message_history() вместо:
Однако я чувствовал, что лучше сначала изучать методы API-интерфейса Telegram напрямую, тем более что не существует вспомогательного метода для всего. Тем не менее, есть некоторые вещи, которые намного проще с помощью вспомогательных методов, например, как мы аутентифицировали нашего клиента в начале, или такие действия, как загрузка файлов, которые в противном случае были бы утомительными.
Используя регулярные выражения для анализа истории чата в виде простого текста, я мог создать диаграмму, аналогичную графику хранилища перфокарт GitHub, показывающую, в какое время недели чат был наиболее активным:
Благодаря программному доступу к истории чатов, с чатами Telegram можно сделать гораздо больше. Методы, такие как messages.search может мне исключительно полезно. Возможно, динамически генерировать статистику по разговорам, которые достигают максимума или затухают, или которые постоянно активны, или находят ваши любимые смайлики или самые распространенные н-граммы? Предел неба (или ограничение скорости API, в зависимости от того, что ниже).
Обновления
Для любого бизнеса важно установить канал общения с клиентами. Но сделать это не так просто. Психология людей такова, что они не хотят захламлять память своего смартфона новым фирменным приложением из того места, которое они посетили. Совсем другое дело — чат-бот. Ненавязчивый и дружелюбный. А кроме того — со всеми необходимыми фишками: рекламными акциями, скидками и быстрым заказом. И уведомления в одном единственном удобном мессенджере. Почему бы его не реализовать в своем бизнесе? Тем более, что это не так сложно, как вы думаете.
Сегодня мы поговорим о ботах и их API ( telegram api ) на базе популярного мессенджера Telegram.
Содержание
Telegram Bot API и Telegram API
Все началось с того, что Николай Дуров совместно с командой программистов создал криптографический протокол. Его движок задействовал комбинацию симметричного шифрования AES , протокол Диффи-Хеллмана для обмена ключами шифрования между клиентами и ряд хеш-функций. На основе этого протокола был построен MTProto — механизм, позволяющий пользователям сегодня использовать Telegram-мессенджеры.
На данный момент есть два основных инструмента API, с помощью которых можно задействовать сервисы Telegram — Telegram Bot API и Telegram API . Первый служит для разработки чат-ботов, второй позволяет делать полностью кастомные Telegram-клиенты. Разработчикам также доступна открытая библиотека TDLib (Telegram Database Library), с помощью которой можно создавать свою версию мессенджера с уникальными опциями (как например, Telegram X, построенный именно на TDLib). Telegram Bot API является надстройкой над Telegram API , поэтому пользоваться Bot API можно без знаний о механизме используемого протокола MTProto .
Принцип работы любого бота заключается в том, что он перманентно направляет запросы на сервер и регулярно получает обновления. Получать их можно двумя способами. Во-первых, можно использовать вебхуки, когда сервер делает обратный вызов на указанный URL. А во-вторых, можно просто « забрасывать » запросами Telegram, получая постоянные ответы.
BotFather: быстрый Start
Чтобы приступить к созданию собственного бота, необходимо получить токен для авторизации и подключения через API. Делается это при помощи служебного бота. Введите в поиске Telegram его имя — BotFather. Далее следует выбрать команду /newbot и дать имя боту.
Затем BotFather спросит вас имя, которое обязательно должно заканчиваться на bot , например, shop_serge_bot . Далее для бота будет сгенерирован уникальный токен, который будет выглядеть примерно так — 2093336709:AAGiH64Ec1R8r222sM9IywvlIGFkb7wFqyo .
Всего можно генерировать не более 20 ботов на одного пользователя. Управление ботами также происходит через меню команд служебного бота BotFather. Например, если вам потребуется настроить какой-то из ваших ботов, вы должны перейти по командам / mybots и затем нажать на кнопку Edit Bot . Здесь вы сможете настроить имя — Edit Name и указать описание — Edit Description .
В меню настроек BotSettings включается режим встроенных запросов (по умолчанию эта опция отключена). Когда встроенные запросы активированы, пользователи могут вызвать вашего бота, просто введя имя пользователя в поле для ввода текста в любом чате, группе или канале.
Если Telegram использовать в коммерческих целях, чат-бот можно вооружить средствами для приема платежей. Стоит обратить внимание, что сам Telegram не занимается проведением транзакций, он лишь дает возможность подключить услуги длинного списка провайдеров.
В их числе такие платежные системы, как Stripe, YooMoney, Сбербанк, PayMaster, PSB, Tranzzo, Payme, CLICK, LiqPay, Portmone, Paymega, ECOMMPAY и др. Разумеется, чтобы использовать эти платежные системы, нужно быть юридическим лицом.
aiogram — асинхронная библиотека
pip install -U aiogram.
Создаем эхо-бот
Создаем конфигурационный файл config.py и указываем в нем значение, сгенерированное ботом BotFather. Приступаем к написанию кода самого чат-бота.
Для начала импортируем конфигурацию и систему логирования. Затем подключаем все необходимые модули из aiogram . Указываем уровень логирования, а затем инициализируем бота, создав две переменные — Bot и Dispatcher .
Как уже говорилось ранее, обработка событий в Telegram может происходить двумя способами — long polling , когда мы со своей стороны постоянно запрашиваем сервер, а второй вариант — более мощное и быстрое решение вебхук . Реализация long polling на Linux имеет большой минус — бот часто зависает и его приходится постоянно перезапускать.
Если вы делаете бота, который работает с деньгами или какой-то конфиденциальной информацией, то параметр skip_updates лучше устанавливать в значение Falsе — тогда обработчик не будет пропускать старые события и будет обрабатывать их в любом случае. Если этого не делать, существует вероятность, что какая-нибудь важная транзакция может потеряться и возникнет потенциальная угроза безопасности (или коллизия).
Оформление: кнопки и текст
Например, URL button — простая кнопка со ссылкой на какой-то веб-ресурс. Вариант кнопки Callback запрашивает обновление. Она может применяться, скажем, для уведомлений или предупреждений (с окном notification или окном alert ). Кнопка для перехода в режим инлайн может открывать меню для выбора чата.
Другой тип кнопок — клавиатурный. Он дают возможность использовать подсказки бота. Например, они могут содержать наиболее частые запросы, ожидаемые от пользователя ( « как к вам проехать » , « время работы » и т.д.)
Один из примеров такой клавиатуры — бот в кафе для дистанционного принятия заказов:
Инструмент для оформления текста выбирается аргументом функции parse_mode .
Используя модуль markdown из aiogram.utils по ходу текста можно менять форматирование. Тип форматирования определяется функцией с дописанной к ней букве h , которая означает поддержку HTML.
Учим бот-модерации
Даем возможность бана в группе
Помимо основного кода нам понадобится сделать файл filters.py , который поместим рядом с главным файлом нашего бота:
В коде бота мы его импортируем:
Также необходимо в конфигурационном файле config.py указать id чата ( GROUP_ID ).
Все пользователи Telegram имеют свой id . Он постоянный, и поэтому по нему можно идентифицировать чаты. Если вдруг вы не знаете id , вы можете воспользоваться ботом @username_to_id_bot , который покажет это значение.
В токене бота первая часть — это его id . Например, токен 110301514:AмHdqTcvCG1vGWDxfyeDfSAs0K5PALDsaw принадлежит боту с id 110301514 . В Bot API перед id супергрупп и каналов добавляется -100 (например, id 1322414430 превращается в -1001322414430 ).
Заключение
Более сложные боты обладают искусственным интеллектом и умеют использовать нейронные сети. Возможности таких чат-ботов ограничены только вашей фантазией, но об этом — в следующий раз. А пока посмотрите дополнительное видео по технике создания ботов на JavaScript для Telegram API :
Highload нужны авторы технических текстов. Вы наш человек, если разбираетесь в разработке, знаете языки программирования и умеете просто писать о сложном!
Откликнуться на вакансию можно здесь .
Telegram API vs Telegram Bot API
Рассказываю по порядку.
Телеграм использует собственный протокол шифрования MTProto. MTProto API (он же Telegram API) — это API, через который ваше приложение Телеграм связывается с сервером. Telegram API полностью открыт, так что любой разработчик может написать свой клиент мессенджера.
Для написания ботов был создан Telegram Bot API — надстройка над Telegram API. Перевод с официального сайта:
Почему-то мало кто знает о том, что Телеграм боты могут работать напрямую через Telegram API. Более того, таким образом можно даже обойти некоторые ограничения, которые даёт Bot API.
Вся информация ниже будет по умолчанию относиться и к Bot API, и к Telegram API. О различиях я буду упоминать. От некоторых ограничений Bot API можно избавиться с помощью локального сервера, об этом в конце статьи.
На чём пишут Телеграм-ботоы
Бот должен уметь отправлять запросы Телеграм-серверу и получать от него апдейты (updates, обновления).
Как получать апдейты в Bot API
Получать апдейты можно одним из двух способов:
Поллинг — просто регулярно отправлять запрос к серверу Телеграма для получения обновлений,
Вебхук — сделать так, чтобы Телеграм сам отправлял запросы по нужному URL.
Если вы попробуете загуглить, как написать Телеграм-бота на Python, вам предложат воспользоваться библиотеками python-telegram-bot и telebot. Но не стоит.
Ну, если вы только хотите познакомиться с разработкой ботов и написать своего hello-world-бота, то можете, конечно использовать и их. Но эти библиотеки могут далеко не всё. Среди разработчиков ботов лучшей библиотекой для ботов на Python считается aiogram. Она асинхронная, использует декораторы и содержит удобные инструменты для разработки. Ещё был хороший Rocketgram, но он давно не обновлялся.
Также ботов часто пишут на JavaScript, для этого обычно используется Telegraf. Библиотеки есть и для многих других языков, но используют их реже.
Пример кода бота
Если вы хотите получить какое-то представление о том, как вообще выглядит код бота, вот вам пример использования на aiogram с его странички на GitHub:
Этот бот будет отвечать на команды /start и и /restart.
Создание бота
Единственная информация о Телеграм-ботах, которой в интернете полным-полно: как создать бота. Это делается через специального бота BotFather. Когда вы создадите бота, BotFather даст вам его токен. Токен выглядит примерно так: 110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw . Именно с помощью токена вы сможете управлять ботом.
Один пользователь может создать до 20 ботов.
В BotFather удобно управлять ботами своими командой /mybots .
Юзернеймы
При создании бота нужно выбрать юзернейм. После этого поменять его будет очень сложно.
Как поменять юзернейм бота
Если у вас есть бот, и вы хотите дать ему более короткий юзернейм (который может быть занят неработающим ботом), то вы, теоретически, можете это сделать через @BotSupport.
Для этого бот должен (внезапно) быть рабочим, а также поддерживать английский язык.
Принято использовать такой формат обращения в поддержку:
Если вы везунчик 9999 lvl — вам ответят.
Оформление бота
Открыв бота, пользователи могут увидеть его профиль.
Оформление бота настраивается в BotFather: меню /mybots → Edit Bot . Там можно изменить:
Информация (About) — это текст, который будет виден в профиле бота.
Аватарка. Аватарки ботов, в отличие от аватарок пользователей и чатов, не могут быть анимированными. Только картинки.
Команды — тут имеются ввиду подсказки команд в боте. Подробнее о командах ниже.
Inline Placeholder — об инлайн-режиме см. ниже.
Стандартный совет: Потратьте свое время и заполните описание и информацию бота, чтобы пользователям было понятнее и проще его использовать. Можете оставить там свои контакты. И поставьте аватарку, чтобы бота было проще отличать от других чатов в списке.
Запуск бота пользователем
В Телеграме можно делиться файлами до 2 ГБ, но в Bot API более жесткие лимиты: боты могут скачивать файлы до 20 МБ и отправлять файлы до 50 МБ.
Работа с файлами в Bot API
Если бот уже загрузил файл на сервер Телеграма, то он может использовать file_id, чтобы отправлять этот файл.
Загружать файл на сервер можно в том числе и по URL файла.
Куда может писать бот
Бот может писать в личку только тем пользователям, которые его запустили. Пользователь может заблокировать бота, и тогда бот снова не сможет ему писать.
Боты не могут писать другим ботам.
В группе боту можно дать права администратора, чтобы он мог выполнять действия админов.
В одной группе может быть до 20 ботов. В публичные группы (группы с юзернеймом) ботов могут добавлять только админы.
Как боты добавляют кнопки
Подробнее о кнопках тоже
Супергруппы
На самом деле многие группы в Телеграме являются супергруппами.
Почему так? Раньше было четкое разделение на группы и супергруппы. По задумке, супергруппы — это группы для сообществ. Супергруппы могут иметь больше участников, публичные ссылки и другие плюшки.
Со временем, видимо, решили, что это неудобная концепция. Теперь обычная группа становится супергруппой, когда у группы меняются какие-нибудь настройки (подробнее тут). Вот такой костыль.
В этой статье под группами я подразумеваю и супергруппы, и обычные группы.
id пользователей и чатов
У каждого пользователя, бота, группы, канала в Телеграме есть собственный id. Различать чаты в коде бота следует именно по id, потому что он никогда не меняется.
В токене бота первая часть — это его id. Например, токен 110201874:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw принадлежит боту с id 110201874 .
В Bot API перед id супергрупп и каналов пишется -100. Так, id 1356415630 превращается в -1001356415630 . Осторожно: вы не сможете сохранить это значение в 32-битный тип числа.
Команды — о них в следующем пункте.
Я включил Privacy mode, а он не работает
Нужно удалить бота из группы и добавить заново.
Это могло нарушить работу антиспам- и других ботов.
Сейчас баг уже исправлен.
Команды
Команды подсвечиваются как ссылки: нажатие отправляет команду в чат.
Разметка в Telegram API (Телеграм боты)
Способы выделения текста:
Жирный текст
Моноширинный текст ("в строке" и "блоком")
Кнопки
Инлайн-кнопки
URL button — кнопка с ссылкой.
Switch to inline button. Кнопка для переключения в инлайн-режим (об инлайн-режиме см. ниже). Кнопка может открывать инлайн в том же чате или открывать меню для выбора чата. Можно указать в кнопке запрос, который появится рядом с никнеймом бота при нажатии на кнопку.
Дополнительные виды кнопок
Login URL button — специальная кнопка для авторизации пользователей на сайте. Использовалась, например, в официальном боте @discussbot (до добавления нативных комментариев в Телеграм).
Клавиатурные кнопки
Есть другой тип кнопок: keyboard buttons. Они отображаются вместо клавиатуры как подсказки. При нажатии на такую кнопку пользователь просто отправит этот текст.
При этом в личных чатах с помощью кнопки можно:
Запросить номер телефона пользователя,
Запросить геолокацию пользователя,
Открыть у пользователя меню создания опроса.
По умолчанию, если показать кнопки в группе, они будут видны всем пользователям. Вместо этого можно отобразить кнопки одновременно для этих пользователей:
Ещё о кнопках
Показать клавиатурные кнопки,
Убрать все клавиатурные кнопки,
Таким образом, нельзя показать оба типа кнопок одновременно.
Взаимодействие с ботом
Ссылки на Телеграм боты.
Юзернеймы ботов работают так же, как и любые другие юзернеймы в Телеграме: бота @examplebot можно открыть по ссылке t.me/examplebot.
Также существует прямая ссылка: tg://resolve?domain=examplebot
Подробнее о ссылках tg://
Такие ссылки могут не только заменять ссылки t.me, но и задавать свои действия. Например, tg://settings открывает настройки.
Список известных таких ссылок есть канале @DeepLink.
Ссылка на добавление в группу
По ссылке t.me/examplebot?startgroup=true у пользователя откроется меню: выбор группы для добавления бота.
Прямая ссылка: tg://resolve?domain=examplebot&startgroup=true
Диплинки
По ссылке t.me/examplebot?start=<ваш текст> пользователь может запустить бота с каким-то стартовым параметром ( <ваш текст> ).
Как это выглядит:
При переходе по ссылке бот открывается как обычно.
Часто диплинки используются для реферальных программ (в качестве параметра можно передавать id пользователя, который поделился ссылкой). Есть и другие применения. Телеграм боты.
Прямая ссылка: tg://resolve?domain=examplebot&start=<ваш текст>
Инлайн-режим. Телеграм боты.
Инлайн-режим (inline mode) — это специальный режим работы бота, с помощью которого пользователь может использовать бота во всех чатах.
В группе можно запретить использовать инлайн всем или некоторым участникам. В официальных приложениях Телеграм это ограничение объединено с ограничением на отправку стикеров и GIF.
Результаты инлайн-режима
Результаты можно отображать двумя способами:
Сеткой. Удобно для выдачи картинок.
- Вертикальным списком. Удобно для выдачи текста.
Можно совмещать два типа, но корректно отображается это только на Telegram Desktop.
Приватность и геопозиция в инлайне
Inline feedback
Inline feedback — это апдейты о выбранных инлайн-результатах. Включаются через BotFather.
Создание наборов стикеров для телеграм ботов
Боты (и только боты!) могут создавать наборы стикеров. При этом каждый набор стикеров должен принадлежать какому-то пользователю. Посмотреть свои наборы стикеров пользователь может с помощью бота @Stickers.
Телеграм боты. Платежи
Телеграм предоставляет ботам возможность принимать платежи от пользователей. Это делается через провайдеров ЮMoney, Сбербанк, Stripe и ещё 7.
Эта возможность используются редко, потому что для использования провайдеров нужно юридическое лицо.
Платежи, к тому же, не работают на iOS из-за ограничений Apple.
HTML-игры в ботах
Telegram Login Widget
Вы можете добавить на свой сайт авторизацию через Телеграм. Процесс авторизации будет проходить так:
Пользователь должен будет ввести свой номер телефона.
Бот Telegram попросит подтвердить вход.
Telegram Login Widget не связан с Login URL button (см. раздел про кнопки выше), а является его альтернативой.
Разработка Телеграм ботов
Какие апдейты можно получать
Получение апдейтов: Bot API vs Telegram API
Если вы получили апдейт в Bot API, то второй раз вы его уже не получите.
В Telegram API это не так: пользователь может пользоваться мессенджером через несколько клиентов, каждый из которых должен получать апдейты.
Если запустить для одного бота несколько программ на Telegram API, то каждая из них будет получать все апдейты.
Ограничения Bot API не позволяют сделать то же самое.
Лимиты
Конечно, на запросы к серверу существуют лимиты. В Bots FAQ на сайте Telegram названы следующие:
Эти лимиты не строгие, а примерные. Лимиты могут быть увеличены для больших ботов через поддержку.
Другие известные ограничения в Telegram собраны на limits.tginfo.me — см. раздел про ботов.
Рассылка по пользователям
30 пользователям в секунду.
Смена владельца бота
Осенью 2020 года появилась возможность передавать ботов другому человеку. Это можно сделать в настройках бота в BotFather. Для этого на вашем аккаунте должна быть включена двухфакторная авторизация — не менее, чем за 7 дней до передачи. Передать бота можно только пользователю, который что-либо ему писал.
Локальный сервер Bot API
Также осенью 2020 года исходники Bot API выложили на GitHub. Теперь вы можете поднять собственный сервер Bot API. На GitHub перечислены следующие преимущества:
Скачивание файлов с сервера без ограничения (ограничение на отправку файлов пользователями в Телеграме — 2 ГБ),
Загрузка файлов на сервер до 2000 МБ,
Загрузка файлов на сервер с помощью локального пути и URI файла,
Использование любого локального IP-адреса для вебхука,
Использование любого порта для вебхука,
Возможность увеличить максимальное число соединений до 100000,
Получение локального пути файла вместо загрузки файла с сервера.
Юзерботы
В начале статьи я рассказывал о том, что такое Telegram API и Telegram Bot API.
Юзерботов следует использовать аккуратно: за большую подозрительную активность аккаунт могут ограничить или забанить.
Заключение. Телеграм боты
Я постарался собрать в одном месте и структурировать информацию о всех возможностях Телеграм-ботов. Большое спасибо vanutp, NToneE и Grinrill за помощь с фактами. Если мы что-то забыли — пишите, исправлю.
Я специально не разделял большую статью на несколько постов, чтобы можно было быстро найти нужную информацию. К тому же, в начале статьи есть её содержание. Так что можете сохранить её к себе и использовать как справочник 🙂
Вообще интерфейс бота (то есть интерфейс чата) имеет много ограничений. Но плохо ли это? Действительно удобнее использовать инструмент, когда это часть привычной среды. Я часто прямо в переписке нахожу нужную картинку или информацию с помощью инлайн-ботов. Как заядлый пользователь Телеграма, я люблю использовать ботов. И создаю ботов. И вы создавайте.
Хоть и с большим запозданием, публикую шпаргалку по telegram bot api, может, будет полезна.
Прикладываю официальную документацию, и готовый набор методов для работы с telegram. Обработку тестировал на 8.3.15.1747.
В тексте я буду давать ссылки на вторую документацию т.к. для ее просмотра не нужны премудрости для обхода блокировок.
В клиенте telegram ищем бота BotFather
Далее отправляем ему команды
/start
/newbot
Представление имени моего бота
unikalnoe_imya_bot
После этого бот выдаст нам данные для подключения, а именно токен вида 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11
Скринами
Соединение
В документации написано:
Код создания соединения :
Прокси
Есть огромное количество сайтов предоставляющий список таких бесплатных прокси, я использую getMe
Я специально буду повторять блоки кода, дабы Вы копировали сразу рабочий вариант, конечно это все нужно обернуть в функции и процедуры
Метод getMe вернет в теле ответа JSON структуру
"ok":true - Означает, что авторизация прошла успешно и Ваш токен валидный.
Short polling - это классическая схема, когда отправляя запрос мы сразу получаем результат его выполнения.
т.е. вы заводите РС с обработанными update_id и каждый раз анализируете - обработан полученный id или нет. Можно завести константу с последним обработанным update_id и сравнивать ее на < или > с полученным
Для работы в такой схеме необходимо договориться с сервером - какой таймаут считать допустимым, для этого у метода
Для переключения режима обмена на вебхуки существует метод InlineKeyboardMarkup
Загрузка полученных файлов
Для этого существует GET-метод
Ответ сервиса getFile
При этом запросе сервер ответит, что все Ок
Показ привью отправленной ссылки можно отключить с помощью параметра disable_web_page_preview
Для этого нужно к запросу добавить строку &disable_web_page_preview=true
Кнопки (клавиатуры)
У метода sendMessage есть еще один очень интересный параметр - reply_markup, который отвечает за быстрые ответы.
Кнопка - это объект InlineKeyboardButton, у которого только одно обязательное поле - text
Есть еще ряд полей, основное из которых - callback_data. Это данные, которые будут отправлены после нажатия кнопки пользователем. Сюда можно записывать идентификаторы из 1С (документа или справочника), числа и т.д. для последующей обработки.
Второй полезный параметр - url, в котором указывается ссылка, которая будет открыта при нажатии на кнопку
Пример JSON-описания клавиатуры
KeyboardButton с основным полем text, данный объект можно не использовать и сразу формировать массив строк.
Еще один важный параметр клавиатуры, но не обязательным, является resize_keyboard, который отвечает за "авто высоту" кнопок.
По умолчанию данный параметр установлен в false и клавиатура растягивается на высоту основной клавиатуры, что выглядит громоздко (см. скрин в примере).
Еще один опциональный параметр - one_time_keyboard, который при установке в true скрывает клавиатуру после нажатия кнопки.
ReplyKeyboardHide - Своего рода команда управления видимостью для клавиатуры
Отправка контактов
Метод похож на sendMessage за исключением нескольких обязательных полей:
phone_number - строковое представление телефонного номера
first_name - Имя контакта
Отправка документов (файлов)
За отправку файлов отвечает POST-метод
Со строковыми значениями вопросов не возникает - делаем СтрЗаменить и все, но есть еще и содержимое файла, которое нужно в итоговый запрос подсунуть.
Для решения этой проблемы у 1С есть метод ОбъединитьФайлы, который объединяет переданный в него массив файлов в один.
Разделим шаблон на части - певая это текст до %СодержимоеФайла%, а вторая это текст после %СодержимоеФайла%. Запишем эти 2 текста в файлы и используем ОбъединитьФайлы подсунув между текстовиками отправляемый файл.
Читайте также: