Вхід Реєстрація
Реклама
Ваше рекламне місце
Забронюйте цей слот без конкуренції на обраний період.
Купити рекламу →
Логотип телеграм спільноти - about aiogram
Додано 14 лип 2024

about aiogram

@about_aiogram
Кількість підписників: 193
Фото: 2
Посилання: 27
Опис:
✏️ Про розробку телеграм ботів з використанням aiogram та інших бібліотек і технологій 🔍 Навігатор (inline mode) - @aiotipbot 🙃 Канал ведуть @Shaonis + @wakaree #aiogram #bots #python
Джерело

about aiogram | Inline Mode #цікаве👉 Інлайн режим - це інтегрована пошукова система дл...

Логотип телеграм спільноти - about aiogram about aiogram @about_aiogram
592 Охват/переглядів 2025-01-03 10:47 Повідомлення №50
🔍 Inline Mode #цікаве👉 Інлайн режим - це інтегрована пошукова система для ботів, яка дозволяє зручно скористатися ботом з будь-якого чату знаючи тільки його юзернейм🤨 І навіщо мені цим користуватись?Інлайн режим дозволяє робити багато речей, що будуть корисні в тій чи іншій ситуації, наприклад можна:• Формувати повідомлення з кнопками• Зробити каталог предметів• Ділитися чимось від імені юзера• Реалізувати пошуковий механізм👀 Як цим користуватись?📌 Для початку необхідно увімкнути цей режим для бота. Тому помісти апдейт типу inline_query в дозволені, а далі в @BotFather > /mybots > твій бот > Bot Settings > Inline Mode і натисни Turn On⬇️ Розберемо всі нові типи і методи, які дає нам інлайн режим• InlineQuery - апдейт, що створюється при використанні пошуку• answerInlineQuery - метод, яким бот показує результати пошуку (ним відповідають на InlineQuery)• InlineQueryResultsButton - об'єкт-кнопка, що знаходиться над результатами• InlineQueryResult - загальний тип конкретного об'єкту в результаті• InputMessageContent - загальний тип конкретного об'єкту для перевантаження надсилання• ChosenInlineResult - апдейт, який доступний з увімкненим inline feedback в @BotFather для аналітики💭 Це класичний inline mode. Також є додаткові штуки для їх використання в контексті WebApp, але зараз нам вони непотрібні📌 Цікаві факти• InlineQuery немає даних про тип чату• answerInlineQuery може повертати результати з різними типами об'єктів (одночасно фото, аудіо..)• InlineQueryResult для деяких підтипів має Cached форми, тобто результатом може бути фото, що вже збережене на серверах телеграм• Якщо до повідомлення, яке надісло в інлайн режимі прикріплені кнопки, то при їх використанні бот отримає CallbackQuery без об'єкту Message🔍 Концепція пошукуУ нас є бот з інлайн режимом. У будь-якому чаті (де не заборонене медіа), як тільки ми вводимо в поле тексту його нікнейм, наприклад@bot hello то бот отримує апдейт InlineQuery з даними, в цьому випадку в запиті буде hello. Можна шукати і без слів, тоді запит буде порожнім рядком. Тепер ми змінимо запит на@bot hello world бот отримає новий апдейт з актуальним запитом hello world і поверне список результатів📌 Якщо писати швидко, телеграм не буде слати боту кожну змінену літеру в запиті, але пишучи з невеликими паузами, ми побачимо як боту поступово приходять оновлені запити Про кешуванняУявімо, що ти власник бота @gif. Він показує юзеру багато різних гіфок, але їх пошук займає деякий час. Під впливом великої кількості юзерів, бот може працювати не ефективно, бо на той же самий запит йому доведеться повертати одні й ті ж гіфки, хоча він вже відповідав на нього раніше. Для подібних ситуацій в методі answerInlineQuery є два параметра:• cache_time: int - час в секундах, скільки тримати результати запиту в кеші на серверах телеграм (за замовчуванням 5 хв)• is_personal: bool - актуальний, якщо cache_time не дорівнює 0. Корисний, якщо ми хочемо кешувати результати індивідуально для юзера, а не для всіх одразу📌 У кожного результату має бути унікальний id. Якщо запит закешовано, то бот навіть не отримає апдейт InlineQuery. Раджу кешувати запит "", якщо результати не порожні🐾 Пагінація результатівМетод answerInlineQuery показує максимум 50 об'єктів. Натомість, є можливість зробити підвантаження додаткових результатів як тільки юзер долистає до кінця поточних. Для цього є параметр next_offset: str. Оскільки він має тип рядок, ми можемо передавати самі собі що завгодноНехай перший запит від юзера порожній, тож ми повертаємо всі результати що в нас є. Але їх більше ніж 50, тому ми ставимо next_offset="2". Якщо юзер долистає до кінця списку, боту прийде новий апдейт InlineQuery, де параметр offset="2". Таким чином ми знаємо, що треба підвантажити додаткові результати🪄 Перевантаження надсиланняЗа замовчуванням, при натисканні на результат він надсилається як тип, що його представляє. Наприклад InlineQueryResultPhoto природно надішле фото. Але це можна змінити параметром input_message_content📚 Читати про це в документації🍐 Книга Груші, про Inline Mode