Los bots son una de las características de Telegram que han hecho tan popular al mensajero. Y sus teclados incorporados brindan a los desarrolladores más libertad para interactuar con los usuarios.
Keyboa ayuda a crear teclados integrados de cualquier complejidad para bots desarrollados basados en pyTelegramBotAPI .
En este artículo, consideraremos las capacidades básicas del módulo: creación de teclados a partir de diferentes conjuntos de datos, distribución automática y manual de botones en filas, combinando varios teclados en uno. Aprenderemos a crear devoluciones de llamada dinámicas y complejas, almacenando información sobre la elección del usuario en ellas.
El artículo está dirigido a aquellos que conocen los conceptos básicos de la API de Telegram Bot y están al menos un poco familiarizados con el marco pyTelegramBotAPI.
El módulo requiere> Python 3.5 y se instala a través de pip:
pip install keyboa
Telegram inline_keyboard
, (Array of Array of InlineKeyboardButton). () - , ( ) - . , - .
, :
import os
from telebot import TeleBot
from keyboa import keyboa_maker
token = os.environ["TELEGRAM_BOT_TOKEN"]
uid = os.environ["TELEGRAM_USER_ID"]
bot = TeleBot(token=token)
, .
fruits = [
"banana", "coconut", "orange",
"peach", "apricot", "apple",
"pineapple", "avocado", "melon"
]
, :
kb_fruits = keyboa_maker(items=fruits, copy_text_to_callback=True)
, - items
. allback_data
( ) , , . callback_data
, copy_text_to_callback
.
:
bot.send_message(
chat_id=uid, reply_markup=kb_fruits,
text="Please select one of the fruit:")
.
items_in_row
, . . Telegram.
:
kb_fruits = keyboa_maker(items=fruits, copy_text_to_callback=True, items_in_row=3)
bot.send_message(
chat_id=uid, reply_markup=kb_fruits,
text="Please select one of the fruit:")
, , . , auto_alignment
. True
, Keyboa , , , [2, 3, 7]
.
reverse_alignment_range
, Keyboa , auto_alignment
.
Keyboa . . : - , - .
fruitscomplex = [
"banana",
["coconut", "orange"],
["peach", "apricot", "apple"],
"pineapple",
["avocado", "melon"],
]
kb_fruits_complex = keyboa_maker(items=fruits_complex, copy_text_to_callback=True)
bot.send_message(
chat_id=uid, reply_markup=kb_fruits_complex,
text="Please select one of the fruit:")
, .
callback
, callback_data - , Telegram . , .
callback_data , , . callback_data .
fruits_with_ids = [
{"banana": "101"}, {"coconut": "102"}, {"orange": "103"},
{"peach": "104"}, {"apricot": "105"}, {"apple": "106"},
{"pineapple": "107"}, {"avocado": "108"}, {"melon": "109"}, ]
# or [
# ("banana", "101"), ("coconut", "102"), ("orange", "103"),
# ("peach", "104"), ("apricot", "105"), ("apple", "106"),
# ("pineapple", "107"), ("avocado", "108"), ("melon", "109"), ]
, callback_data. . , callback_data, copy_text_to_callback
.
kb_fruits = keyboa_maker(items=fruits_with_ids, items_in_row=3)
bot.send_message(
chat_id=uid, reply_markup=kb_fruits,
text="Please select one of the fruit:")
, , , id , callback_data.
{"text": "banana", "callback_data": "101"}, ...
, id. , ? , ?
Keyboa . front_marker
callback_data , back_marker
, , . :
kb_fruits = keyboa_maker(items=fruits_with_ids, front_marker="&fruit_id=")
callback_data front_marker + value, : '&fruit_id=101'
, '&fruit_id=102'
. . , .
, :
# , , "&fruit_id=102"
selected_fruit_id = call.data
available_weight = [1, 2, 5, 10, 100, ]
kb_available_weight = keyboa_maker(
items=available_weight, copy_text_to_callback=True,
front_marker="&weight=", back_marker=selected_fruit_id)
callback_data :
'&weight=1&fruit_id=102'
, '&weight=2&fruit_id=102'
, '&weight=5&fruit_id=102'
…
front_marker
back_marker
, , callback_data . , Telegram callback_data 64 , , - .
, , . . keyboa_combiner()
.
- keyboards
, . , :
from keyboa import keyboa_maker, keyboa_combiner
controls = [["⏹️", "⏪️", "⏏️", "⏩️", "▶️"], ]
tracks = list(range(1, 13))
keyboard_controls = keyboa_maker(items=controls, copy_text_to_callback=True)
keyboard_tracks = keyboa_maker(items=tracks, items_in_row=4, copy_text_to_callback=True)
keyboard = keyboa_combiner(keyboards=(keyboard_tracks, keyboard_controls))
bot.send_message(
chat_id=uid, reply_markup=keyboard,
text="Please select the track number:")
- , . Telegram.
Telegram Keyboa. Github.
, .