Zumbot телеграмм что это
Боты в Telegram — что это такое, зачем нужны и как они работают?
Здравствуйте, дорогие читатели!
Наверное, вы как и большинство современных людей не раз слышали о Telegram ботах. Но приходили ли Вам в голову мысли о том, как создаются боты, какие функции они выполняют, как делаются и какими бывают? Если да, то эта статья будет для Вас определённо полезной.
Что такое Телеграмм бот?
В этой части я хочу вам рассказать сначала о самих ботах в целом что это такое, а потом уже и о ботах в Telegram. Давайте же не будем ходить вокруг да около и уже приступим.
Что такое боты?
Бот (сокращение от слова «робот») — специально-написанная программа, которая выполняет различные действия по заданной команде или в автоматическом режиме. Функционал ботов огромен и разнообразен, и сейчас они активно распространяются в интернете. Telegram не стал исключением.
А Телеграмм боты?
Боты в Telegram стали появляться после того, как в 2015 году был создан новый Telegram Bot API.
Как уже было написано выше, боты выполняют кучу различных функций: от простого общения с пользователем до просмотра курса валют. В этом и заключается их главное достоинство. Теперь Вам не нужно скачивать кучу приложений, любое действие вы можете совершить, просто найдя нужного бота. А за счёт иллюзии общения с реальным юзером, которая создаётся в чате с ботом, пользование им становится куда приятнее и проще. Помимо всего вышеперечисленного боты также имеют такие достоинства как:
«Но как же найти нужного мне бота?» — спросите Вы. Поговорим об этом далее.
Как искать ботов в Telegram?
Всё гораздо проще, чем Вам кажется. Есть несколько вариантов для поиска нужного Вам бота. Найти бота можно прямо в телеграмме, достаточно ввести интересующее Вас слово и добавить приставку bot, так как имя бота всегда оканчивается на неё. Разберём на примере. Я очень люблю читать, но иногда нужную мне книгу найти очень трудно и, чтобы не ломать себе голову я просто захожу в Телеграмм, вбиваю в поисковой строке «bot книги» и нахожу книжного бота от флибусты — электронной библиотеки. С помощью этого бота я могу найти практически любую книгу в электронном варианте. (См. скриншоты ниже).
В поиске ботов Вам смогут помочь друзья, разбирающиеся в технологиях. Также для поиска ботов можно использовать интернет-подборки, которых в интернет можно найти огромное множество.
Бота нашли, но как им пользоваться? Сейчас разберёмся.
Как работают боты в Телеграмме?
Понять предмет работы бота человеку без специального образования будет достаточно сложно. Но попробуем разобраться.
Схема работы бота
По своей сути бот является посредником между пользователем и специально-написанной программой. Если кратко, то схема работы бота выглядит примерно так:
Команда от пользователя далее Передача ботом команды на сервер далее
Обработка программой на сервере запроса, полученного от бота далее
Ответ боту от сервера далее Передача ответа пользователю
Как пользоваться ботом?
Использовать бота в Телеграмм куда проще, чем понять суть его работы. Для «общения» с ботом не обязательно иметь какие-то супер-способности. Сейчас разберёмся на примере. Для начала находим нужного нам бота (как это сделать, вы уже знаете). Далее Вам нужно нажать /start и ввести команду. Бот даст ответ. (См. скриншоты ниже).
Не забывайте, что бот — это всего лишь посредник между Вами и программой, понимающий определённые команды.
Кроме того, дорогие читали, Вы должны знать, что ботов можно добавлять в группу (кнопка «Добавить в группу»), в который вы состоите, а также поделиться ботом с друзьями (кнопка «Поделиться»).
Также не стоит переживать, если бот Вам не отвечает. Причин может быть несколько: проблема на сервере, неверно-введённая Вами команда, ошибки разработчиков.
Как создать бота в Телеграмме?
Уверена, что у многих из Вас появилось желание создать своего бота. Могу Вас заверить в том, что создать собственного бота по силам каждому из Вас! Давайте разберёмся по порядку.
Бот готов, но для его полноценной работы Вам необходимо перейти к этапу программирования. Это можно сделать с помощью языка программирования «Python». У нас на блоге есть статья про курсы по Python разработке, возможно она вам также будет интересна.
Стоит сказать, что для создания сложных ботов всегда можно обратиться к услугам специалиста, который сделает бота в соответствии с Вашими пожеланиями. Найти такого специалиста можно например на биржах фриланса.
Подборка Telegram ботов
Предлагаю Вашему вниманию мою личную подборку Telegram ботов.
Заключение
Количество Telegram ботов стремительно растёт, но не нужно пугаться, ведь боты действительно полезная для людей вещь, позволяющая экономить время и ресурсы. Вам больше не придётся скачивать кучу приложений для удовлетворения Ваших потребностей — Вам помогут боты!
Надеюсь, что данная статья убедила Вас в полезности и удобстве Telegram ботов. Буду рада, если Вы поделитесь этой статьёй с друзьями и подпишитесь на обновления блога! До новых встреч!
17 занимательных телеграм-ботов из моей коллекции ссылок
Сегодня я продолжаю серию постов со всякими ссылками и на этот раз выписал несколько наиболее примечательных ботов в телеграме, которые мне когда либо попадались:
1) t.me/mailsearchbot — бот, показывающий пароль от введенной электронной почты, если он имеется в базе слитых паролей
2) t.me/FastAid_bot — бот с рекомендациями по оказанию первой помощи до прибытия скорой
3) t.me/YouTonebot — бот, который озвучивает присланные эмодзи
4) t.me/Pix2MixBot — бот меняющий расу человека на фотографии
5) t.me/pogodarlingbot — этот бот каждое утро сообщает, что сегодня надеть по погоде в выбранном городе
6) t.me/PhoneRecordBot — бот для записи телефонных разговоров
7) t.me/daynumbertodaybot — сообщает, какой сегодня день с момента рождения и сколько процентов жизни прожито
8) t.me/sciencehoroscopebot — ежедневный гороскоп, составляемый на основе психологического теста Роршаха
9) t.me/VoicesOfStrangers_bot — присылает голосовые сообщения от случайных пользователей
10) t.me/firstpostchannelbot — показывает первые публикации любого канала в телеграме
11) t.me/VoiceEffectsBot — позволяет изменить тон голоса в голосовом сообщении и добавить эффекты
12) t.me/Lines50Bot — бот, который перерисовывает присланное изображение в абзац из текстовых символов
13) t.me/chastushkibot — бот, который умеет превращать текст в частушки
14) t.me/WWPagerBot — бот, с помощью которого можно зарегистрировать почту с адресом @telegа.email и получать сообщения сразу в телеграм
15) t.me/QNextBot — конструктор телеграм-ботов в виде телеграм-бота
16) t.me/colorization_bot — делает черно-белые фото цветными
17) t.me/instphbot — скачивает фото из инстаграма
Интересно. Мой пароль слит 29 раз) Причем есть действующий))
Огонь с фотками! Весь вечер ржали
Может кому-то будет интересен бот по пробиву номера в олх, @olx_phone_bot сохраняет все объявления и даже старые.
Забыли написать про bota продвижения во всех соц.сетях @SocialSETbot
надеюсь я тебя больше не увижу, вместе с рекламой своих говноботов из говнотелеги
Музыка грибов
Ничего такого, просто биоэлектричество гриба преобразуется в ноты синтезатора
Продолжение поста «Фотореалистичные изображения Джорджа Вашингтона и Авраама Линкольна соответственно, если бы они жили в наше время»
Как выглядели бы известные исторические личности сегодня. Работы дизайнера Бекки Саладин.
Телеграм-каналы для крысинга
Я ещё помню ламповые времена, когда всякий OSINT (сбор разведывательной информации из общедоступных источников, а также её анализ) надо было осуществлять руками: пробивали людей вручную, по крупицам собирали данные, гуглили, занимались «социальной инженерией». Алгоритм написать под это дело не сложно вообще-то, но вопрос не ставился на «поток», а за публикацию таких программок можно было по рукам получить. И вот славный 2021-ый, массы узнают, что госбазы сто лет в обед как слиты по даркнетам, а в телеге можно онлайн пробить практически любого человека. Тащемта, я поюзал местных ботов и составил свой короткий обзор.
5. Smart_SearchBot ищет контактную инфу, но делает это несколько корявенько. Через несколько запросов начитает трещать о деньгах.
Смотря на это великолепие, страшно представить, что будет через несколько лет. Господа, начинайте подчищать свои цифровые хвосты уже сейчас, ибо очень скоро полноценный пробив по пашпортам будет доступен не только родственникам и друзьям силовиков, но и бабе Больжедоре из пятого падика.
После инцидента с Навалом начальство даст всем по голове, но прогресс и жадность будут неумолимо приближать час всеобщей публичности. Зная, как работают алгоритмы, можно не оставлять излишки инфы.
Необычные вопросы, на которые есть ответ #5
Как не сойти с ума во время карантина? Все просто, нужно всего лишь.
почитать очередную познавательную подборку ответов на вопросы, которые мы вряд-ли задаем сами себе. Присоединяйтесь!
Можно ли кокос назвать орехом?
Оказывается, нельзя. Орехами их называют ошибочно, так как кокос — это костянка, косточковый плод, такой же, как слива, персик или абрикос. Эти плоды — самая ценная часть кокосовой пальмы. Из белой мякоти ядра (копры) получают масло, широко используемое в кондитерских изделиях, в косметике, для изготовления свечей и мыла. Кокосовое молоко — бодрящий напиток. Из бутонов и соцветий получают сахар, используются они и в виноделии. Волокна оболочки плода применяются для изготовления половиков, циновок, щеток, мешков и веревок. Древесина и стволы кокосовых пальм служат строительным материалом. Из листьев плетут корзины, ими же кроют крыши хижин.
Почему на лице не бывает мурашек?
Ощущение мурашек возникает при сокращении гладких мышц волосяных луковиц– непроизвольной реакции, управляемой вегетативной нервной системой. Это остаток рефлекса вздыбливания шерсти, известного у животных. Исходно это была реакция на холод (приподнятая шерсть лучше держит тепло), затем она стала возникать при встрече с опасностью (животное со вздыбленной шерстью кажется больше), а позднее и при других ситуациях. Но вздыбленная шерсть на морде ухудшала бы обзор, что при встрече с врагом особенно нежелательно. Поэтому у животных лицевая область была исключена из участия в этом рефлексе, и в таком виде он достался нам.
Чем опасны дальтоники?
Впервые этот дефект зрения описал в 1794 году английский химик и физик Джон Дальтон, сам им страдавший. Долгое время к столь «несерьезной» болезни относились крайне легкомысленно, пока в 1875 году в Швеции не произошла крупная железнодорожная катастрофа. Перед следствием, которое велось по этому делу, стоял неразрешимый вопрос: как машинист (кстати, чудом оставшийся в живых и уверявший, что вел состав на зеленый свет) мог не заметить красный сигнал семафора? Ответ смог дать только эксперт: известный физиолог Гальмгрен показал машинисту несколько мотков разноцветной шерсти и попросил его назвать цвет каждого из них. Указав на красный, подсудимый заявил, что это — зеленый, повергнув общество в шок.
С тех пор к исследованиям цветового зрения стали относиться с предельным вниманием, и особенно — после появления транспортных средств и авиации. Дальтонизмом, или дихромазией, называется частичная цветовая слепота, при которой нарушается нормальное трихроматическое цветоощущение, когда одновременно не воспринимаются три основных цвета — красный, зеленый, фиолетовый и их производные оттенки.
Дихроманты могут не различать красный цвет (протанопия), зеленый (дейтеранопия) или фиолетовый (тританопия). Согласно статистике, наследственный дальтонизм поражает 8% мужчин и 0,5% женщин. Как же это происходит? Ген, кодирующий белок, ответственный за цветовосприятие, расположен в Х-хромосоме. Дальтонизм проявляется лишь тогда, когда в наборе хромосом не будет ни одной правильной копии гена.
Пол человека, как известно, определяется половыми хромосомами — Х и У (две Х-хромосомы — это женщина, Х и У — мужчина). Одна «больная» Х-хромосома, полученная от родной матери, сделает мужчину дальтоником. У женщины же, если в одной Х-хромосоме ген испорчен, а в другой — нет, белок будет синтезироваться нормально, и дальтонизм ей не грозит. Заболеет она только в том случае, если получит две «больные» Х-хромосомы — и от матери, и от отца.
Почему кошки боятся воды?
Они плохо её знают
Домашние кошки — это потомки дикой нубийской (буланой) кошки, живущей в Северо-Восточной Африке. Она обитает в полупустынях и пустынях, вдали от крупных водоемов. Вода для нее непривычна и потенциально опасна, эти кошки не умеют плавать и инстинктивно избегают попадания в воду. Такое отношение к воде сохранилось у большинства домашних кошек. Однако некоторые особи и целые кошачьи популяции преодолели этот страх. Так, например, кошки острова Мэн, расположенного в Ирландском море, охотно заходят в воду и даже ловят там рыбу.
Почему после пробуждения хочется потянуться?
Чтобы разогнать кровь
Во сне интенсивность кровотока уменьшается, поскольку расслабленные мышцы потребляют мало кислорода. Отток венозной крови затрудняется, так как вены лишены собственной мускулатуры и кровь по ним течет за счет сокращения близлежащих мускулов. При потягивании скелетные мышцы напрягаются, отток венозной крови усиливается, капилляры расширяются, а импульсы от мышечных рецепторов повышают тонус мозга, делая пробуждение окончательным.
Как определяется температура воздуха по ощущению?
С учетом влияния ветра и влажности
Ветер сдувает с кожи слой согретого ею воздуха, и мы ощущаем ветреную погоду как более холодную. Этот эффект был изучен американскими полярниками в начале Второй мировой войны. По замерзанию воды в зависимости от скорости ветра они построили так называемый ветро-холодовой индекс. С его помощью для каждого сочетания температуры и силы ветра можно определить температуру, при которой вода замерзает с той же скоростью в безветренную погоду. Например, при ветре 2 м/с температура −15 °C ощущается как −20 °C. Есть похожий индекс и для жары (Humindex), ощущение которой усугубляется влажностью воздуха, замедляющей испарение влаги с кожи.
Правда ли, что мед никогда не портится?
Высокая концентрация сахаров затрудняет развитие микроорганизмов, поэтому мед не прокисает и не протухает. Однако при длительном хранении часть летучих веществ испаряется, что ослабляет аромат. Поэтому старый мед хотя и пригоден в пищу, но считается недоброкачественным продуктом. Согласно потребительским стандартам, срок годности меда при правильном хранении составляет 8–12 месяцев в зависимости от сорта. Реально же некоторые сорта сохраняют свои свойства до нескольких лет.
Почему от удара перед глазами «звездочки бегают»?
Удар раздражает зрительный нерв
Резкое и сильное сотрясение глазного яблока при ударе вызывает механическое раздражение сетчатки и/или зрительного нерва. Этот ложный сигнал поступает в зрительные центры головного мозга, которые интерпретируют его как обычный сигнал от рецепторов сетчатки. Он ощущается как звездочки, искры, вспышки света. В науке такие явления
Почему зевота так заразительна?
Причина заразительности зевания — психологическая. Несколько лет назад исследователи из Университета Дрекселя (Филадельфия) провели исследование. Они показывали испытуемым видеозапись со сладко зевающими людьми и наблюдали за реакцией участников эксперимента. Одни, глядя на экран, сами начинали зевать, другие к этому зрелищу оставались более или менее равнодушны. В зависимости от реакции всех испытуемых разделили на две группы и провели психологическое тестирование. Оказалось, что те, кто легче заражается чужим зеванием, более склонны к установлению связей с окружающими людьми. Иначе говоря, чем человек общительнее, тем чаще он зевает «за компанию». (Кстати, шизофреники, не склонные к сопереживанию, зевают гораздо реже людей с нормальной психикой.) Кроме того, согласно исследованию, проведенному в 1989 году в Университете Мэриленда, заразительность зевоты не зависит от угла, под которым наблюдающий смотрит на зевающего. В любом случае ответный зевок — это знак симпатии. Следует лишь помнить, что безудержное зевание — наиболее частая причина вывиха челюсти.
Почему у шарпеев много складок?
У них повышенный уровень гиалуроновой кислоты
Особенно много этой кислоты содержится в хряще и соединительной ткани – в том числе в той, которая составляет основную толщу кожи. Гиалуроновая кислота синтезируется несколькими ферментами. У шарпеев мутация затронула часть гена одного из таких ферментов, в результате активность гена оказалась резко увеличена. Избыточный фермент производит избыточную гиалуроновую кислоту, которая увеличивает объем шкуры. А поскольку поверхность животного ограничена, шкура собирается складками.
Всё, о чём должен знать разработчик Телеграм-ботов
Вы вряд ли найдете в интернете что-то про разработку ботов, кроме документаций к библиотекам, историй «как я создал такого-то бота» и туториалов вроде «как создать бота, который будет говорить hello world». При этом многие неочевидные моменты просто нигде не описаны.
Как вообще устроены боты? Как они взаимодействуют с пользователями? Что с их помощью можно реализовать, а что нельзя?
Подробный гайд о том, как работать с ботами — под катом.
Начало работы
Telegram API vs Telegram Bot API
Рассказываю по порядку.
Телеграм использует собственный протокол шифрования MTProto. MTProto API (он же Telegram API) — это API, через который ваше приложение Телеграм связывается с сервером. Telegram API полностью открыт, так что любой разработчик может написать свой клиент мессенджера.
Для написания ботов был создан Telegram Bot API — надстройка над Telegram API. Перевод с официального сайта:
Чтобы использовать Bot API, вам не нужно ничего знать о том, как работает протокол шифрования MTProto — наш вспомогательный сервер будет сам обрабатывать все шифрование и связь с Telegram API. Вы соединяетесь с сервером через простой HTTPS-интерфейс, который предоставляет простую версию Telegram API.
Среди упрощений Bot API: работа через вебхуки, упрощенная разметка сообщений и прочее.
Почему-то мало кто знает о том, что боты могут работать напрямую через Telegram API. Более того, таким образом можно даже обойти некоторые ограничения, которые даёт Bot API.
Вся информация ниже будет по умолчанию относиться и к Bot API, и к Telegram API. О различиях я буду упоминать. От некоторых ограничений Bot API можно избавиться с помощью локального сервера, об этом в конце статьи.
На чём пишут Телеграм-ботов
Бот должен уметь отправлять запросы Телеграм-серверу и получать от него апдейты (updates, обновления).
Как получать апдейты в Bot API
Получать апдейты можно одним из двух способов:
Поллинг — просто регулярно отправлять запрос к серверу Телеграма для получения обновлений,
Вебхук — сделать так, чтобы Телеграм сам отправлял запросы по нужному URL.
Конечно, удобнее использовать библиотеки, чем делать http-запросы «руками».
Если вы попробуете загуглить, как написать Телеграм-бота на Python, вам предложат воспользоваться библиотеками python-telegram-bot и telebot. Но не стоит.
Ну, если вы только хотите познакомиться с разработкой ботов и написать своего hello-world-бота, то можете, конечно использовать и их. Но эти библиотеки могут далеко не всё. Среди разработчиков ботов лучшей библиотекой для ботов на Python считается aiogram. Она асинхронная, использует декораторы и содержит удобные инструменты для разработки. Ещё был хороший Rocketgram, но он давно не обновлялся.
Также ботов часто пишут на JavaScript, для этого обычно используется Telegraf. Библиотеки есть и для многих других языков, но используют их реже.
Если же вы хотите использовать Telegram API, то можете воспользоваться Python’овскими Telethon и Pyrogram.
Если вы хотите получить какое-то представление о том, как вообще выглядит код бота, вот вам пример использования на aiogram с его странички на GitHub:
Этот бот будет отвечать на команды /start и и /restart.
Создание бота
Один пользователь может создать до 20 ботов.
Юзернеймы
При создании бота нужно выбрать юзернейм. После этого поменять его будет очень сложно.
Как поменять юзернейм бота
Если у вас есть бот, и вы хотите дать ему более короткий юзернейм (который может быть занят неработающим ботом), то вы, теоретически, можете это сделать через @BotSupport.
Для этого бот должен (внезапно) быть рабочим, а также поддерживать английский язык.
Принято использовать такой формат обращения в поддержку:
Если вы везунчик 9999 lvl — вам ответят.
Юзернейм бота выглядит как обычный юзернейм, но он должен заканчиваться на «bot».
Вы могли видеть ботов с именами @pic, @vid, @sticker, @gamee — это официальные боты Телеграма. Им можно нарушать все правила 🙂
Очень многие юзернеймы уже заняты. Свободных коротких юзернеймов осталось очень мало. И что самое грустное: почти все эти боты мертвы. Просто не отвечают на сообщения. Наверное, это просто разные любопытные люди хотят сделать бота, создают его, а потом забивают. У меня самого есть несколько лежащих ботов. Так что, думаю, лимит в 20 ботов на одного владельца вполне оправдан 🙂
Оформление бота
Открыв бота, пользователи могут увидеть его профиль.
Описание (Description) — это текст, который пользователи будут видеть в начале диалога с ботом под заголовком «Что может делать этот бот?»
Информация (About) — это текст, который будет виден в профиле бота.
Аватарка. Аватарки ботов, в отличие от аватарок пользователей и чатов, не могут быть анимированными. Только картинки.
Команды — тут имеются ввиду подсказки команд в боте. Подробнее о командах ниже.
Inline Placeholder — об инлайн-режиме см. ниже.
Стандартный совет: Потратьте свое время и заполните описание и информацию бота, чтобы пользователям было понятнее и проще его использовать. Можете оставить там свои контакты. И поставьте аватарку, чтобы бота было проще отличать от других чатов в списке.
Сообщения и чаты
Запуск бота пользователем
Таким образом, первое сообщение от пользователя — это всегда /start (либо /start с параметрами, об этом ниже в разделе «Диплинки»).
. если пользователь использует официальный клиент
На стороне сервера это не проверяется, поэтому теоретически пользователь может отправить боту любое сообщение через Telegram API.
Сообщения
Понятно, что главная функция бота — отправлять и получать сообщения.
И то, и другое можно делать со всеми видами сообщений (фото и видео, файлы, опросы, голосовые сообщения и т. д.).
В Телеграме можно делиться файлами до 2 ГБ, но в Bot API более жесткие лимиты: боты могут скачивать файлы до 20 МБ и отправлять файлы до 50 МБ.
Работа с файлами в Bot API
Если бот уже загрузил файл на сервер Телеграма, то он может использовать file_id, чтобы отправлять этот файл.
Загружать файл на сервер можно в том числе и по URL файла.
Куда может писать бот
Бот может писать в личку только тем пользователям, которые его запустили. Пользователь может заблокировать бота, и тогда бот снова не сможет ему писать.
Боты не могут писать другим ботам.
Бота можно добавить в группу (если в BotFather включена соответствующая настройка). По умолчанию он видит не все сообщения (об этом ниже, в разделе «Видимость сообщений в группах»).
В группе боту можно дать права администратора, чтобы он мог выполнять действия админов.
В одной группе может быть до 20 ботов. В публичные группы (группы с юзернеймом) ботов могут добавлять только админы.
Также бота можно добавить в канал, причем только как администратора. Самый частый способ использования ботов в каналах — добавление кнопок под постами («лайки», ссылки и прочее).
Как боты добавляют кнопки
У админа канала может быть специальное право: «Редактирование чужих публикаций». С помощью него боты редактируют посты, добавляя к ним кнопки.
Подробнее о кнопках тоже ниже.
Супергруппы
На самом деле многие группы в Телеграме являются супергруппами.
Почему так? Раньше было четкое разделение на группы и супергруппы. По задумке, супергруппы — это группы для сообществ. Супергруппы могут иметь больше участников, публичные ссылки и другие плюшки.
Со временем, видимо, решили, что это неудобная концепция. Теперь обычная группа становится супергруппой, когда у группы меняются какие-нибудь настройки (подробнее тут). Вот такой костыль.
В этой статье под группами я подразумеваю и супергруппы, и обычные группы.
Супергруппу нельзя обратно превратить в группу. С точки зрения API супергруппа устроена так же, как и канал. Важное отличие супергрупп от обычных групп состоит в нумерации сообщений: о нём чуть ниже.
id пользователей и чатов
У каждого пользователя, бота, группы, канала в Телеграме есть собственный id. Различать чаты в коде бота следует именно по id, потому что он никогда не меняется.
id сообщений
Каждое сообщение в Телеграме имеет свой id. Это относится и к системным сообщениям (пользователь зашел в группу, изменилось название группы и т. д.)
Через Telegram API боты могут получать по запросу сообщения в любом чате по их id.
id сообщений в супергруппах и каналах уникальны для чата: первое сообщение в чате имеет номер 1, второе имеет номер 2 и так далее.
id сообщений в личных сообщениях и обычных группах работают по другому. Там, можно сказать, нумерация сквозная: id сообщения уникально для каждого отправившего его пользователя. Так, первое сообщение от пользователя во всех личках и группах имеет номер 1, второе сообщение от того же пользователя имеет номер 2 и так далее.
Видимость сообщений в группах
Обычно бот должен реагировать именно на команды. Телеграм не уведомляет бота об остальных сообщениях, и это гарантирует приватность переписки.
Но если боту нужно видеть все сообщения в группе (например, если это чат-бот или антиспам-бот), для него можно отключить Privacy mode.
Privacy mode — настройка в BotFather, которая по умолчанию включена. В таком режиме бот в группах видит только такие сообщения:
Сообщения с упоминанием бота,
Ответы на сообщение бота, ответы на ответы и так далее,
Команды — о них в следующем пункте.
А если Privacy mode выключен, то бот видит все сообщения в группе.
Если бот — админ в группе, то он в любом случае видит все сообщения.
Бот, работающий через Bot API, в любом случае не будет видеть сообщения от других ботов.
Бот видит не все сообщения Я включил Privacy mode, а он не работает
Нужно удалить бота из группы и добавить заново.
Недавно был найден баг: боты не могли видеть некоторые сообщения от юзеров, если сообщения выглядят как команды с юзернеймом пользователя на конце.
Это могло нарушить работу антиспам- и других ботов.
Сейчас баг уже исправлен.
Команды
Часто используемый способ «общения» пользователей с ботом — команды. Команды начинаются на «/» и состоят из латинских букв (можно использовать цифры и нижние подчеркивания).
Команды подсвечиваются как ссылки: нажатие отправляет команду в чат.
В BotFather можно указать подсказки команд для бота. Он будут отображаться при вводе «/» и команд. Если есть подсказки, рядом с кнопкой «Отправить» появляется кнопка для открытия меню команд.
Разметка сообщений
Как вы, наверное, знаете, сообщения в Телеграме могут содержать не только обычный текст, но и жирный, курсив и др. В Bot API разметку сообщений можно делать в HTML и Markdown.
Разметка в Telegram API
В Telegram API для разметки надо вместе с сообщением передавать entities (MessageEntityBold, MessageEntityItalic и так далее). Хорошие библиотеки сами превращают HTML/Markdown в текст и entities.
Способы выделения текста:
Жирный текст
Моноширинный текст («в строке» и «блоком»)
Упоминание пользователя — текст, похожий на ссылку, клик по которому открывает профиль пользователя. Если упомянуть в группе её участника, он получит уведомление.
Чтобы вставить в сообщение упоминание пользователя, в Bot API нужно встроить ссылку на tg://user?id=123456789.
Кнопки
Инлайн-кнопки
Бот может оставлять кнопки под своими сообщениями.
Кнопки под сообщениями (они же inline keyboards / inline buttons) в основном бывают трёх видов:
URL button — кнопка с ссылкой.
Callback button. При нажатии на такую кнопку боту придёт апдейт. С созданием кнопки можно указать параметр, который будет указан в этом апдейте (до 64 байтов). Обычно после нажатий на такие кнопки боты изменяют исходное сообщение или показывают notification или alert.
Switch to inline button. Кнопка для переключения в инлайн-режим (об инлайн-режиме см. ниже). Кнопка может открывать инлайн в том же чате или открывать меню для выбора чата. Можно указать в кнопке запрос, который появится рядом с никнеймом бота при нажатии на кнопку.
Дополнительные виды кнопок
Login URL button — специальная кнопка для авторизации пользователей на сайте. Использовалась, например, в официальном боте @discussbot (до добавления нативных комментариев в Телеграм).
Callback game button — кнопка для открытия HTML-игры. См. пункт «HTML-игры».
Pay button — кнопка для платежей. См. пункт «Платежи через ботов».
Клавиатурные кнопки
Есть другой тип кнопок: keyboard buttons. Они отображаются вместо клавиатуры как подсказки. При нажатии на такую кнопку пользователь просто отправит этот текст.
При этом в личных чатах с помощью кнопки можно:
Запросить номер телефона пользователя,
Запросить геолокацию пользователя,
Открыть у пользователя меню создания опроса.
Есть опция resize_keyboard, которая отвечает за то, изменять ли высоту этой «клавиатуры из кнопок». По умолчанию она, почему-то, выключена, и тогда высота клавиатуры стандартная большая. Получаются кнопки как на этой картинке:
Чтобы показать клавиатурные кнопки, бот должен отправить сообщение. Можно отправить клавиатуру, которая свернётся (но не пропадёт) после нажатия на кнопку.
По умолчанию, если показать кнопки в группе, они будут видны всем пользователям. Вместо этого можно отобразить кнопки одновременно для этих пользователей:
Для пользователей, юзернеймы которых были в тексте сообщения,
Если это ответ на другое сообщение: для пользователя, который его отправил.
Ещё о кнопках
Оба типа кнопок могут составлять несколько рядов, в каждом из которых по несколько кнопок. Ограничения: в ряду может быть до 8 кнопок, а всего с сообщением до 100 кнопок.
При отправке сообщения можно выбрать одно (но не больше) из следующих действий:
Добавить к сообщению инлайн-кнопки,
Показать клавиатурные кнопки,
Убрать все клавиатурные кнопки,
Force reply: автоматически заставить пользователя ответить на сообщение. Так произойдёт то же самое, что и при нажатии пользователем кнопки «Ответить». Это нужно для того, чтобы бот мог общаться с пользователями в группах, не нарушая Privacy mode.
Таким образом, нельзя показать оба типа кнопок одновременно.
Взаимодействие с ботом
Ссылки на бота
Юзернеймы ботов работают так же, как и любые другие юзернеймы в Телеграме: бота @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= пользователь может запустить бота с каким-то стартовым параметром ( ).
При переходе по ссылке бот открывается как обычно.
Отображается кнопка «Запустить», даже если пользователь уже запускал бота.
Пользователь нажимает на кнопку и видит сообщение /start (всё как обычно).
Боту вместо этого приходит сообщение /start
Так бот может отреагировать на запуск не как на обычный «/start», а другим способом.
Часто диплинки используются для реферальных программ (в качестве параметра можно передавать id пользователя, который поделился ссылкой). Есть и другие применения.
Прямая ссылка: tg://resolve?domain=examplebot&start=
Инлайн-режим
Инлайн-режим (inline mode) — это специальный режим работы бота, с помощью которого пользователь может использовать бота во всех чатах.
Выглядит это так: пользователь вводит юзернейм бота в поле для ввода сообщения. После юзернейма можно ещё записать запрос (текст до 256 символов).
Появляется менюшка с результатами. Выбирая результат, пользователь отправляет сообщение.
Инлайн-режим можно включить в BotFather, там же можно выбрать плейсхолдер вместо стандартного «Search. «
В группе можно запретить использовать инлайн всем или некоторым участникам. В официальных приложениях Телеграм это ограничение объединено с ограничением на отправку стикеров и GIF.
Результаты инлайн-режима
Результаты можно отображать двумя способами:
Сеткой. Удобно для выдачи картинок.
Вертикальным списком. Удобно для выдачи текста.
Можно совмещать два типа, но корректно отображается это только на Telegram Desktop.
Приватность и геопозиция в инлайне
Когда пользователь вызывает инлайн-режим, бот не может получить никакую информацию о контексте, кроме информации о пользователе. Таким образом, бот не может узнать ни чат, в котором вызвали инлайн, ни сообщение, на которое пользователь отвечает.
Но зато если включить в BotFather настройку «Inline Location Data», то бот сможет видеть геопозицию пользователей, когда они используют инлайн (на мобильных устройствах). Перед этим у пользователей показывается предупреждение.
Inline feedback
Inline feedback — это апдейты о выбранных инлайн-результатах. Включаются через BotFather.
Предполагается использование inline feedback для сбора статистики, но не всегда он используется так. Inline feedback позволяет «подгружать» не все результаты сразу, а только выбранный. Например, если бот используется для поиска музыки, то он может загружать не все песни сразу, а только одну.
Важный момент: если вы получили апдейт об отправке инлайн-сообщения, то вы можете его редактировать, только если к нему прикреплены инлайн-кнопки. (Если кнопок нет, то в апдейте не указывается id инлайн-сообщения, по которому происходит редактирование).
Создание наборов стикеров
Боты (и только боты!) могут создавать наборы стикеров. При этом каждый набор стикеров должен принадлежать какому-то пользователю. Посмотреть свои наборы стикеров пользователь может с помощью бота @Stickers.
Платежи через ботов
Телеграм предоставляет ботам возможность принимать платежи от пользователей. Это делается через провайдеров ЮMoney, Сбербанк, Stripe и ещё 7.
Эта возможность используются редко, потому что для использования провайдеров нужно юридическое лицо.
UPD 26.04.2021. В новом обновлении появилось больше возможностей платежей для разработчиков. Теперь боты могут отправлять платежи не только в лс, но и в группы и в каналы. Это позволяет сделать из канала «витрину», на которой можно сразу купить товар. Вы можете посмотреть, как это выглядит, в официальном демо-канале.
HTML-игры в ботах
Боты могут позволять пользователям играть в HTML5-игры в чатах. Бот может отправлять сообщения-игры или создавать их через инлайн-режим. Как это работает, можно посмотреть на примере официального @gamebot.
Telegram Login Widget
Вы можете добавить на свой сайт авторизацию через Телеграм. Процесс авторизации будет проходить так:
Пользователь должен будет ввести свой номер телефона.
Бот Telegram попросит подтвердить вход.
Пользователь авторизуется и нажимает на «Принять» на сайте.
Telegram Login Widget не связан с Login URL button (см. раздел про кнопки выше), а является его альтернативой.
Разработка ботов
Какие апдейты можно получать
Бот не может получить старые сообщения из чата. Бот не может получить список всех своих пользователей. Все, что может получать бот — это информацию об обновлениях. В этом заключается главная сложность разработки ботов.
Вы можете получать информацию о новых сообщениях в боте и других событиях, но только один раз. Вам придётся самим хранить список чатов, старых сообщений (если это зачем-то нужно) и так далее. Если вы случайно сотрёте/потеряете эту информацию, вы её больше никак не получите.
В Telegram API бот может чуточку больше: он может получать сообщения по id, получать список участников группы и прочее.
Получение апдейтов: Bot API vs Telegram API
Если вы получили апдейт в Bot API, то второй раз вы его уже не получите.
В Telegram API это не так: пользователь может пользоваться мессенджером через несколько клиентов, каждый из которых должен получать апдейты.
Если запустить для одного бота несколько программ на Telegram API, то каждая из них будет получать все апдейты.
Ограничения Bot API не позволяют сделать то же самое.
Лимиты
Конечно, на запросы к серверу существуют лимиты. В Bots FAQ на сайте Telegram названы следующие:
Не больше одного сообщения в секунду в один чат,
Не больше 30 сообщений в секунду вообще,
Не больше 20 сообщений в минуту в одну группу.
Эти лимиты не строгие, а примерные. Лимиты могут быть увеличены для больших ботов через поддержку.
Другие известные ограничения в Telegram собраны на limits.tginfo.me — см. раздел про ботов.
Рассылка по пользователям
Ниже в Bots FAQ сказано, что Bot API не позволяет рассылать сообщения всем юзерам одновременно и что в будущем, может быть, они что-то для этого сделают. И написано это уже несколько лет.
Они советуют растянуть рассылку на длительное время (8-12 часов) и замечают, что API не позволит отправлять сообщения более чем
30 пользователям в секунду.
Смена владельца бота
Осенью 2020 года появилась возможность передавать ботов другому человеку. Это можно сделать в настройках бота в BotFather. Для этого на вашем аккаунте должна быть включена двухфакторная авторизация — не менее, чем за 7 дней до передачи. Передать бота можно только пользователю, который что-либо ему писал.
Локальный сервер Bot API
Также осенью 2020 года исходники Bot API выложили на GitHub. Теперь вы можете поднять собственный сервер Bot API. На GitHub перечислены следующие преимущества:
Скачивание файлов с сервера без ограничения (ограничение на отправку файлов пользователями в Телеграме — 2 ГБ),
Загрузка файлов на сервер до 2000 МБ,
Загрузка файлов на сервер с помощью локального пути и URI файла,
Использование HTTP URL для вебхука,
Использование любого локального IP-адреса для вебхука,
Использование любого порта для вебхука,
Возможность увеличить максимальное число соединений до 100000,
Получение локального пути файла вместо загрузки файла с сервера.
Юзерботы
В начале статьи я рассказывал о том, что такое Telegram API и Telegram Bot API.
Telegram API используется не только для ботов — тогда в чём проблема управлять аккаунтами пользователей, как ботами? Люди это делают. Кто-то автоматически ставит текущее время себе на аватарку, кто-то скриптом реагирует на свои сообщения как на команды, кто-то сохраняет сообщения из публичных групп и каналов. Всё это называют юзерботами.
Юзерботов следует использовать аккуратно: за большую подозрительную активность аккаунт могут ограничить или забанить.
Заключение
Я постарался собрать в одном месте и структурировать информацию о всех возможностях Телеграм-ботов. Большое спасибо vanutp, NToneE и Grinrill за помощь с фактами. Если мы что-то забыли — пишите, исправлю.
Я специально не разделял большую статью на несколько постов, чтобы можно было быстро найти нужную информацию. К тому же, в начале статьи есть её содержание. Так что можете сохранить её к себе и использовать как справочник 🙂
Вообще интерфейс бота (то есть интерфейс чата) имеет много ограничений. Но плохо ли это? Действительно удобнее использовать инструмент, когда это часть привычной среды. Я часто прямо в переписке нахожу нужную картинку или информацию с помощью инлайн-ботов. Как заядлый пользователь Телеграма, я люблю использовать ботов. И создаю ботов. И вы создавайте.