Робимо робота в telegram клавіатури і можливості inline-режиму

Доброго часу дня і ночі, мій дорогий читачу. Мабуть, мені б коштувало привітати тебе з наступаючим новим роком, але немає, прости, я не особливо схильний до всякого роду поздоровленням. Не будемо відходити від теми - півроку назад я написав статтю про те, як створити свого найпершого робота в Telegram на Python3 і запустити його.

З тих пір пройшло досить багато часу, кілька разів оновлювався Telegram Bot API. і сьогодні я вирішив продовжити свою розповідь про створення свого робота.

вступ

Для початку трохи інформації для загального розвитку - про те, що таке клавіатура в боті і для чого вона потрібна.

Під час нашої першої запускаємо будь-якого бота, ми використовуємо кнопку Start (Пуск), потім можемо продовжити спілкування з ботом за допомогою команд або будь-яких інших текстових повідомлень.

Робимо робота в telegram клавіатури і можливості inline-режиму

Що відбувається, коли ми натискаємо кнопки під полем для введення повідомлення? Нічого складного - лише відправляється той текст, який ми бачимо на кнопці. Тобто натискання на Налаштування призведе до відправки повідомлення з текстом Налаштування від твого імені до боту і тільки.

Далі робот просто обробляє отриманий ним текст. Ніякої магії. Знаю з власного досвіду, що все дуже люблять код (брешу, не всі) - тому зараз ми приступимо до його написання.

Вважаю, прочитавши мою попередню запис. ти зможеш встановити і налаштувати Python3, а також створити найпростішого бота. відповідального на команду / start.

Для початку нам доведеться зареєструвати нашого нового робота у @BotFather і отримати TOKEN для з'єднання з ним. Свого робота я назву Dr. Watson. а логін збережу в таємниці 😌

Створимо простого бота, який при запуску буде вітатися з користувачем. Коду, як на картинці нижче, буде цілком достатньо:

Робимо робота в telegram клавіатури і можливості inline-режиму

Тепер визначимося з тим, що буде робити наш робот.

Зробимо так: відразу після запуску бот повинен відобразити користувачеві клавіатуру з двома кнопками - Шерлок Холмс і Доктор Ватсон.

Відправимося в функцію start нашого простого бота і змінимо її наступним чином:

Крім усього іншого потрібно додати from telebot import types в початок нашого файлу з роботом.

Тепер поясню, що взагалі тут відбувається 😱

  1. За допомогою types.ReplyKeyboardMarkup () ми створюємо об'єкт нашої майбутньої клавіатури, в дужках прописуються потрібні параметри. resize_keyboard = True дозволяє клавіатурі розтягуватися на необхідну висоту замість того, щоб займати весь простір.
  2. За допомогою .add () ми додаємо кнопки в нашу клавіатуру. types.KeyboardButton () являє собою об'єкт самої кнопки, а в дужках вказується текст на ній. У коді вище я наповнюю об'єкт нашої клавіатури об'єктами кнопок, заповнюючи їх зі списку [ 'Шерлок Холмс', 'Доктор Ватсон'] (гадаю, мене вкрай складно зрозуміти зараз, це нормально, раджу прочитати статтю про списки і for).
  3. Останнє, що потрібно зробити - прив'язати нашу клавіатуру до потрібного повідомлення, робиться це за допомогою параметра reply_markup в будь-якому методі send_.

Можна зберегти код і запустити робота.

Робимо робота в telegram клавіатури і можливості inline-режиму

Як видно, під полем для тексту з'явилися дві заповітні кнопки. Що далі? Тепер потрібно навчити нашого робота обробляти повідомлення, що відправляються йому після натискання на кнопки.

Робимо робота в telegram клавіатури і можливості inline-режиму

Розглянемо мій код вище. У функції start ми використовуємо метод register_next_step_handler для того, щоб наступне повідомлення від нашого користувача відразу потрапило б в обробник name (який вказаний другим параметром; перший - об'єкт відправленого нами повідомлення).

У функції name ми опрацюємо відповідь користувача - відправимо повідомлення про Шерлока Холмса і Доктора Ватсона.

Робимо робота в telegram клавіатури і можливості inline-режиму

На зображенні вище я додав повідомлення, які будуть відправлятися користувачеві після натискання на будь-яку з кнопок.

Збережемо файл з нашим роботом і запустимо його, не забувши заново відправити команду / start (старі кнопки вже не спрацюють).

Робимо робота в telegram клавіатури і можливості inline-режиму

Ось так бот відповість нам на натискання на кнопку. Але зауважу, що повторне натискання ні до чого не приведе. оскільки тільки після команди / start бот буде перевіряти текст повідомлення на наявність Шерлока Холмса і Доктора Ватсона.

Підіб'ємо підсумок: клавіатури дозволяють відправляти цілі повідомлення по одному лише натискання користувача. У кнопки можна записувати будь-які текстові фрази, навіть містять в собі Emoji. 😘

Після відправки бот повинен обробити отриману фразу, причому неважливо, як саме.

Зазначу, що у користувача завжди є залишається можливість відправити повідомлення за допомогою звичайної клавіатури.

Inline-режим

Є два варіанти використання Inline: перший - в самому боті. в повідомленнях, що відправляються ботом; другий - поза бота. де-небудь в довільному чаті, почавши набирати логін бота в поле для текстового повідомлення.

Сьогодні я хочу розповісти про перший варіант Inline-режиму. За допомогою нього можна прикріплювати Inline-кнопки до повідомлень, які відправляються ботом.

Тобто під кожним повідомленням можуть бути різні кнопки, що виконують найрізноманітнішу роботу. Наприклад, в популярних каналах нерідко використовують лайки, реалізовані як раз за допомогою Inline-кнопок.

Inline-кнопки прикріплюються до повідомлень точно так же, як це роблять клавіатури. Відрізняються лише назви і параметри методів.

Внесемо деякі зміни в наш код. Тепер нашою метою буде відредагувати повідомлення після натискання на кнопку.

Так-так, Inline-кнопки здатні редагувати вже відправлені нашим роботом повідомлення. 📝

Робимо робота в telegram клавіатури і можливості inline-режиму

Один по одному розповідаю, що тут діється. 🛠

Збережемо наш код і запустимо робота. Відправимо команду / start і спробуємо натиснути на будь-яку з кнопок.

Як видно, текст повідомлення від бота змінився після натискання на кнопку.

Робимо робота в telegram клавіатури і можливості inline-режиму

Насправді Inline-кнопки здатні майже на все - за допомогою них можна навіть відправляти звичайні повідомлення. Всі функції і можливості описані в Telegram Bot API. Мабуть, це все, що я хотів розповісти тобі про перші кроки в Inline.

Робот для читання книги 📚

За командою / start цей робот відправляє першу сторінку - на кожній сторінці по 700 символів з книги.

Робимо робота в telegram клавіатури і можливості inline-режиму

За допомогою стрілок ⬅️ і ➡️ можна гортати сторінки - текст повідомлення буде змінюватися вирізками по 700 символів.

Робимо робота в telegram клавіатури і можливості inline-режиму

Нижче я залишаю тобі код цього бота - щоб запустити, досить покласти поруч з ботом будь-яку книгу в форматі .txt

На сьогодні все. Щасливого роботостроения 😘🤖

Робимо робота в telegram клавіатури і можливості inline-режиму

A boy from the Wonderland.

Схожі статті