Přejít na hlavní obsah

Vytvoření inline tlačítek aiogram průvodce pro vývojáře

  • Jonáš Ševčíková
  • Tipy

aiogram je výkonná Knihovna pro vytváření robotů telegramu v jazyce Python. Jednou z klíčových funkcí aiogram je možnost vytvářet a používat inline tlačítka, která vám umožní ovládat robota přímo v chatu, aniž byste se museli uchýlit k zadávání textových příkazů.

Chcete - li vytvořit tlačítko inline, musí vývojář určit text tlačítka a callback_data-jedinečnou hodnotu, kterou bude robot přenášet, když stisknete tlačítko. Callback_data může obsahovat jakékoli informace potřebné ke zpracování klepnutí.

Aiogram navíc poskytuje široké možnosti pro přizpůsobení vzhledu inline tlačítek. Vývojář může změnit barvu a velikost tlačítka a přidat ikony nebo textové tipy. Uživatelé díky tomu budou moci snadno a rychle komunikovat s robotem, získávat potřebné informace nebo provádět požadované akce jediným klepnutím.

Vytvoření inline tlačítek aiogram

K vytvoření inline tlačítek používá aiogram třídu InlineKeyboardButton . Tlačítka jsou vytvořena pomocí metody from_callback_data k určení akce, která bude provedena stisknutím tlačítka. Metoda from_callback_data přijímá název klobásy a data k přenosu do kolbeku. Například:

button = InlineKeyboardButton.from_callback_data('Нажми меня', 'callback_data')

Vytvořené tlačítko je poté přidáno do seznamu tlačítek klávesnice, která bude odeslána uživateli. Například:

keyboard = InlineKeyboardMarkup(row_width=1)keyboard.add(button)

V tomto příkladu je vytvořena klávesnice s jedním tlačítkem, které bude odesláno jako odpověď uživateli.

Klávesnice s více tlačítky lze vytvořit přidáním tlačítek do různých řádků a sloupců. Například:

button1 = InlineKeyboardButton.from_callback_data('Кнопка 1', 'callback_data_1')button2 = InlineKeyboardButton.from_callback_data('Кнопка 2', 'callback_data_2')button3 = InlineKeyboardButton.from_callback_data('Кнопка 3', 'callback_data_3')keyboard = InlineKeyboardMarkup(row_width=2)keyboard.add(button1, button2)keyboard.add(button3)

V tomto příkladu je vytvořena klávesnice se třemi tlačítky umístěnými ve dvou řádcích. První dvě tlačítka jsou umístěna na prvním řádku a třetí na druhém.

Když uživatel stiskne tlačítko, dojde k odeslání nastavení klobásy zadaných při vytváření tlačítka. Vaše aplikace může získat tyto možnosti a provést příslušné kroky v reakci. Tlačítka umožňují interakci s uživatelem a poskytují způsob, jak provádět akce uvnitř robota.

Vytvoření inline tlačítek aiogram může být velmi užitečné pro určité funkce vašeho robota a může pomoci učinit jej uživatelsky přívětivějším a intuitivnějším.

Průvodce pro vývojáře

Chcete-li vytvořit inline tlačítka v aiogram, musíte použít objekty třídy InlineKeyboardMarkup a InlineKeyboardButton. První třída je zodpovědná za vytvoření bloku tlačítek a druhá za vytvoření samotného tlačítka. Pro každé tlačítko je nutné zadat text a callback_data, který se po stisknutí tlačítka přenese.

from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup# Создание объектов кнопокbutton1 = InlineKeyboardButton("Кнопка 1", callback_data="button1")button2 = InlineKeyboardButton("Кнопка 2", callback_data="button2")button3 = InlineKeyboardButton("Кнопка 3", callback_data="button3")# Создание объекта клавиатуры и добавление кнопокkeyboard = InlineKeyboardMarkup().add(button1).add(button2).add(button3)

Po vytvoření objektu klávesnice s tlačítky, může být použit při odesílání zprávy uživateli:

await bot.send_message(chat_id, "Выберите одну из кнопок:", reply_markup=keyboard)

Když stisknete tlačítko, callback_data bude převedena zpět do vašeho robota a budete jej moci zpracovat v handleru pomocí CallbackQueryHandler:

@dp.callback_query_handler(lambda query: query.data == 'button1')async def button1_handler(query: types.CallbackQuery):await query.answer("Вы нажали на кнопку 1")

Vytváření inline tlačítek pomocí aiogram je tedy snadný a flexibilní způsob, jak zlepšit interakci vašeho telegramového robota s uživateli. Nezapomeňte na možnosti přizpůsobení tlačítek (odkazy, vestavěné dotazy atd.), které Telegram API poskytuje.

Základy vytváření inline tlačítek

Inline tlačítka v aiogram umožňují přidávat interaktivní prvky do zpráv. Mohou být použity k vytváření rozhraní v Poslech nebo k získání dalších informací od uživatele.

K vytvoření inline tlačítek používá aiogram třídu InlineKeyboardButton. Každé tlačítko by mělo mít text, který se zobrazí na tlačítku, stejně jako CallbackData, ID, které bude přenášeno spolu s stisknutím tlačítka.

Příklad vytvoření tlačítka:

button = InlineKeyboardButton('Нажми меня', callback_data='button_pressed')

Po vytvoření tlačítka by mělo být přidáno do InlineKeyboardMarkup, který bude přenášen spolu se zprávou.

Příklad přidání tlačítka do InlineKeyboardMarkup:

inline_keyboard = InlineKeyboardMarkup()inline_keyboard.add(button)

Po přidání tlačítka do InlineKeyboardMarkup jej lze přidat do zprávy pomocí metody reply_markup při odesílání zprávy.

Příklad přidání InlineKeyboardMarkup do zprávy:

await message.reply('Нажми кнопку', reply_markup=inline_keyboard)

Vytvoření inline tlačítek v aiogram tedy spočívá v vytvoření objektů InlineKeyboardButton, jejich přidání do InlineKeyboardMarkup a přidání posledně jmenovaného do zprávy pomocí metody reply_markup.

Kroky a příklady

Níže jsou uvedeny hlavní kroky a příklady, které vám pomohou vytvořit a nakonfigurovat tlačítka inline pomocí knihovny aiogram:

KrokPopisPříklad
1Nainstalujte knihovnu aiogram pomocí příkazu pip: pip install aiogram
2Importujte potřebné moduly: from aiogram import Bot, types
3Vytvořte instanci třídy Bot tím, že do ní přenesete Token svého robota: bot = Bot(token="YOUR_BOT_TOKEN")
4Importujte třídy potřebné pro práci s inline tlačítky: from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton
5Vytvořte instanci třídy InlineKeyboardMarkup, která bude obsahovat všechna vaše inline tlačítka: keyboard = InlineKeyboardMarkup()
6Vytvořte instanci třídy InlineKeyboardButton pro každé tlačítko a přidejte je do instance třídy InlineKeyboardMarkup: button1 = InlineKeyboardButton (text= "Tlačítko 1", callback_data="button1")
7Nastavte obslužnou rutinu pro každé tlačítko pomocí metody .add() : keyboard.add(button1)
8Pomocí metody odešlete zprávu se zapnutými tlačítky inline .send_message() : await bot.send_message (chat_id=chat_id, text= "příklad zprávy s inline tlačítky", reply_markup=keyboard)

Přizpůsobení inline tlačítek

Knihovna aiogram má možnost přizpůsobit vzhled inline tlačítek tak, aby odpovídaly designu vašeho telegramového robota. Tlačítka mohou mít různé velikosti, barvy a obsahovat ikony nebo text.

Pro nastavení inline tlačítek se používají možnosti text, callback_data a style. Parametr text nastaví zobrazený text na tlačítku a callback_data nastaví data, která budou botovi předána, když stisknete tlačítko.

Styl tlačítka lze změnit pomocí možnosti style. Může mít jednu z následujících hodnot:

  • default - tlačítko se standardním stylem;
  • primary - tlačítko se základní barvou;
  • positive - tlačítko s pozitivní barvou;
  • negative - tlačítko se zápornou barvou.

Tlačítka lze také nastavit ikony pomocí parametru text. Chcete-li například přidat ikonu zaškrtnutí k tlačítku, musíte zadat text tlačítka v následujícím formátu: ✅ Text tlačítka. Podobně, Chcete-li přidat ikonu vykřičníku, musíte zadat text tlačítka v následujícím formátu: ❗️ Tlačítko Text.

Chcete-li vytvořit krásná inline tlačítka, můžete kombinovat různé možnosti, abyste dosáhli požadovaného výsledku. Chcete-li například vytvořit velké zelené tlačítko s ikonou, můžete použít následující kód:

button = InlineKeyboardButton("🟢 Большая зеленая кнопка", callback_data="button_data",style="positive", text="🟢 Большая зеленая кнопка")

Tímto způsobem lze snadno nastavit a přizpůsobit inline tlačítka v aiogram tak, aby odpovídala vašim potřebám a designu robota.

Změna barvy, velikosti a stylu

Pro změnu stylu tlačítek v aiogramu lze použít atributy callback_data a style . Atribut callback_data umožňuje nastavit data, která budou přenesena do obslužné rutiny, když stisknete tlačítko. Pomocí atributu style můžete nastavit styl tlačítka, jako je barva pozadí, velikost písma, šířka tlačítka atd.

Chcete-li například změnit barvu pozadí tlačítka, můžete použít atribut style="bg_color: #ff0000" . A chcete-li nastavit velikost písma, můžete použít atribut style="font_size: 20px" .

button = InlineKeyboardButton("Кнопка", callback_data="data", style="bg_color: #ff0000; font_size: 20px;")

V tomto příkladu bude tlačítko nastaveno na červenou barvu pozadí a písmo bude mít velikost 20 pixelů.

Můžete také použít další atributy style, jako je text_color pro změnu barvy textu tlačítka, font_family pro změnu písma, width pro zadání šířky tlačítka atd.

button = InlineKeyboardButton("Кнопка", callback_data="data", style="text_color: #0000ff; font_family: Arial; width: 100px;")

V tomto příkladu bude mít text tlačítka modrou barvu, písmo bude Arial a šířka tlačítka bude rovna 100 pixelům.

Zpracování stisků inline tlačítek

Chcete-li zpracovat stisknutí inline tlačítka, musíte určit příslušnou obslužnou rutinu. K tomu můžete použít dekoratér @dp.callback_query_handler(). Jako možnost se přenáší textové ID tlačítka, na které uživatel klikl.

@dp.callback_query_handler(button_data='button1') async def handle_button1(callback_query: CallbackQuery): await callback_query.answer ('Stiskli jste tlačítko 1').

Uvnitř obslužné rutiny lze provádět různé akce, komunikovat s databází nebo odesílat zprávy uživateli. Můžete také změnit stav uživatele a zachovat kontext mezi stisknutími tlačítek.

Při manipulaci s kliknutím na tlačítko lze použít různé metody třídy CallbackQuery. Je například možné odeslat odpověď uživateli pomocí metody answer() nebo změnit text původní zprávy pomocí metody edit_message_text().

@dp.callback_query_handler(button_data='button2') async def handle_button2(callback_query: CallbackQuery): await callback_query.answer ('Stiskli jste Tlačítko 2') await callback_query.edit_message_text ('nový text zprávy').

Zpracování stisků inline tlačítek tak umožňuje botovi komunikovat s uživatelem a provádět různé akce v závislosti na zvoleném tlačítku.

Metody a zpracovatelé událostí

K vytvoření inline tlačítek používá aiogram metody a obslužné rutiny událostí. Metody vám umožňují vytvářet tlačítka s různými atributy, jako je text, URL, callback data. Obslužné rutiny událostí umožňují určit, který kód bude spuštěn, když stisknete tlačítko.

Metody:

InlineKeyboardButton: tato metoda se používá k vytvoření tlačítka s textem a (volitelně) adresou URL. Níže je uveden příklad vytvoření tlačítka s textem "stiskni mě" a odkazem URL "https://example.com":

button = types.InlineKeyboardButton(text="Нажми меня", url="https://example.com")

InlineKeyboardMarkup: tato metoda se používá k vytvoření značení, do kterého lze přidat tlačítka. Níže je uveden příklad vytváření značení jedním tlačítkem:

markup = types.InlineKeyboardMarkup()markup.add(button)

CallbackButton: tato metoda se používá k vytvoření tlačítka s textem a daty callback. Callback-data jsou řádkem, který se přenese na obslužnou rutinu události, když stisknete tlačítko. Níže je uveden příklad vytvoření tlačítka s textem "stiskni mě" a daty "button_pressed":

button = types.InlineKeyboardButton(text="Нажми меня", callback_data="button_pressed")

Zpracovatelé událostí:

CallbackQueryHandler: tato obslužná rutina událostí je vyvolána stisknutím tlačítka s daty callback. V něm lze určit kód, který se spustí po stisknutí tlačítka. Níže je uveden příklad vytvoření obslužného programu událostí pro data callback "button_pressed":

@dp.callback_query_handler(lambda callback_query: callback_query.data == 'button_pressed')async def button_pressed_handler(callback_query: types.CallbackQuery):await bot.send_message(chat_id=callback_query.from_user.id, text="Кнопка нажата!")

Pomocí technik a obslužných rutin událostí v aiogramu je tedy možné vytvářet a zpracovávat inline tlačítka ve svém telegramovém botě.