Телеграмм как сделать меню
Как сделать кнопку в мессенджере Телеграм
Telegram — известный мессенджер с широким функционалом. Многие им пользуются для общения с друзьями, обмена фото-, видеоматериалами, постами и различным контентом. Площадка также позволяет создавать каналы и приглашать туда пользователей. Так образуется сообщество по интересам. Некоторые пользуются этим для продвижения товаров или услуг. Вероятно, вы замечали, что в некоторых каналах к посту прикреплены кнопки со ссылками или смайлики, на которые можно нажать и выразить свое мнение. В стандартном инструментарии такой функции нет, и многим интересно, как создать подобные клавиши. А делаются они при помощи специального бота, о чем и пойдет речь в статье.
Создание кнопки
Чтобы добавить кнопку в Телеграм на канале, необходимо подключить двух Telegram Bot (ботов). Один используется для создания постов, добавления канала и отслеживания статистики. Он называется @ControllerBot. Второй бот, @BotFather — чисто для постинга. С их же помощью создаются кнопки-реакции, и занимает это от силы 5 минут.
Добавление бота на канал
Вы узнали, как создать бота для канала, остается его правильно настроить.
Настройка бота
Тут тоже ничего сложного:
На этом настройка завершена. Переходим к самому интересному — как сделать кнопку к посту в Телеграмме. Для этого научимся пользоваться ботом, который служит инструментом.
Инструкция по использованию
Опять же, все просто:
Не стоит забывать и о других функциях, например, «Таймер удаления». Этот инструмент позволяет создать временный пост, который будет удален по истечении конкретного времени.
Чтобы выложить подготовленный пост на канал, жмите «Опубликовать». Если желаете настроить время публикации, кликните «Отложить».
Делаем кнопку «Поделиться»
Конечно, она есть по умолчанию (в виде стрелочки), но такая незаметная, что многие пользователи вообще не обращают на нее внимания. Есть вариант создать отдельную кнопку к посту.
Для начала создайте ссылку:
Заключение
Как видно, кнопки-реакции и гиперссылки в Телеграмме создаются не так сложно, как это кажется на первый взгляд. Просто не все знают, что для этого используются боты. А работать с ними просто, тем более есть встроенные подсказки. Все действия по созданию кнопок можно делать с мобильного клиента и с компьютера.
Видео по теме
Inline меню для Telegram бота
IoBroker. Inline меню для Telegram бота
IoBroker. Inline меню для Telegram бота
В этой статье мы с вами по шагам будем создавать меню для telegram бота Умного Дома. Рекомендую изучить минимальные азы по языку программирования JavaSсript, это облегчит понимание того, что тут вообще происходит.
Приготовления
При увеличении количества написанных скриптов, будет нарастать бардак в дереве, поэтому рекомендую сразу приучать себя разбивать скрипты по группам.
Добавим новую группу в папку common и назовем ее например Telegram. В этой группе в дальнейшем можно будет создавать все скрипты, которые будут относиться к работе с драйвером Telegram.
Вот теперь можно добавить наш будущий скрипт для меню. Для этого надо выделить созданную группу Telegram и нажать кнопку Новый скрипт
Поменяем имя на Телеграм бот и сохраним изменения.
Все готово к созданию меню для Умного дома.
Создаем Меню
Предварительно необходимо на листике или в уме подготовить набросок древовидной структуры будущего меню
В этой статье попробуем реализовать подобную структуру меню.
Не обязательно придерживаться разбиения по комнатам, рекомендую в основные ветки выносить управление тем, что чаще всего используется, т.к. допустим для запуска Сцены 3 в зале надо сделать целых 4 нажатия!
Ежедневно запускать сценарий по такому длинному пути быстро надоест 🙂
Набросаем наше дерево в скрипте
В первой строке в квадратных скобках перечисляются основные кнопки (ветки) меню, плюс дополнительно добавляется кнопка Закрыть. Она позволит закрывать меню в чате бота, чтобы у нас не получилось куча сообщений от бота с открытыми менюшками. Ну и в конце текст в кавычках ‘Меню’ тоже обязателен. В этом месте будет указываться название вышестоящей ветки меню, т.к. первая строка уже является верхушкой дерева, то текст в этом месте дублирует начало.
Отступы для каждой строки сделаны лишь для удобства восприятия структуры меню и никакой функциональности не несут.
Внимательный читатель, надеюсь, обратил внимание что названия веток меню в наброске и в коде отличаются 🙂 Почему так сделано, будет описано дальше.
Дальнейший код будет описан только в объеме, необходимом для оформления своего меню, плюс краткое пояснение функций.
Добавляем в скрипт весь остальной код.
Уже на этом этапе можно проверить работу меню. Для этого сохраняем скрипт, запускаем и в Telegramотправляем боту слово Меню(внимание, слово должно быть с большой буквы) или Кнопки.
Управление
Переходим к следующему шагу. Добавим в скрипт команды управления оборудованием (свет, бойлер, сценарии, насосы, краны, телевизор, кондиционер и т.д.). Для этого создадим виртуальный выключатель (код добавим в самое начало скрипта)
Дальше вставим в скрипт команды управления светом на кухне на примере виртуального выключателя
должно получиться так
Ранее в статье был момент, когда названия веток (кнопок) немного менялись и стали отличаться от наброска меню. Весь смысл в том, что названия всех кнопок в меню бота должны бытьуникальны, это связано с особенностями API Telegram. Подробнее можно почитать тут. Иначе при нажатии на одинаковые названия кнопок в меню, всегда будут выполняться команды только для какой-то одной кнопки, даже если вы на нее не нажимали.
Разберем подробнее, что же мы сделали:
switch— сравнивает выражение со случаями, перечисленными внутри неё, а затем выполняет соответствующие инструкции. Подробнее тут.
command— будет содержать уникальное имя нажатой кнопки
Для кнопки Выключить все тоже самое, только записываемое значение false.
Сохраняем и пробуем! (результат можно увидеть на вкладке Объекты. Будет меняться значение виртуального выключателя).
Для элементарного меню и простых команд этого уже достаточно. А для тех, кто хочет большего, продолжим.
Красивости
Начнем добавлять различные красивости: отображение текущего состояния, обновление состояний при нажатии кнопки, красивый вывод состояний, эмодзи и т.д.
За вывод подобной информации отвечает функция funcTopText
В функцию автоматически через переменную command передается нажатая кнопка дерева (например Меню, Спальня, Кухня. Свет и т.д.), самый нижний уровень дереве меню передать нельзя (например Кино, Бойлер, Бра и т.д.). И уже в самой функции с помощью уже знакомой конструкции switch (command) можно добавить вывод необходимой информации о состоянии оборудования или просто какой-то текст для выбранной ветки меню. В примере выше указана ветка Меню, в ней выводим температуры (пока как простой текст) в комнатах Зал и Спальня.
Как сделать форматирование текста жирным или курсивом, можно почитать тут.
Выведем температуру в зале из реального объекта. Надо выбрать из ваших существующих объектов, иначе будет ошибка.
Из объекта mysensors.0.70.3_TEMP.V_TEMP считываем значение температуры и подставляем его в строку (подробнее о команде getState тут).
n – символ новой строки, является эквивалентом символа перевода строки.
Добавим в меню Кухняотображение состояния виртуального выключателя
Состояние false, как-то скучно… да объясняй потом жене, ребенку, друзьям что за false такой…
Используем функцию stateSelection(state), которая будет вместо false/true возвращать нормальный текст Вкл/Выкл. и дополнительно выводить время подачи команды (или любой другой текст на ваше усмотрение)
Так гораздо лучше и понятней смотрится!
В функцию stateSelection(state) при необходимости можно добавить другие типы состояний, если они будут выводиться в заголовок меню.
Может еще улучшим? Сделаем, чтобы при нажатии кнопки Кухня. Свет сразу в заголовке менялось состояние, для этого воспользуемся функцией
Функция подписывается на переданный объект obj и в течение заданного количества миллисекунд timeout ожидает изменения объекта obj. Если событие произошло и была задана дополнительно (но не обязательно) проверка флага ACK, проверяется на условие ack=true. Если совпало или не была задана проверка флага ACK – отобразится текст Выполнено. Если не совпало – Не выполнено. После этого функция отписывается от объекта, чтобы в будущем снова не реагировать на него.
Внесем изменения в скрипт
javascript.0.Test.Switch.command – объект для проверки выполнения команды. Т.к. у нас нет отдельного объекта для обратной связи, используем для этой цели объект-команду.
2000– время ожидания в миллисекундах
topTextGlobal – эту переменную ставим всегда!
Для кнопки Включитьдобавили проверку флага ACK, для кнопки Выключить нет. Сохраняем и пробуем что получилось.
Уберем проверку флага ACK для кнопки Включить и снова пробуем.
Не забываем смотреть на всплывающие сообщения!
Эмодзи
Пришла очередь добавить символы Эмодзи. Для этого заходим в библиотеку один или два. Выбираем подходящие символы для меню. Возьмем для кнопки Назад следующий символ
Выделяем, копируем и вставим в наш скрипт.
Внимание!Менять надо во всех местах скрипта, где использовано словоНазад.
Замену лучше делать через Поисккомбинацией клавиш ctrl+H
Сохраняем и любуемся результатом
Итоговый скрипт меню
Лайфхак
Через @botFather можно добавить команду вызова меню
Тогда для вызова меню будет достаточно ввести символ / и в выпадающем меню выбрать /buttons. В результате появится кнопочка вызова меню рядом с меню смайликов. Роман Б. (Haba) Россия, ст-ца. Динская@Habaaaa Отблагодарить автора
Модуль Telegram: создание чат-бота и канала, минимальные настройки компонентов
Модуль Telegram позволяет вам управлять телеграм-ботом. Сейчас он добавляет блок бизнес-процесса Send Message, добавляющий функцию отправки сообщений в телеграм-каналы.
Для работы модуля вам не нужно специально программировать бота. Достаточно просто создать его, добавить в телеграм-канал и правильно настроить компоненты Appmaster Studio.
Используем, простите за тавтологию, бота для управления ботами — BotFather от Telegram.
Введите в поле поиска юзернейм «botfather» — скорее всего, он будет первым в списке (1). Обратите внимание, что у официального бота есть голубой подтверждающий значок с галочкой возле имени (2). Ниже в поиске выйдет множество других, с такими же названиями и похожими юзернеймами — просто игнорируйте их, они вам не нужны.
Кликните на бота, чтобы открыть чат с ним (1), и нажмите Start (2).
После этого бот запустится и выведет в сообщении список команд. Чтобы создать нового бота, последовательно введите:
Бот создан. BotFather сообщит вам об этом, в сообщении укажет юзернейм (4) и токен авторизации (5).
Токен нужен для подключения к различным сервисам и программам — именно по нему Telegram будет идентифицировать вашего бота и определять, какие у него есть разрешения.
Не сообщайте токен авторизации бота посторонним и не выкладывайте в публичный доступ. Если токен был рассекречен, вы можете отозвать его (команда /revoke) и сгенерировать новый (команда /token).
Для интеграции с Appmaster.io вам осталось только добавить бота в телеграм-канал. Но вы можете настроить его, чтобы добавить дополнительные функции. Больше информации о том, что такое бот, что он умеет делать и как его настроить — на официальном сайте Telegram. Там есть как общая информация, так и инструкции для разработчиков.
Чтобы создать канал, зайдите в меню вашей учетной записи и нажмите «New Channel».
Введите название канала, если хотите — добавьте описание (1). Нажмите Create (2).
Выберите, будет ваш канал публичным — public или закрытым — private (1). Введите уникальную ссылку, по которой его можно будет найти (2). Сохраните изменения (3).
Сразу после создания канала Telegram предложит добавить в него новых пользователей. Начните вводить юзернейм вашего бота — он отобразится в поиске (1). Кликните по нему (2).
Ваш бот отобразится в списке пользователей на добавление (1). Нажмите Add, чтобы закончить настройку (2).
Всплывет сообщение, что боты могут быть добавлены в каналы только как администраторы. Согласитесь сделать бота администратором, нажав Make Admin.
Теперь выберите разрешения на управление каналом, которые хотите дать вашему боту. Выберите на свое усмотрение, но обязательно разрешите боту отправлять сообщения, включив селектор Post messages (1). Нажмите Save (2).
Вы можете добавить бота и после создания канала. Чтобы добавить бота в уже созданный канал, откройте настройки (1) и нажмите Add Users (2). Дальше — те же действия, что и в предыдущем пункте.
Чтобы добавить бота в ваше приложение и отправлять сообщения в телеграм-канал, вам нужны токен авторизации бота и адрес канала.
Узнать токен бота можно у BotFather: введите команду /mybots, чтобы получить список всех ваших ботов(1) и выберите нужного. Появится меню, выберите в нем пункт API token (2). BotFather отправит вам сообщение с токеном.
Адрес канала есть в общей информации о нем — Channel Info. Чтобы открыть окно с информацией, зайдите в настройки или просто кликните по названию канала.
Отлично, теперь вы готовы подключать бота в ваше приложение. Переходите в Appmaster Studio.
Как быстро и легко создать и настроить Telegram бота
Увидев эту статью решил более подробно рассказать об одном из способов создания бота в мессенджере Telegram и поделиться своим личным опытом создания, оформления и настройки.
Чтобы не терзать вас в неведении о моих успехах за 3 месяца работы, вот:
Для начало обязательно должен предупредить об ограниченном функционале бота, которого вам должно хватить, но возможно дальнейшее расширение посредством программирования, к которому я не прибегнул.
Процесс создания бота занимает не более одной минуты.
Бот создан, но его необходимо оформить и настроить.
Тут тоже все просто. Для этого необходимо 4 команды:
Все команды отправляем @BotFather
Если все же возникли трудности то вотвидеоурок
Этот раздел мог быть в разы больше, но я ограничусь основами, таких как создание команд, автопостинг и формы.
Сначала распишу зачем нужны команды. Они являются основой всех ботов. Вот так они будут выглядит:
Еще их можно вызвать через “слэш”.
Подключается командой “/autoposting” в вашем боте. Она позволяет автоматически копировать посты с VK, YouTube, Twitter и RSS ленты.
P.S. Для продвижения бота использовал стикер пак
Простой Telegram-бот на Python за 30 минут
На Хабре, да и не только, про ботов рассказано уже так много, что даже слишком. Но заинтересовавшись пару недель назад данной темой, найти нормальный материал у меня так и не вышло: все статьи были либо для совсем чайников и ограничивались отправкой сообщения в ответ на сообщение пользователя, либо были неактуальны. Это и подтолкнуло меня на написание статьи, которая бы объяснила такому же новичку, как я, как написать и запустить более-менее осмысленного бота (с возможностью расширения функциональности).
Часть 1: Регистрация бота
Самая простая и описанная часть. Очень коротко: нужно найти бота @BotFather, написать ему /start, или /newbot, заполнить поля, которые он спросит (название бота и его короткое имя), и получить сообщение с токеном бота и ссылкой на документацию. Токен нужно сохранить, желательно надёжно, так как это единственный ключ для авторизации бота и взаимодействия с ним.
Часть 2: Подготовка к написанию кода
Как уже было сказано в заголовке, писать бота мы будем на Python’е. В данной статье будет описана работа с библиотекой PyTelegramBotAPI (Telebot). Если у вас не установлен Python, то сперва нужно сделать это: в терминале Linux нужно ввести
После, в терминале Linux, или командной строке Windows вводим
Теперь все готово для написания кода.
Часть 3: Получаем сообщения и говорим «Привет»
Небольшое отступление. Телеграмм умеет сообщать боту о действиях пользователя двумя способами: через ответ на запрос сервера (Long Poll), и через Webhook, когда сервер Телеграмма сам присылает сообщение о том, что кто-то написал боту. Второй способ явно выглядит лучше, но требует выделенного IP-адреса, и установленного SSL на сервере. В этой статье я хочу рассказать о написании бота, а не настройке сервера, поэтому пользоваться мы будем Long Poll’ом.
Открывайте ваш любимый текстовый редактор, и давайте писать код бота!
Первое, что нужно сделать это импортировать нашу библиотеку и подключить токен бота:
Теперь объявим метод для получения текстовых сообщений:
В этом участке кода мы объявили слушателя для текстовых сообщений и метод их обработки. Поле content_types может принимать разные значения, и не только одно, например
Будет реагировать на текстовые сообщения, документы и аудио. Более подробно можно почитать в официальной документации
Теперь добавим в наш метод немного функционала: если пользователь напишет нам «Привет», то скажем ему «Привет, чем я могу помочь?», а если нам напишут команду «/help», то скажем пользователю написать «Привет»:
Данный участок кода не требует комментариев, как мне кажется. Теперь нужно добавить в наш код только одну строчку (вне всех методов).
Теперь наш бот будет постоянно спрашивать у сервера Телеграмма «Мне кто-нибудь написал?», и если мы напишем нашему боту, то Телеграмм передаст ему наше сообщение. Сохраняем весь файл, и пишем в консоли
Где bot.py – имя нашего файла.
Теперь можно написать боту и посмотреть на результат:
Часть 4: Кнопки и ветки сообщений
Отправлять сообщения это несомненно весело, но ещё веселее вести с пользователем диалог: задавать ему вопросы и получать на них ответы. Допустим, теперь наш бот будет спрашивать у пользователя по очереди его имя, фамилию и возраст. Для этого мы будем использовать метод register_next_step_handler бота:
И так, данные пользователя мы записали. В этом примере показан очень упрощённый пример, по хорошему, хранить промежуточные данные и состояния пользователя нужно в БД, но мы сегодня работаем с ботом, а не с базами данных. Последний штрих – запросим у пользователей подтверждение того, что все введено верно, да не просто так, а с кнопками! Для этого немного отредактируем код метода get_age
И теперь наш бот отправляет клавиатуру, но если на нее нажать, то ничего не произойдёт. Потому что мы не написали метод-обработчик. Давайте напишем:
Остаётся только дописать в начало файла одну строку:
Вот и всё, сохраняем и запускаем нашего бота:









