Доброго часу дня і ночі, мій дорогий читачу. Мабуть, мені б коштувало привітати тебе з наступаючим новим роком, але немає, прости, я не особливо схильний до всякого роду поздоровленням. Не будемо відходити від теми - півроку назад я написав статтю про те, як створити свого найпершого робота в Telegram на Python3 і запустити його.
З тих пір пройшло досить багато часу, кілька разів оновлювався Telegram Bot API. і сьогодні я вирішив продовжити свою розповідь про створення свого робота.
вступ
Для початку трохи інформації для загального розвитку - про те, що таке клавіатура в боті і для чого вона потрібна.
Під час нашої першої запускаємо будь-якого бота, ми використовуємо кнопку Start (Пуск), потім можемо продовжити спілкування з ботом за допомогою команд або будь-яких інших текстових повідомлень.
![Робимо робота в telegram клавіатури і можливості inline-режиму (робота) Робимо робота в telegram клавіатури і можливості inline-режиму](https://images-on-off.com/images/157/delaemrobotavtelegramklaviaturiivozmozhn-14728e68.png)
Що відбувається, коли ми натискаємо кнопки під полем для введення повідомлення? Нічого складного - лише відправляється той текст, який ми бачимо на кнопці. Тобто натискання на Налаштування призведе до відправки повідомлення з текстом Налаштування від твого імені до боту і тільки.
Далі робот просто обробляє отриманий ним текст. Ніякої магії. Знаю з власного досвіду, що все дуже люблять код (брешу, не всі) - тому зараз ми приступимо до його написання.
Вважаю, прочитавши мою попередню запис. ти зможеш встановити і налаштувати Python3, а також створити найпростішого бота. відповідального на команду / start.
Для початку нам доведеться зареєструвати нашого нового робота у @BotFather і отримати TOKEN для з'єднання з ним. Свого робота я назву Dr. Watson. а логін збережу в таємниці 😌
Створимо простого бота, який при запуску буде вітатися з користувачем. Коду, як на картинці нижче, буде цілком достатньо:
![Робимо робота в telegram клавіатури і можливості inline-режиму (telegram) Робимо робота в telegram клавіатури і можливості inline-режиму](https://images-on-off.com/images/157/delaemrobotavtelegramklaviaturiivozmozhn-594b3e55.png)
Тепер визначимося з тим, що буде робити наш робот.
Зробимо так: відразу після запуску бот повинен відобразити користувачеві клавіатуру з двома кнопками - Шерлок Холмс і Доктор Ватсон.
Відправимося в функцію start нашого простого бота і змінимо її наступним чином:
Крім усього іншого потрібно додати from telebot import types в початок нашого файлу з роботом.
Тепер поясню, що взагалі тут відбувається 😱
- За допомогою types.ReplyKeyboardMarkup () ми створюємо об'єкт нашої майбутньої клавіатури, в дужках прописуються потрібні параметри. resize_keyboard = True дозволяє клавіатурі розтягуватися на необхідну висоту замість того, щоб займати весь простір.
- За допомогою .add () ми додаємо кнопки в нашу клавіатуру. types.KeyboardButton () являє собою об'єкт самої кнопки, а в дужках вказується текст на ній. У коді вище я наповнюю об'єкт нашої клавіатури об'єктами кнопок, заповнюючи їх зі списку [ 'Шерлок Холмс', 'Доктор Ватсон'] (гадаю, мене вкрай складно зрозуміти зараз, це нормально, раджу прочитати статтю про списки і for).
- Останнє, що потрібно зробити - прив'язати нашу клавіатуру до потрібного повідомлення, робиться це за допомогою параметра reply_markup в будь-якому методі send_.
Можна зберегти код і запустити робота.
![Робимо робота в telegram клавіатури і можливості inline-режиму (робимо) Робимо робота в telegram клавіатури і можливості inline-режиму](https://images-on-off.com/images/157/delaemrobotavtelegramklaviaturiivozmozhn-25c0f5c0.png)
Як видно, під полем для тексту з'явилися дві заповітні кнопки. Що далі? Тепер потрібно навчити нашого робота обробляти повідомлення, що відправляються йому після натискання на кнопки.
![Робимо робота в telegram клавіатури і можливості inline-режиму (клавіатури) Робимо робота в telegram клавіатури і можливості inline-режиму](https://images-on-off.com/images/157/delaemrobotavtelegramklaviaturiivozmozhn-323f543e.png)
Розглянемо мій код вище. У функції start ми використовуємо метод register_next_step_handler для того, щоб наступне повідомлення від нашого користувача відразу потрапило б в обробник name (який вказаний другим параметром; перший - об'єкт відправленого нами повідомлення).
У функції name ми опрацюємо відповідь користувача - відправимо повідомлення про Шерлока Холмса і Доктора Ватсона.
![Робимо робота в telegram клавіатури і можливості inline-режиму (клавіатури) Робимо робота в telegram клавіатури і можливості inline-режиму](https://images-on-off.com/images/157/delaemrobotavtelegramklaviaturiivozmozhn-91a54332.png)
На зображенні вище я додав повідомлення, які будуть відправлятися користувачеві після натискання на будь-яку з кнопок.
Збережемо файл з нашим роботом і запустимо його, не забувши заново відправити команду / start (старі кнопки вже не спрацюють).
![Робимо робота в telegram клавіатури і можливості inline-режиму (telegram) Робимо робота в telegram клавіатури і можливості inline-режиму](https://images-on-off.com/images/157/delaemrobotavtelegramklaviaturiivozmozhn-ed006a03.png)
Ось так бот відповість нам на натискання на кнопку. Але зауважу, що повторне натискання ні до чого не приведе. оскільки тільки після команди / start бот буде перевіряти текст повідомлення на наявність Шерлока Холмса і Доктора Ватсона.
Підіб'ємо підсумок: клавіатури дозволяють відправляти цілі повідомлення по одному лише натискання користувача. У кнопки можна записувати будь-які текстові фрази, навіть містять в собі Emoji. 😘
Після відправки бот повинен обробити отриману фразу, причому неважливо, як саме.
Зазначу, що у користувача завжди є залишається можливість відправити повідомлення за допомогою звичайної клавіатури.
Inline-режим
Є два варіанти використання Inline: перший - в самому боті. в повідомленнях, що відправляються ботом; другий - поза бота. де-небудь в довільному чаті, почавши набирати логін бота в поле для текстового повідомлення.
Сьогодні я хочу розповісти про перший варіант Inline-режиму. За допомогою нього можна прикріплювати Inline-кнопки до повідомлень, які відправляються ботом.
Тобто під кожним повідомленням можуть бути різні кнопки, що виконують найрізноманітнішу роботу. Наприклад, в популярних каналах нерідко використовують лайки, реалізовані як раз за допомогою Inline-кнопок.
Inline-кнопки прикріплюються до повідомлень точно так же, як це роблять клавіатури. Відрізняються лише назви і параметри методів.
Внесемо деякі зміни в наш код. Тепер нашою метою буде відредагувати повідомлення після натискання на кнопку.
Так-так, Inline-кнопки здатні редагувати вже відправлені нашим роботом повідомлення. 📝
![Робимо робота в telegram клавіатури і можливості inline-режиму (робимо) Робимо робота в telegram клавіатури і можливості inline-режиму](https://images-on-off.com/images/157/delaemrobotavtelegramklaviaturiivozmozhn-29cbc953.png)
Один по одному розповідаю, що тут діється. 🛠
Збережемо наш код і запустимо робота. Відправимо команду / start і спробуємо натиснути на будь-яку з кнопок.
Як видно, текст повідомлення від бота змінився після натискання на кнопку.
![Робимо робота в telegram клавіатури і можливості inline-режиму (робимо) Робимо робота в telegram клавіатури і можливості inline-режиму](https://images-on-off.com/images/157/delaemrobotavtelegramklaviaturiivozmozhn-a8dd887b.png)
Насправді Inline-кнопки здатні майже на все - за допомогою них можна навіть відправляти звичайні повідомлення. Всі функції і можливості описані в Telegram Bot API. Мабуть, це все, що я хотів розповісти тобі про перші кроки в Inline.
Робот для читання книги 📚
За командою / start цей робот відправляє першу сторінку - на кожній сторінці по 700 символів з книги.
![Робимо робота в telegram клавіатури і можливості inline-режиму (клавіатури) Робимо робота в telegram клавіатури і можливості inline-режиму](https://images-on-off.com/images/157/delaemrobotavtelegramklaviaturiivozmozhn-073492cc.png)
За допомогою стрілок ⬅️ і ➡️ можна гортати сторінки - текст повідомлення буде змінюватися вирізками по 700 символів.
![Робимо робота в telegram клавіатури і можливості inline-режиму (telegram) Робимо робота в telegram клавіатури і можливості inline-режиму](https://images-on-off.com/images/157/delaemrobotavtelegramklaviaturiivozmozhn-479b4a1f.png)
Нижче я залишаю тобі код цього бота - щоб запустити, досить покласти поруч з ботом будь-яку книгу в форматі .txt
На сьогодні все. Щасливого роботостроения 😘🤖
![Робимо робота в telegram клавіатури і можливості inline-режиму (робимо) Робимо робота в telegram клавіатури і можливості inline-режиму](https://images-on-off.com/images/157/delaemrobotavtelegramklaviaturiivozmozhn-259676dc.jpg)
A boy from the Wonderland.