Доброго часу дня і ночі, мій дорогий читачу. Мабуть, мені б коштувало привітати тебе з наступаючим новим роком, але немає, прости, я не особливо схильний до всякого роду поздоровленням. Не будемо відходити від теми - півроку назад я написав статтю про те, як створити свого найпершого робота в Telegram на Python3 і запустити його.
З тих пір пройшло досить багато часу, кілька разів оновлювався Telegram Bot API. і сьогодні я вирішив продовжити свою розповідь про створення свого робота.
вступ
Для початку трохи інформації для загального розвитку - про те, що таке клавіатура в боті і для чого вона потрібна.
Під час нашої першої запускаємо будь-якого бота, ми використовуємо кнопку Start (Пуск), потім можемо продовжити спілкування з ботом за допомогою команд або будь-яких інших текстових повідомлень.
Що відбувається, коли ми натискаємо кнопки під полем для введення повідомлення? Нічого складного - лише відправляється той текст, який ми бачимо на кнопці. Тобто натискання на Налаштування призведе до відправки повідомлення з текстом Налаштування від твого імені до боту і тільки.
Далі робот просто обробляє отриманий ним текст. Ніякої магії. Знаю з власного досвіду, що все дуже люблять код (брешу, не всі) - тому зараз ми приступимо до його написання.
Вважаю, прочитавши мою попередню запис. ти зможеш встановити і налаштувати Python3, а також створити найпростішого бота. відповідального на команду / start.
Для початку нам доведеться зареєструвати нашого нового робота у @BotFather і отримати TOKEN для з'єднання з ним. Свого робота я назву Dr. Watson. а логін збережу в таємниці 😌
Створимо простого бота, який при запуску буде вітатися з користувачем. Коду, як на картинці нижче, буде цілком достатньо:
Тепер визначимося з тим, що буде робити наш робот.
Зробимо так: відразу після запуску бот повинен відобразити користувачеві клавіатуру з двома кнопками - Шерлок Холмс і Доктор Ватсон.
Відправимося в функцію start нашого простого бота і змінимо її наступним чином:
Крім усього іншого потрібно додати from telebot import types в початок нашого файлу з роботом.
Тепер поясню, що взагалі тут відбувається 😱
- За допомогою types.ReplyKeyboardMarkup () ми створюємо об'єкт нашої майбутньої клавіатури, в дужках прописуються потрібні параметри. resize_keyboard = True дозволяє клавіатурі розтягуватися на необхідну висоту замість того, щоб займати весь простір.
- За допомогою .add () ми додаємо кнопки в нашу клавіатуру. types.KeyboardButton () являє собою об'єкт самої кнопки, а в дужках вказується текст на ній. У коді вище я наповнюю об'єкт нашої клавіатури об'єктами кнопок, заповнюючи їх зі списку [ 'Шерлок Холмс', 'Доктор Ватсон'] (гадаю, мене вкрай складно зрозуміти зараз, це нормально, раджу прочитати статтю про списки і for).
- Останнє, що потрібно зробити - прив'язати нашу клавіатуру до потрібного повідомлення, робиться це за допомогою параметра reply_markup в будь-якому методі send_.
Можна зберегти код і запустити робота.
Як видно, під полем для тексту з'явилися дві заповітні кнопки. Що далі? Тепер потрібно навчити нашого робота обробляти повідомлення, що відправляються йому після натискання на кнопки.
Розглянемо мій код вище. У функції start ми використовуємо метод register_next_step_handler для того, щоб наступне повідомлення від нашого користувача відразу потрапило б в обробник name (який вказаний другим параметром; перший - об'єкт відправленого нами повідомлення).
У функції name ми опрацюємо відповідь користувача - відправимо повідомлення про Шерлока Холмса і Доктора Ватсона.
На зображенні вище я додав повідомлення, які будуть відправлятися користувачеві після натискання на будь-яку з кнопок.
Збережемо файл з нашим роботом і запустимо його, не забувши заново відправити команду / start (старі кнопки вже не спрацюють).
Ось так бот відповість нам на натискання на кнопку. Але зауважу, що повторне натискання ні до чого не приведе. оскільки тільки після команди / start бот буде перевіряти текст повідомлення на наявність Шерлока Холмса і Доктора Ватсона.
Підіб'ємо підсумок: клавіатури дозволяють відправляти цілі повідомлення по одному лише натискання користувача. У кнопки можна записувати будь-які текстові фрази, навіть містять в собі Emoji. 😘
Після відправки бот повинен обробити отриману фразу, причому неважливо, як саме.
Зазначу, що у користувача завжди є залишається можливість відправити повідомлення за допомогою звичайної клавіатури.
Inline-режим
Є два варіанти використання Inline: перший - в самому боті. в повідомленнях, що відправляються ботом; другий - поза бота. де-небудь в довільному чаті, почавши набирати логін бота в поле для текстового повідомлення.
Сьогодні я хочу розповісти про перший варіант Inline-режиму. За допомогою нього можна прикріплювати Inline-кнопки до повідомлень, які відправляються ботом.
Тобто під кожним повідомленням можуть бути різні кнопки, що виконують найрізноманітнішу роботу. Наприклад, в популярних каналах нерідко використовують лайки, реалізовані як раз за допомогою Inline-кнопок.
Inline-кнопки прикріплюються до повідомлень точно так же, як це роблять клавіатури. Відрізняються лише назви і параметри методів.
Внесемо деякі зміни в наш код. Тепер нашою метою буде відредагувати повідомлення після натискання на кнопку.
Так-так, Inline-кнопки здатні редагувати вже відправлені нашим роботом повідомлення. 📝
Один по одному розповідаю, що тут діється. 🛠
Збережемо наш код і запустимо робота. Відправимо команду / start і спробуємо натиснути на будь-яку з кнопок.
Як видно, текст повідомлення від бота змінився після натискання на кнопку.
Насправді Inline-кнопки здатні майже на все - за допомогою них можна навіть відправляти звичайні повідомлення. Всі функції і можливості описані в Telegram Bot API. Мабуть, це все, що я хотів розповісти тобі про перші кроки в Inline.
Робот для читання книги 📚
За командою / start цей робот відправляє першу сторінку - на кожній сторінці по 700 символів з книги.
За допомогою стрілок ⬅️ і ➡️ можна гортати сторінки - текст повідомлення буде змінюватися вирізками по 700 символів.
Нижче я залишаю тобі код цього бота - щоб запустити, досить покласти поруч з ботом будь-яку книгу в форматі .txt
На сьогодні все. Щасливого роботостроения 😘🤖
A boy from the Wonderland.