Keyboa: claviers à vitesse maximale pour les robots dans Telegram

Les robots sont l'une des fonctionnalités de Telegram qui ont rendu le messager si populaire. Et ses claviers intégrés donnent aux développeurs plus de liberté pour interagir avec les utilisateurs.

Keyboa aide à créer des claviers intégrés de toute complexité pour les bots développés à partir de pyTelegramBotAPI .

Dans cet article, nous examinerons les fonctionnalités de base du module - création de claviers à partir de différents ensembles de données, distribution automatique et manuelle des boutons en lignes, combinant plusieurs claviers en un seul. Nous apprendrons à créer des rappels complexes et dynamiques, en y stockant des informations sur le choix de l'utilisateur.

L'article est destiné à ceux qui connaissent les bases de l' API Telegram Bot et sont au moins un peu familiers avec le framework pyTelegramBotAPI.

Le module nécessite> Python 3.5 et est installé via 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.

, .




All Articles