Telegram database library что это
Для любого бизнеса важно установить канал общения с клиентами. Но сделать это не так просто. Психология людей такова, что они не хотят захламлять память своего смартфона новым фирменным приложением из того места, которое они посетили. Совсем другое дело — чат-бот. Ненавязчивый и дружелюбный. А кроме того — со всеми необходимыми фишками: рекламными акциями, скидками и быстрым заказом. И уведомления в одном единственном удобном мессенджере. Почему бы его не реализовать в своем бизнесе? Тем более, что это не так сложно, как вы думаете.
Сегодня мы поговорим о ботах и их 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 (Bot API и Telegram API). Команда Telegram пошла ещё дальше и выпустила библиотеку TDLib (Telegram Database Library), позволяющую разрабатывать альтернативные клиенты Telegram и не задумываться о низкоуровневых деталях реализации (работа с сетью, шифрование и локальное хранение данных).
TDLib работает на Android, iOS, Windows, macOS, Linux, Windows Phone, WebAssembly, watchOS, tvOS, Tizen, Cygwin и других *nix системах, а так же интегрируется с любым языком программирования, поддерживающим выполнение C-функций.
В этой статье мы рассмотрим использование TDLib в Ruby и создание gem'а для взаимодействия с JSON-интерфейсом библиотеки.
Для начала нам понадобится скомпилированная TDLib. Инструкцию по сборке можно прочесть на официальном сайте. Из скомпилированных бинарников нам нужен только libtdjson.[so|dylib|dll].
Чтобы подключить функции библиотеки в Ruby можно использовать модуль Fiddle из стандартной библиотеки. Fiddle::Importer предоставляет удобный DSL для импорта функций из динамических библиотек:
Теперь мы можем вызывать функции TDLib:
TDLib — полностью асинхронная библиотека (лишь немногие функции можно вызывать синхронно с помощью td_json_client_execute ), поэтому работать с ней нужно соответствующим образом:
Это рабочий код, однако не самый удобный. Лучше разработать обертку для взаимодействия с библиотекой: с обработчиками событий, callback'ами, удобным конфигурированием и возможностью не писать boilerplate-код с первоначальной авторизацией.
Далее рассмотрим основную функциональность gem'а tdlib-ruby (ссылка в конце статьи).
Инициализация клиента
Процедуры отправки параметров библиотеки и проверки ключа шифрования скрыты внутри. Для начала работы достаточно создать экземпляр клиента:
Есть возможность повесить callback-обработчик.
При получении от TDLib обновления с типом `updateAuthorizationState' всегда будет выполняться обработчик, переданный как блок.
Некоторые методы (их немного, и я пока что таковых не встретил) могут возвращать ответ синхронно. Для этих случаев предусмотрен метод execute .
Давным-давно, а точнее, два года назад, Telegram проводил конкурс по созданию Android-клиентов для мессенджера. Победителем стало приложение Challegram, которое теперь превратилось в ещё один официальный клиент Telegram — Telegram X. Команда мессенджера даже выпустила специальный видеоролик, посвящённый основным фишкам приложения:
К̶ ̶с̶о̶ж̶а̶л̶е̶н̶и̶ю̶,̶ ̶с̶м̶е̶ш̶и̶в̶а̶т̶ь̶ ̶р̶е̶ж̶и̶м̶ы̶ ̶н̶е̶л̶ь̶з̶я̶,̶ ̶н̶а̶п̶р̶и̶м̶е̶р̶,̶ ̶о̶с̶т̶а̶в̶и̶в̶ ̶”̶п̶у̶з̶ы̶р̶и̶”̶ ̶в̶ ̶д̶и̶а̶л̶о̶г̶а̶х̶/̶г̶р̶у̶п̶п̶а̶х̶,̶ ̶н̶о̶ ̶п̶р̶и̶ ̶э̶т̶о̶м̶ ̶и̶с̶п̶о̶л̶ь̶з̶у̶я̶ ̶”̶с̶п̶л̶о̶ш̶н̶о̶й̶”̶ ̶р̶е̶ж̶и̶м̶ ̶в̶ ̶к̶а̶н̶а̶л̶а̶х̶.̶ ̶Н̶о̶,̶ ̶м̶о̶ж̶е̶т̶ ̶б̶ы̶т̶ь̶,̶ ̶р̶а̶з̶р̶а̶б̶о̶т̶ч̶и̶к̶и̶ ̶п̶р̶и̶с̶л̶у̶ш̶а̶ю̶т̶с̶я̶?̶ ̶:̶)̶ Уже можно.
Telegram X на данный момент достаточно сильно отличается от “старшего брата” по функциональности. Уникальные для X-версии возможности:
К сожалению, в силу своего юного возраста, Telegram X поддерживает не все возможные фишки мессенджера, в частности, нет поддержки сторонних локализаций (и русский язык, соответственно, никак не поставить, даже сторонними файлами), кастомных тем и т.д. Вероятнее всего, разработчики внедрят их в Х в течение нескольких месяцев.
Параллельно с Android-версией, Telegram X появился и на iOS, пусть и с небольшими проблемами. Основные возможности абсолютно те же, что и у X-Android, приложение переписано с языка Objective C на новомодный Swift, имеет более приятные для глаз анимации и меньше потребляет заряд аккумулятора.
Telegram хорош тем, что предоставляет бесплатный и открытый API для создания сторонних приложений и ботов. Теперь команда Павла Дурова рада представить TDLib — библиотеку, которая берёт на себя все задачи по взаимодействию с сервером Telegram и хранением локальных данных, позволяя сосредотачиваться на дизайне и дополнительных фишках сторонних приложений.
Исходные коды TDLib открыты и расположены на Github.
Бонус для тех, кто дочитал до конца: на следующей неделе (конец первой декады февраля) нас ждёт очередное обновление Telegram!
В конце 2017-го Павел Дуров заявил, что в начале 2018 года Telegram-сообщество ждет три достаточно серьезных обновления. Первое из них уже вышло — это открытая библиотека Telegram TDLib. Она является мощным многофункциональным инструментом, предоставляющим сторонним разработчикам широкие возможности для создания собственных сервисов.
Предпосылки для создания Telegram Database Library
Рынок криптовалюты с каждым днем все больше усиливает свои позиции. Стремительный рост курса биткоина заставил даже отъявленных скептиков всерьез воспринять нового игрока на мировом валютном пространстве. Павел Дуров решил не оставаться в стороне от данного процесса и начал задумываться о создании собственной блокчейн-платформы, о чем более подробно можно прочитать здесь.
Проблема в том, что ресурсов, в первую очередь человеческих, для того чтобы одновременно заниматься разработкой обновлений для мессенджера и внедрением криптовалюты, у Павла не так много. Его команда состоит всего из 15 разработчиков, которые не могут разрываться между несколькими серьезными проектами, при этом оставив качество на прежнем уровне. Чтобы переключиться на разработку блокчейн-платформы, и при этом сохранить конкурентоспособность мессенджера, было принято решение отдать развитие приложения на откуп сторонним девелоперам.
Добавить в заметки чтобы посмотреть позже?
Раньше неофициальные клиенты могли ждать по несколько недель, а то и месяцев, пока им станет доступен исходный код последних обновлений. Например, функция звонков была очень ожидаемой, но долгое время не появлялась в API.
С появлением открытой библиотеки Telegram разработчики имеют возможность использовать новый функционал практически в режиме реального времени. Теперь любой желающий может создать альтернативную версию Телеграмма, который по своим возможностям ничем не будет уступать официальному приложению. Сторонние девелоперы получили в свое распоряжение open source-библиотеку, в которой доступны полностью документированные методы и интерфейсы, а также реализовано шифрование и хранение данных. А значит, можно посвятить время разработке своих уникальных фишек для привлечения новых пользователей или даже превзойти оригинальный сервис.
Какие возможности предоставляет библиотека Telegram TDLib
Теперь не стоит бояться блокировки мессенджера
1 февраля Telegram-пользователей ждал неприятный сюрприз — приложение перестало быть доступным в AppStore. Как позже выяснилось, мессенджер был заблокирован из-за наличия недопустимого контента. И хотя проблему удалось решить в течение 14 часов, многие задумались: а что будет, если по каким-то причинам блокировка окажется более длительной? С появлением открытой библиотеки базы данных переживать по этому поводу не стоит. Ведь теперь каждый девелопер может создать собственный мессенджер, который, возможно, не только не будет уступать официальному приложению, но и по каким-то критериям окажется оптимальным выбором для конкретного пользователя.
Читайте также: