Keyboa: keyboard dengan kecepatan maksimum untuk bot di Telegram

Bot adalah salah satu fitur Telegram yang membuat messenger sangat populer. Dan keyboard bawaannya memberi pengembang lebih banyak kebebasan untuk berinteraksi dengan pengguna.

Keyboa membantu Anda membuat keyboard built-in dengan kompleksitas apa pun untuk bot berdasarkan pyTelegramBotAPI .

Pada artikel ini, kami akan mempertimbangkan kemampuan dasar modul - membuat keyboard dari kumpulan data yang berbeda, distribusi tombol secara otomatis dan manual dalam baris, menggabungkan beberapa keyboard menjadi satu. Kita akan belajar cara membuat callback yang dinamis dan kompleks, menyimpan di dalamnya informasi tentang pilihan pengguna.

Artikel ini ditujukan bagi mereka yang mengetahui dasar-dasar Telegram Bot API dan setidaknya sedikit akrab dengan kerangka kerja pyTelegramBotAPI.

Modul ini membutuhkan> Python 3.5 dan diinstal melalui 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