Keyboa:Telegram中机器人的最高速度键盘

机器人程序是Telegram令信使如此受欢迎的功能之一。其内置的键盘为开发人员提供了更多与用户互动的自由。

Keyboa可帮助您基于pyTelegramBotAPI为机器人创建任何复杂度的内置键盘

在本文中,我们将考虑模块的基本功能-根据不同的数据集创建键盘,按行自动和手动分配按钮,将多个键盘组合为一个。我们将学习如何创建复杂的动态回调,并在其中存储有关用户选择的信息。

本文面向那些了解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