Keyboa:Telegramのボット用の最高速度のキーボード

ボットは、メッセンジャーを非常に人気のあるものにしたテレグラムの機能の1つです。また、組み込みのキーボードにより、開発者はユーザーと対話するための自由度が高まります。

Keyboaは、 pyTelegramBotAPIに基づいて開発されたボット用の複雑な組み込みキーボードの作成に役立ちます

この記事では、モジュールの基本機能について検討します。さまざまなデータセットからキーボードを作成し、ボタンを行に自動および手動で配布し、複数のキーボードを1つに結合します。複雑で動的なコールバックを作成し、ユーザーの選択に関する情報を格納する方法を学習します。

この記事は、Telegram Bot APIの基本を理解していて、少なくともpyTelegramBotAPIフレームワークに少し精通している人を対象としています。

モジュールには> Python 3.5が必要で、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