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:
| Krok | Popis | Příklad |
|---|---|---|
| 1 | Nainstalujte knihovnu aiogram pomocí příkazu pip: | pip install aiogram |
| 2 | Importujte potřebné moduly: | from aiogram import Bot, types |
| 3 | Vytvořte instanci třídy Bot tím, že do ní přenesete Token svého robota: | bot = Bot(token="YOUR_BOT_TOKEN") |
| 4 | Importujte třídy potřebné pro práci s inline tlačítky: | from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton |
| 5 | Vytvořte instanci třídy InlineKeyboardMarkup, která bude obsahovat všechna vaše inline tlačítka: | keyboard = InlineKeyboardMarkup() |
| 6 | Vytvoř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") |
| 7 | Nastavte obslužnou rutinu pro každé tlačítko pomocí metody .add() : | keyboard.add(button1) |
| 8 | Pomocí 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ě.