Телеграм бот кнопки. Как сделать кнопку в телеграм

Телеграм бот кнопки. Как сделать кнопку в телеграм

Сегодня я расскажу как в Телеграм сделать кнопки. До этого мы нажимали на ссылки, которые передвигались вверх и для того чтобы их снова нажать, надо было или передвигать экран или писать команду вручную.
Используя кнопки мы делаем наш бот намного симпатичнее и удобнее. Теперь нам не надо лазить по экрану и нажимать на непонятные ссылки, так как на кнопках мы можем писать по русски.
Вот посмотрите прошлый пример и то что должно получиться сегодня.
А теперь давайте посмотрим как это работает, а потом как всегда разберём код. Скетч, как всегда можно найти на моём сайте. Ссылка будет в описании.

Я подключил одно реле, а к нему подключил лампу. Теперь нажимая на кнопку Вкл у нас включается лампа, а нажав на ВЫКЛ выключается. Согласитесь, что это намного удобнее, и кнопки всегда на экране. Здесь ещё выведены кнопки таймера, но об этом чуть позже.

Теперь давайте рассмотрим как работает скетч.
Сначала о его возможностях.
В скетче я управляю реле, включает или выключает нагрузку. В качестве нагрузки я подключил лампу ан 12 вольт, но можно подключить что угодно.
Как и в прошлом примере я запрограммировал 6 действий за которые отвечают эти кнопки.
Первая кнопка сделана для перехода на вэб страницу. При нажатии на эту кнопку открывается браузер и вы переходите по ссылке. В коде указана ссылка на мой канал.

Эти две кнопки отвечают за включение и выключение реле. Переключение происходит достаточно быстро, практически без задержек.

Про оставшиеся кнопки таймера я расскажу позже, когда буду объяснять код скетча. Там есть некоторые трудности. Это таймер на включения на 1, 2 и до минут, но вы сами можете устанавливать любое время.

Теперь рассмотрим код скетча. Я взял свой пример о подключении реле. Про то как подключать реле или как устанавливать библиотеки и что такое токен, я рассказывать не буду. Если не понимаете о чём я, то посмотрите вот это видео.
Единственное отличие в коде – это то что я подключил реле к выводу D5 платы ESP.

В SETUP тоже нет ничего интересного. Стандартный набор подключения к WIFI сети. Ну кроме вот этой строчки.
Я правда не совсем понял, за что она отвечает. Это мой перевод комментариев. Если хотите, можете сами потестить разные значения. По умолчанию здесь стояла цифра 60. Мне показалось, что значение 20 мне больше подходят. Но особой разницы я не видел.

Весь основной код вывода приветствия и кнопок расположен вот в этом кусочке кода.
Это отвечает за включение и выключения реле от кнопок. Это стандартный код как в Ардуино. Если приходит значение ON то включить реле, а если OFF то выключить.

Это условие для работы с таймером. Если значение равно значению нажатой кнопки, то включить реле. Если реле было включено, то оно будет отключено.
Это перевод текстового значения в числовое. А это перевод в минуты.

Эти строчки кода отвечают за определение вашего имени, и если оно будет не определено, то будет написано Гость. Имя вставляется в текст приветствия.
Ну вот мы и подошли к кнопкам. За вывод кнопок отвечает вот этот код. Это json. Параметры команды такие. Описание и действие. В первой части – это текст который будет выведен на кнопке, а второй это действие.
Здесь я вывел на экран 6 кнопок.
Первая кнопка отвечает за переход по адресу на вэб страницу.
В первой части написано Перейти на мой канал, а во второй части URL канала.

В двух последующих сказано, что надо при нажатии включать или выключать реле, а соответственно нагрузку подключенную к нему.
При нажатии включить реле сработает, а при выключить отключится.
В первой части – это текст на кнопках, а во второй команда на включение или отключение.

Теперь про таймер.
Здесь выведено 3 кнопки, но вы можете сделать сколько угодно.
Я сделал таймер на включение через 1, 2, и 10 минут. Дальше будет показано как это работает при нажатии первой и второй кнопки. 10 минут я ждать не стал.
Давайте рассмотрим код.
Первую. Часть мы рассматривать не будем, да и со второй тоже всё понятно. Самое интересное вот в этом коде.

При получении текста из кнопки таймера – этот текст обрабатывается функцией replace.
Будет заменено слово TIME на пустоту. Если проще сказать, то просто удалится слово TIME а останется только цифра. Это 1, 2, или 10. Но так как мы передаём текст, нам его надо перевести в числовой формат. Вот это и сделаем.
Если реле уже было включено, то выключаем его.
Напомню, что это всё сказано для реле которые управляются низким сигналом. Если у вас управление происходит высоким уровнем, то везде HIGH надо заменить на LOW.
Здесь из полученной цифры создаём минуты. Это получается умножением на 1000 и умножением на 60. Затем прибавляем время из функции millis  и записываем в переменную.
Ну вот вроде со всем разобрались. Теперь давайте смотреть что получилось. По ходу я буду иногда вставлять свои комментарии.
Открываем бот и видим приветственную надпись со ссылкой вывести кнопки на экран. Нажимаем и видим кнопки.
Нажимаем на первую кнопку и переходим на мой канал.

Здесь на экране выведены записи с трёх источников. С телефона, с компьютера и с камеры. Так, что если где-то что-то не состыковывается, то извиняйте. А календарь с часами я вывел для того чтобы отсчитывать время таймера.

Просто нажимаем включить и выключить и видим что лампочка загорается и гаснет. Отклик происходит почти мгновенно.

А теперь посмотрим как работает таймер на включение лампы. Я нажал на 1 минуту. Здесь показано время запуска таймера, а затем будет показано время срабатывания.

Мы видим, что оно не равно 1 минуте. Время всегда немного больше. Я не знаю почему так, но думаю, что это зависит от  времени прохождения, обработки и ещё чего-нибудь. Я особо не разбирался, так как это видео в основном было про кнопки, а это просто дополнительный бонус. Если в функции немного изменить значения и подогнать под результат. Это конечно костыль, но всё же.
А вот при двух минутах, результат ещё хуже. Так, что есть над чем поработать.
Напомню, что при простом включении и выключении срабатывает хорошо.

Если вам интересна эта тема, то я могу снять ещё много видео про Телеграм и не только.
Объём вашего интереса, я буду оценивать по количеству лайков и комментариев. Чем их будет больше, тем быстрее выйдет новое видео.
Ну, а если вам нравятся мои уроки, то ставьте лайк и делитесь моими видео с другими. Это очень поможет мне в продвижении канала, а меня будет стимулировать выпускать уроки чаще и интереснее.
Вы видите ссылки на видео, которые, я думаю будут вам интересны. Перейдя на любое из этих видео вы узнаете что-то новое, а ещё поможете мне.
Спасибо.
А пока на этом всё. До встречи в новых видео.  И ещё раз спасибо за то, что досмотрели до конца.
Пока!!!

Скетчи