aiogram - je to výkonný framework pro vytváření robotů na telegramu pomocí Pythonu. Poskytuje různé funkce a funkce, které vývojářům umožňují vytvářet roboty snadno a efektivně s uživateli.
Klíčovou funkcí aiogram je možnost vytvořit inline tlačítka-interaktivní prvky, které lze použít k přenosu různých informací, provádění příkazů a interakci s robotem. Inline tlačítka umožňují uživatelům provádět volby a získávat požadované informace, aniž by museli zadávat příkazy ručně.
K vytvoření inline tlačítek používá aiogram třídu InlineKeyboardButton. Tato třída vám umožňuje vytvářet tlačítka s textem, která mohou být uživateli odeslána ve zprávách nebo s ním komunikovat prostřednictvím příkazů. Pro manipulaci s tlačítky se používá třída CallbackQueryHandler. Umožňuje definovat funkci, která bude vyvolána stisknutím tlačítka a zpracovávat přijatá data.
Co jsou inline tlačítka
Na rozdíl od běžných tlačítek se inline tlačítka zobrazují jako malá čtvercová tlačítka přímo v textu zprávy, nikoli ve spodní části klávesnice. Mohou obsahovat textovou značku, která se zobrazí na tlačítku, a také volitelně mohou mít callback_data - jedinečnou hodnotu, kterou lze použít ke zpracování kliknutí na tlačítko a provádění určitých akcí.
Inline tlačítka umožňují uživateli snadno komunikovat s robotem, provádět příkazy nebo odesílat určitá data potřebná k fungování funkcí robota. Jsou to pohodlný a intuitivní způsob ovládání robota, zejména v kontextu interaktivních průzkumů, výběrových seznamů a dalších scénářů, které vyžadují navigaci mezi možnostmi.
Inline tlačítka v aiogram lze vytvořit pomocí třídy InlineKeyboardButton, která umožňuje nastavit text značky a callback_data pro tlačítko. Mohou být přidány do InlineKeyboardMarkup, který může být zase připojen ke zprávě pro zobrazení inline tlačítek.
Příprava prostředí pro práci s aiogram
Než začnete používat aiogram k vytváření inline tlačítek v telegramovém botě, budete muset udělat řadu přípravných kroků. V této části se podíváme na potřebné kroky k vytvoření prostředí, které vám umožní efektivně pracovat s knihovnou aiogram.
Před zahájením instalace aiogram budete muset nainstalovat a nakonfigurovat Python na vašem počítači. Doporučujeme použít Python verze 3.7 nebo vyšší. Po instalaci Pythonu musíte nainstalovat aiogram pomocí nástroje PIP package management. Do příkazového řádku zadejte následující příkaz:
pip install aiogram
Po instalaci aiogramu budete muset vytvořit telegramového robota a získat přístupový token. Chcete-li to provést, musíte přejít do aplikace Telegram a najít robota @"BotFather". Postupujte podle pokynů pro vytvoření nového robota a získání přístupového tokenu.
Jakmile obdržíte přístupový token, musíte vytvořit soubor config.py, který bude obsahovat váš token a další konfigurační data. Otevřete soubor a přidejte následující kód:
TOKEN = 'Ваш_токен_доступа'
Nyní můžete tento soubor importovat do hlavního souboru Pythonu a použít svůj přístupový token v kódu aiogram. Například:
from config import TOKEN
Také, můžete přidat další nastavení do souboru config.py pokud je to nutné pro váš projekt. Můžete například přidat nastavení pro práci s databází nebo jiné možnosti konfigurace vašeho robota.
Nyní, když jste vytvořili prostředí pro práci s aiogram a přidali do kódu přístupový token, nezbývá vám než začít programovat svého telegramového robota pomocí inline tlačítek aiogram! Můžete se naučit dokumentaci aiogram a začít psát svůj první kód s inline tlačítky pro váš telegramový robot.
Instalace a konfigurace aiogramu může nějakou dobu trvat a může vyžadovat určité technické znalosti, ale s tímto článkem byste měli být připraveni začít vyvíjet svého telegramového robota pomocí inline tlačítek aiogram.
Vytvoření inline tlačítek v aiogram
K vytvoření inline tlačítek v aiogram byste měli použít třídu InlineKeyboardButton z modulu aiogram.types, stejně jako třída InlineKeyboardMarkup pro seskupení tlačítek v jedné zprávě. Každé tlačítko inline musí mít text a jedinečné ID zvané callback_data.
Podívejme se na příklad vytváření inline tlačítek v aiogram:
import aiogramfrom aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton# создание кнопки с текстом "Нажми меня" и идентификатором "button1"button1 = InlineKeyboardButton("Нажми меня", callback_data="button1")# создание кнопки с текстом "Другая кнопка" и идентификатором "button2"button2 = InlineKeyboardButton("Другая кнопка", callback_data="button2")# создание инлайн-клавиатуры и добавление кнопок в нееkeyboard = InlineKeyboardMarkup()keyboard.add(button1, button2)# отправка сообщения с инлайн-клавиатуройawait bot.send_message(chat_id, "Выберите кнопку:", reply_markup=keyboard)
V tomto příkladu nejprve vytvoříme dvě inline tlačítka s textem a identifikátory "button1" a "button2". Poté vytvoříme inline klávesnici, přidáme do ní tlačítka a odešleme zprávu s touto klávesnicí. Když uživatel stiskne tlačítko, bot obdrží identifikátor tlačítka a může zpracovat příslušnou akci.
Použití inline tlačítek v aiogram dělá roboty interaktivnějšími a usnadňuje interakci s uživateli. Znát základy vytváření inline tlačítek v aiogram, můžete vytvářet složité a užitečné funkce pro své telegramové roboty.
Přidání obslužných rutin pro inline tlačítka
Při vytváření inline tlačítek pomocí knihovny aiogram je také nutné pro tato tlačítka Přidat obslužné rutiny, aby po kliknutí na ně byla provedena určitá funkce.
K instalaci obslužných rutin pro inline tlačítka používá aiogram dekoratér @dp.callback_query_handler() . V jeho parametrech je uveden text tlačítka nebo jeho identifikátor a volitelně další podmínky.
Níže je uveden příklad kódu, který přidává obslužná rutina pro kliknutí na tlačítko inline s textem "klikni na mě":
@dp.callback_query_handler(text='Нажми меня')async def button_click_handler(callback_query: types.CallbackQuery):# Ваш код для обработки нажатия на кнопкуawait callback_query.answer('Вы нажали на кнопку')
V tomto příkladu se po kliknutí na tlačítko "stiskni mě" zobrazí funkce button_click_handler , která může obsahovat jakoukoli požadovanou funkci, jako je odeslání zprávy uživateli nebo provádění určitých operací.
Upozorňujeme, že po provedení úkonů zpracování je vhodné odeslat odpověď uživateli pomocí metody callback_query.answer (), aby uživatel získal potvrzení o stisknutí tlačítka.
Odeslání inline tlačítek ve zprávě
Chcete-li vytvořit inline tlačítka pomocí knihovny aiogram, musíte postupovat v několika krocích:
1. Vytvořit objekt InlineKeyboardMarkup:
from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButtonmarkup = InlineKeyboardMarkup()
2. Vytvořit inline tlačítka pomocí třídy InlineKeyboardButton:
button1 = InlineKeyboardButton("Кнопка 1", callback_data="button1")button2 = InlineKeyboardButton("Кнопка 2", callback_data="button2")button3 = InlineKeyboardButton("Кнопка 3", callback_data="button3")
3. Přidat tlačítka do objektu InlineKeyboardMarkup:
markup.add(button1, button2, button3)
4. Odeslat zprávu s inline tlačítky:
await bot.send_message(chat_id, "Пример сообщения с inline кнопками", reply_markup=markup)
V tomto příkladu jsme vytvořili objekt InlineKeyboardMarkup a přidali tři tlačítka: tlačítko 1, Tlačítko 2 a tlačítko 3. Poté jsme s těmito tlačítky odeslali zprávu pomocí metody send_message. Když kliknete na tlačítko, zavolá se funkce callback s zadanými daty callback_data.
Použití inline tlačítek ve zprávách umožňuje uživatelům vytvářet interaktivnější a uživatelsky přívětivější rozhraní, díky čemuž je jejich zážitek z používání robota příjemnější a uspokojivější.
Příklady použití inline tlačítek v aiogram
1. Odeslání zprávy s inline tlačítky
Chcete-li odeslat zprávu s inline tlačítky do aiogram, musíte vytvořit instanci třídy InlineKeyboardMarkup a přidat tlačítka pomocí metody add(). Každé tlačítko je instancí třídy InlineKeyboardButton a přijímá text tlačítka a volitelně Kolbek data.
from aiogram import Bot, typesfrom aiogram.dispatcher import Dispatcherfrom aiogram.utils import executorbot = Bot(token='ВАШ_ТОКЕН')dp = Dispatcher(bot)@dp.message_handler(commands=['start'])async def process_start_command(message: types.Message):keyboard = types.InlineKeyboardMarkup()button1 = types.InlineKeyboardButton(text='Кнопка 1', callback_data='button1')button2 = types.InlineKeyboardButton(text='Кнопка 2', callback_data='button2')keyboard.add(button1, button2)await bot.send_message(chat_id=message.chat.id, text='Выберите кнопку:', reply_markup=keyboard)if __name__ == '__main__':executor.start_polling(dp)
Při odesílání zprávy s inline tlačítky uživatel uvidí tlačítka pod textem zprávy a bude si moci vybrat jedno z nich. Po výběru tlačítka bude povolán zpracovatel událostí s příslušnými údaji.
2. Zpracování kliknutí na inline tlačítka
Pro zpracování kliknutí na inline tlačítka je nutné vytvořit obslužnou rutinu událostí s typem CallbackQuery pomocí dekorátoru @dp.callback_query_handler(). V těle psovoda lze získat data související s tlačítkem pomocí vlastnosti data objektu CallbackQuery.
@dp.callback_query_handler(lambda query: query.data == 'button1')async def process_button1(callback_query: types.CallbackQuery):await bot.send_message(chat_id=callback_query.from_user.id, text='Вы нажали на кнопку 1')@dp.callback_query_handler(lambda query: query.data == 'button2')async def process_button2(callback_query: types.CallbackQuery):await bot.send_message(chat_id=callback_query.from_user.id, text='Вы нажали на кнопку 2')
V tomto příkladu se po stisknutí tlačítka s kolbackovými daty " button1 "spustí obslužná rutina process_button1 a po stisknutí tlačítka s kolbkovými daty" button2 " se spustí obslužná rutina process_button2.
Použití inline tlačítek tak umožňuje vytvářet interaktivní roboty s možností vlastní interakce.