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

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

Да. То, что обычно на курсах продают за 50 тысяч рублей, мы вам сейчас расскажем за 15 минут бесплатно.

Как всё будет работать

В этом проекте три звена: наш компьютер с Python, сервер Телеграма и Телеграм-клиент.

На компьютере работает интерпретатор Python, а внутри интерпретатора крутится наша программа на Python. Она отвечает за весь контент: в неё заложены все шаблоны текста, вся логика, всё поведение.

Внутри программы на Python работает библиотека, которая отвечает за общение с сервером Телеграма. В библиотеку мы вшили секретный ключ, чтобы сервер Телеграма понимал, что наша программа связана с определённым ботом.

Когда клиент с Телеграмом запрашивает у бота гороскоп, запрос приходит на сервер, а сервер отправляет его на наш компьютер. Запрос обрабатывается программой на Python, ответ идёт на сервер Телеграма, сервер отдаёт ответ клиенту. Изи:

INLINE кнопки в Telegram

Телеграм-бот на Python

Обратите внимание, что работать наш бот будет только тогда, когда включён компьютер и на нём запущена программа на Python. Если компьютер выключится, пропадёт интернет или вы отключите интерпретатор, то бот работать перестанет: запросы будут приходить, но никто на них не ответит. В одной из следующих частей мы сделаем так, чтобы это всё работало на удалённом сервере и было всегда доступно.

Что будем делать

Если записать пошагово наш план, то он будет выглядеть так:

  1. Регистрируем бота в Телеграме.
  2. Устанавливаем Python-библиотеку для работы с Телеграмом.
  3. Добавляем библиотеку в программу с гороскопом и учим программу реагировать на сообщения в чате.
  4. Пишем там же код, который покажет кнопки для выбора знаков зодиака.
  5. Сделаем так, чтобы по кнопкам появлялся гороскоп для этого знака.

Теперь по очереди разберём каждый пункт.

1. Регистрация нового бота

Нажимаем Start и пишем команду /newbot. Нас по очереди спросят про название бота и его никнейм (мы придумали только с третьей попытки, потому что остальные были заняты):

2. Установка библиотеки

Есть два основных способа работать с телеграмом в Python: через библиотеку telebot и с помощью Webhook. Мы будем использовать библиотеку — так проще и быстрее.

Чтобы её установить, запускаем командную строку от имени администратора (если у вас Windows) и пишем команду pip install pytelegrambotapi

Еще по теме:  В Телеграмме нет видео при видеозвонке

Подключаем библиотеку и получаем сообщения

Чтобы программа на Python умела управлять Телеграм-ботами, нужно в самое начало кода добавить строки:

Разработка Telegram Bot на Python. (2.1 Inline Кнопки)

import telebot;
bot = telebot.TeleBot(‘токен’);
Программа-гороскоп

# Подключаем модуль случайных чисел import random # Заготовка для первого предложения first = [«Сегодня — идеальный день для новых начинаний.»,»Оптимальный день для того, чтобы решиться на смелый поступок!»,»Будьте осторожны, сегодня звёзды могут повлиять на ваше финансовое состояние.»,»Лучшее время для того, чтобы начать новые отношения или разобраться со старыми.»,»Плодотворный день для того, чтобы разобраться с накопившимися делами.»] second = [«Но помните, что даже в этом случае нужно не забывать про»,»Если поедете за город, заранее подумайте про»,»Те, кто сегодня нацелен выполнить множество дел, должны помнить про»,»Если у вас упадок сил, обратите внимание на»,»Помните, что мысли материальны, а значит вам в течение дня нужно постоянно думать про»] second_add = [«отношения с друзьями и близкими.»,»работу и деловые вопросы, которые могут так некстати помешать планам.»,»себя и своё здоровье, иначе к вечеру возможен полный раздрай.»,»бытовые вопросы — особенно те, которые вы не доделали вчера.»,»отдых, чтобы не превратить себя в загнанную лошадь в конце месяца.»] third = [«Злые языки могут говорить вам обратное, но сегодня их слушать не нужно.»,»Знайте, что успех благоволит только настойчивым, поэтому посвятите этот день воспитанию духа.»,»Даже если вы не сможете уменьшить влияние ретроградного Меркурия, то хотя бы доведите дела до конца.»,»Не нужно бояться одиноких встреч — сегодня то самое время, когда они значат многое.»,»Если встретите незнакомца на пути — проявите участие, и тогда эта встреча посулит вам приятные хлопоты.»] # выводим знаки зодиака print(«1 — Овен») print(«2 — Телец») print(«3 — Близнецы») print(«4 — Рак») print(«5 — Лев») print(«6 — Дева») print(«7 — Весы») print(«8 — Скорпион») print(«9 — Стрелец») print(«10 — Козерог») print(«11 — Водолей») print(«12 — Рыбы») # Спрашиваем у пользователя про его знак zodiac = int(input(«Введите число с номером знака зодиака: «.format(blue=»33[96m», endcolor=»33[0m»))) # Если число введено верно — выдаём гороскоп if 0 < zodiac < 13: print(random.choice(first), random.choice(second), random.choice(second_add), random.choice(third)) else: print(«Вы ошиблись с числом, запустите программу ещё раз»)

Теперь научим бота реагировать на слово «Привет». Для этого добавим после строчек с импортом новый метод и сразу пропишем в нём реакцию на нужное слово. Если не знаете, что такое метод и зачем он нужен, — читайте статью про ООП.

И последнее, что нам осталось сделать до запуска, — добавить после метода такую строчку:

Она скажет программе, чтобы она непрерывно спрашивала у бота, не пришли ли ему какие-то новые сообщения. Запускаем программу и проверяем, как работает наш бот.

Добавляем кнопки

Чтобы пользователям нашего бота было удобно, покажем им сразу все знаки зодиака в виде кнопок. А потом сделаем так, что когда на них нажимаешь — появляется гороскоп для этого знака на сегодня.

Еще по теме:  Удалятся ли чаты если удалить Телеграмм

Добавляем код с кнопками в раздел, который реагирует на «Привет»:

# Готовим кнопки keyboard = types.InlineKeyboardMarkup() # По очереди готовим текст и обработчик для каждого знака зодиака key_oven = types.InlineKeyboardButton(text=’Овен’, callback_data=’zodiac’) # И добавляем кнопку на экран keyboard.add(key_oven) key_telec = types.InlineKeyboardButton(text=’Телец’, callback_data=’zodiac’) keyboard.add(key_telec) key_bliznecy = types.InlineKeyboardButton(text=’Близнецы’, callback_data=’zodiac’) keyboard.add(key_bliznecy) key_rak = types.InlineKeyboardButton(text=’Рак’, callback_data=’zodiac’) keyboard.add(key_rak) key_lev = types.InlineKeyboardButton(text=’Лев’, callback_data=’zodiac’) keyboard.add(key_lev) key_deva = types.InlineKeyboardButton(text=’Дева’, callback_data=’zodiac’) keyboard.add(key_deva) key_vesy = types.InlineKeyboardButton(text=’Весы’, callback_data=’zodiac’) keyboard.add(key_vesy) key_scorpion = types.InlineKeyboardButton(text=’Скорпион’, callback_data=’zodiac’) keyboard.add(key_scorpion) key_strelec = types.InlineKeyboardButton(text=’Стрелец’, callback_data=’zodiac’) keyboard.add(key_strelec) key_kozerog = types.InlineKeyboardButton(text=’Козерог’, callback_data=’zodiac’) keyboard.add(key_kozerog) key_vodoley = types.InlineKeyboardButton(text=’Водолей’, callback_data=’zodiac’) keyboard.add(key_vodoley) key_ryby = types.InlineKeyboardButton(text=’Рыбы’, callback_data=’zodiac’) keyboard.add(key_ryby) # Показываем все кнопки сразу и пишем сообщение о выборе bot.send_message(message.from_user.id, text=’Выбери свой знак зодиака’, reply_markup=keyboard)

Добавляем обработчик кнопок

Скорее всего, вы заметили, что в каждой кнопке у нас написано callback_data=’zodiac’ . Это значит, что при нажатии на любую кнопку у нас будет вызываться один и тот же метод, который отвечает за гороскоп. Если вы хотите сделать честный гороскоп, придётся в каждой кнопке прописать своё название обработчика, а потом задать его поведение, тоже для каждой кнопки.

Давайте сделаем обработчик кнопок, который будет реагировать на ‘zodiac’ и выдавать случайный текст, как в исходной программе. Для этого добавим новый метод в программу:

Убираем лишнее

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

Как видно, большую часть кода занимает тупое перечисление всех знаков зодиака. Мы могли бы автоматизировать это через циклы, но на улице такая хорошая погода, что мы это отложим.

Что дальше

Впереди — безграничные возможности:

  • можно сделать индивидуальный гороскоп для каждого знака;
  • научить бота новым командам;
  • присылать свежий гороскоп каждое утро;
  • наладить непрерывную работу на веб-сервере.

Напишите в комментариях, что бы вы хотели от такого бота? Что должен уметь идеальный бот с гороскопом?

Источник: thecode.media

КАК СДЕЛАТЬ INLINE КНОПКУ TELEGRAM PYTHON

Telegram Messenger — это одно из наиболее популярных мессенджеров в мире, который позволяет общаться множеством способов, в том числе и через inline кнопки. Inline кнопки могут использоваться для облегчения взаимодействия пользователей с ботами.

Для создания inline кнопки в Telegram с использованием Python, необходимо установить библиотеку python-telegram-bot, которая предоставляет удобный интерфейс для взаимодействия с Telegram Bot API. Далее необходимо создать объект InlineKeyboardButton, указать текст кнопки и обработчик, который будет вызываться при нажатии на кнопку.

После создания объекта InlineKeyboardButton, его необходимо поместить в массив кнопок кнопок. После этого этот массив кнопок необходимо поместить в объект InlineKeyboardMarkup. Далее необходимо отправить объект InlineKeyboardMarkup вместе с сообщением через метод bot.send_message().

Еще по теме:  Как на Айфоне в Телеграмме сменить микрофон

Ниже приведен код для создания простой inline кнопки с текстом «Нажми меня» и обработчиком callback_data, который будет выводить в консоль сообщение «Кнопка нажата».

from telegram import InlineKeyboardButton, InlineKeyboardMarkupdef button(update, context): query = update.callback_query query.answer() query.edit_message_text(text=»Кнопка нажата»)def start_function(update, context): keyboard = [[InlineKeyboardButton(«Нажми меня», callback_data=’button1′)]] reply_markup = InlineKeyboardMarkup(keyboard) update.message.reply_text(‘Пример инлайн кнопки:’, reply_markup=reply_markup)from telegram.ext import Updater, CommandHandler, CallbackQueryHandlerupdater = Updater(‘TOKEN’, use_context=True)dp = updater.dispatcherdp.add_handler(CommandHandler(‘start’, start_function))dp.add_handler(CallbackQueryHandler(button, pattern=’button1′))updater.start_polling()updater.idle()

HOW TO CREATE TELEGRAM INLINE BUTTON BOT WITHOUT PROGRAM — TELEGRAM BOT TUTORIAL — TG Gamings

Как работать с Телеграм Inline кнопками на Python

Создание телеграм-ботов на python (telebot) #13 / InlineKeyboardMarkup, Callback-кнопки

Telegram Bot PYTHON [ 2 ] — Команды и кнопки (Inline, Reply)

Ботостроение Telegram. Инлайн-кнопки — вы формировали их неправильно. Фабрика коллбэков Aiogram3.

Разработка Telegram Bot на Python. (7. Многоуровневое меню для магазина)

Источник: tgme.pro

Динамическое меню. Изменяемые кнопки. В Telegram боте

Очень частый вопрос «А как сделать, чтобы кнопки в боте были чем-то вроде переключателей, типо Вкл/Выкл?» или «А как сделать множественный выбор в кнопках?».

И теперь перед тобой инструкция к применению.

  • Как обычно пример масштабируемый под любое количество кнопок
  • Реализован вывод результата в зависимости от выбранных вариантов

О типах данных. В salebot, так же как и в программировании существует несколько типов данных: строковые и числовые.
Подробно о типах данных можно почитать здесь
Я всегда рекомендую активно использовать в переменных и call_back числовые данных, так как они поддаются математическим операциям и имеют четкий, предсказуемый порядок и иерархию.

В это уроке я так же активно использую числа.

Стартовый блок

  • Создадим блок «Начало диалога» с обычным условием /start
  • В настройках проекта зададим переменную bot_token и укажем в ней api token вашего Telegram бота
  • С первого же блока мы будем использовать Telegram Bot Api, так что указываем в нём следующие настройки. Ниже я дам пояснения по используемым переменным
  • — Тип запроса — POST-data
  • — URL запроса — https://api.telegram.org/bot#/sendMessage
  • — Сохраняемые значения — result|message_id -> message_id
  • — JSON параметры:
  • В калькуляторе укажем следующие переменные, так мы задаём стартовые значения наших «переключателей»:
  • checkpoint_1 = «❌»
  • checkpoint_2 = «❌»
  • checkpoint_3 = «❌»

Обрати внимание на написание текста кнопок и callback_data!

В тексте каждой кнопки указана переменная вида #1>.
Эти переменные являются изменяемыми значениями. Весь текст кнопки может быть прописан в каждой из этих переменных.
Цифра в каждой из этих переменных соответствует номеру кнопки. У тебя наверняка текст в кнопке будет другой, но в переменной обязательно прописывай ее порядковый номер.
В callbak_data каждой кнопки также указан порядковый номер кнопки и он совпадает с соответствующим номером в переменной #.

Блок «Изменение кнопок»

<

Рейтинг
( Пока оценок нет )
Загрузка ...