Keyboa: Tastaturen mit maximaler Geschwindigkeit für Bots im Telegramm

Bots sind eine der Funktionen von Telegram, die den Messenger so beliebt gemacht haben. Die integrierten Tastaturen bieten Entwicklern mehr Freiheit bei der Interaktion mit Benutzern.

Mit Keyboa können Sie integrierte Tastaturen beliebiger Komplexität für Bots erstellen, die auf pyTelegramBotAPI basieren.

In diesem Artikel werden die grundlegenden Funktionen des Moduls betrachtet - Erstellen von Tastaturen aus verschiedenen Datensätzen, automatische und manuelle Verteilung von Schaltflächen in Zeilen, Kombinieren mehrerer Tastaturen zu einer. Wir werden lernen, wie Sie komplexe, dynamische Rückrufe erstellen und darin Informationen über die Wahl des Benutzers speichern.

Der Artikel richtet sich an Personen, die die Grundlagen der Telegramm-Bot-API kennen und zumindest ein wenig mit dem pyTelegramBotAPI-Framework vertraut sind.

Das Modul benötigt> Python 3.5 und wird über pip installiert:

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.

, .




All Articles