Как обновить клавиатуру без клавиатуры
Перейти к содержимому

Как обновить клавиатуру без клавиатуры

  • автор:

Как переназначить сочетания клавиш для клавиатуры?

Вы можете переназначать некоторые клавиши для доступа к разным командам, ярлыкам и функциям Microsoft Mouse and Keyboard Center для максимального удобства работы.

Примечание: Параметры в этом мастере зависят от выбранной клавиши. Например, клавишу Windows невозможно переназначить, поэтому единственный доступный вариант — отключить ее.

Переназначение клавиши

  1. Скачайте и установите Microsoft Mouse и центр клавиатуры.
  2. Подключите клавиатуру, которую требуется настроить.
  3. Нажмите кнопку «Пуск» , а затем выберите Центр управления мышью и клавиатурой Майкрософт.
  4. В появившемся списке названий клавиш выберите нужную клавишу.
  5. Выберите из списка команду для нужной клавиши.

Использование Ассистивной клавиатуры на Mac

Экранная Ассистивная клавиатура дает возможность пользоваться Mac без физической клавиатуры. Она поддерживает расширенные функции ввода текста (например, варианты для ввода) и навигации, которые можно настроить для удобной работы с приложениями.

Ассистивная клавиатура. Вдоль верхнего края показаны варианты для ввода. Под ними расположен ряд кнопок управления системой: настройки яркости экрана, отображения индивидуальных панелей и других функций.

При использовании Ассистивной клавиатуры можно также включить функцию Автонажатия, чтобы выполнять действия мышью, используя технологию отслеживания движения головы или глаз.

Совет. Ассистивная клавиатура используется в приложении «Клавиатура» в macOS, где можно вводить текст на других языка при смене источника ввода. См. раздел Работа с приложением «Клавиатура».

Включение и выключение ассистивной клавиатуры

  • Включение. На Mac выберите меню Apple

> «Системные настройки», нажмите «Универсальный доступ» в боковом меню, нажмите «Клавиатура» справа, затем включите параметр «Ассистивная клавиатура». (Возможно, потребуется прокрутить вниз.) Открыть раздел «Клавиатура» в настройках Универсального доступа Также можно включить Ассистивную клавиатуру, нажав меню ввода в строке меню, а затем выбрав «Показать панель «Клавиатура»». (Меню ввода обозначается в строке меню значком «Символы» или, если Вы используете несколько источников ввода, значком соответствующего активного источника ввода.) Если это меню отсутствует в строке меню, включите отображение меню ввода в строке меню.

  • Выключение. В левом верхнем углу ассистивной клавиатуры на Mac нажмите кнопку «Закрыть» .
  • Использование Ассистивной клавиатуры

    Во время использования Ассистивной клавиатуры на Mac можно выполнить любое из указанных действий.

    • Настройка параметров системы. Нажимайте кнопки управления системой, чтобы настроить яркость экрана, громкость звука, параметры воспроизведения видео и музыки, а также получить доступ к различным функциям, например Mission Control.
    • Использование вариантов для ввода. При вводе текста отображаются предлагаемые варианты слов. Нажмите один из вариантов, чтобы вставить его в текст.
    • Ввод альтернативных символов. Нажмите Option или Option-Shift, затем нажмите символ. Также можно нажать Option для выделения мертвых клавиш (мертвая клавиша — это клавиша модификации, нажимаемая вместе с другой клавишей для ввода буквы с диакритическим знаком), нажать мертвую клавишу, а затем нажать букву. См. раздел Ввод символов с диакритическими знаками.
    • Упрощение ввода. В правом верхнем углу клавиатуры нажмите кнопку «Параметры панели» , выберите «Ввод текста», затем включите автоматическую вставку и удаление пробелов или автоматическое написание предложений с заглавной буквы (флажок означает, что параметр включен).
    • Использование автонажатия. В правом верхнем углу клавиатуры нажмите кнопку «Параметры панели», выберите «Автонажатие», затем выберите параметр. См. раздел Управление указателем с функцией автонажатия.

    Показ дополнительных объектов на ассистивной клавиатуре

    Во время использования Ассистивной клавиатуры на Mac можно выполнить любое из указанных действий.

    • Отображение и скрытие панелей инструментов. В правом верхнем углу клавиатуры нажмите кнопку «Параметры панели» , выберите «Панели инструментов», затем отобразите или скройте различные панели (флажок означает, что панель инструментов отображается). Например, можно показать панель «Текущий текст», которая отображает текст по мере его ввода в документе или текстовом поле, и панель «Предложения», которая отображает предлагаемые слова на основе введенного текста. Чтобы изменить местоположение панелей инструментов на клавиатуре с помощью Редактора панелей, выберите «Настроить макет панели инструментов».
    • Отображение индивидуальных панелей. Нажмите кнопку «Вручную» , чтобы отобразить доступные пользовательские панели, созданные с помощью Редактора панелей. Чтобы вернуться к ассистивной клавиатуре, нажмите значок «Домой» в правом верхнем углу пользовательской панели.

    Изменение размеров ассистивной клавиатуры

    Во время использования Ассистивной клавиатуры на Mac можно выполнить любое из указанных действий.

    • Увеличение или уменьшение клавиатуры. Перетяните угол клавиатуры. Чтобы изменить размеры без сохранения пропорций, нажмите кнопку «Параметры панели» в правом верхнем углу клавиатуры, затем выберите «Изменить размер пропорционально» (чтобы снять флажок).
    • Восстановление размеров клавиатуры по умолчанию. Нажмите кнопку «Параметры панели» в правом верхнем углу клавиатуры, выберите «Увеличение», затем выберите «100 %».

    Изменение параметров ассистивной клавиатуры

    Во время использования Ассистивной клавиатуры на Mac можно выполнить любое из указанных ниже действий, чтобы изменить ее настройки.

    • В правом верхнем углу ассистивной клавиатуры нажмите кнопку «Параметры панели» , затем выберите параметры (флажок означает, что параметр включен). Например, можно изменить внешний вид клавиатуры, переключившись на показ темного текста на светлом фоне, включить затемнение клавиатуры при отсутствии активности, а также включить или выключить Автонажатие.
    • Используя Редактор панелей на Mac, можно настроить ассистивную клавиатуру для работы в любимых приложениях.

    Если Ассистивная клавиатура затемняется или скрывается при отсутствии активности, можно снова отобразить ее, наведя указатель на затемненную клавиатуру, а если она скрыта — переместив указатель.

    Пропала клавиатура на Андроид: что делать?

    Эволюция мобильных телефонов привела к новшеству, о котором 10–15 лет назад не приходилось и мечтать: возможности вводить текст SMS, сообщений в мессенджерах, заметок прямо с экрана. Не обходится и без неприятностей: например, после нескольких недель бесперебойного пользования приложением для ввода вы вдруг видите, что оно больше не запускается. Почему не появляется клавиатура на Андроид и как вернуть её на место, расскажем ниже.

    Причины

    Приятная новость для владельца смартфона: можно полностью исключить аппаратные причины неполадки, требующие срочного похода в сервисный центр. При повреждении экрана или шлейфов частично или полностью пропадает изображение или перестаёт реагировать на прикосновения сенсор.

    Оба признака отсутствуют? Значит, клавиатура перестала появляться из-за:

    Такие неполадки вы сможете устранить самостоятельно, не обращаясь к специалистам. Как восстановить клавиатуру на телефоне Андроид самыми простыми способами, объясним в следующем разделе.

    Способы устранения

    Перезапуск

    Клавиатура перестала запускаться недавно, и вы ещё не пробовали перезапустить операционную систему? Сделайте это сейчас:

    В результате текущие системные и фоновые процессы, возможно, мешавшие работе клавиатуры, будут остановлены. После нового запуска проверьте, не возобновилась ли возможность запускать приложение.

    [su_button url=»https://sddhelp.ru/catalogue/home/buy.669507/?utm_source=sdd&utm_medium=ar_banner&utm_campaign=lead&coupon=SALE-70-AR» style=»flat» background=»#0083C2″ size=»10″ center=»yes» radius=»round»]Заказать настройку смартфона с 70% скидкой[/su_button]

    Обновление клавиатуры

    Набирая на сенсорном экране буквы и цифры, вы пользуетесь отдельной программой — неважно, установлена она производителем или вами самими. Чтобы больше не задаваться вопросом, почему пропала клавиатура на Андроид, не забывайте вовремя обновлять приложение: вероятно, новая версия будет содержать исправления ошибок, приведших к текущим сбоям.

    Обновить приложение можно через Google Play Market:

    Другой способ — ввести название используемой программы в строке поиска и посмотреть, не выпустил ли разработчик новый релиз.

    Перезагрузка виртуальной клавиатуры

    Иногда, если пропала клавиатура на Андроиде, описанных выше действий для восстановления работоспособности программы не хватает. С большой долей вероятности проблема заключается в самом запущенном приложении. Удалять его пока рано — для начала попробуйте перезапустить:

    Теперь можете или запустить программу, используя ярлык — или выполнить перезапуск смартфона. При новом включении клавиатура должна заработать, как до возникновения проблем.

    Очистка кэша

    Мобильные приложения во время работы создают для ускорения отклика кэш — совокупность файлов, хранящихся в каталоге программы или системной папке. Со временем эти данные становятся ненужными, накапливаются и начинают мешать нормальной работе ОС. Если пропала виртуальная клавиатура на Android, выполните полную очистку кэша:

    Когда очистка будет завершена, перезапустите смартфон — и убедитесь, что клавиатура снова работает.

    Выбор способа ввода по умолчанию

    Ещё одна причина, по которой не открывается клавиатура на Андроиде, — установка на смартфон нескольких приложений для ввода. В результате сбоя система не может определить, какой из программ пользоваться, — и не запускает ни одной. Чтобы избавиться от проблемы, сделайте выбор самостоятельно:

    В дальнейшем вы точно таким же способом сможете выбирать другие клавиатуры. Чтобы избежать новых сбоев, рекомендуем остановиться на одном-двух вариантах, а другие удалить из памяти.

    [su_button url=»https://sddhelp.ru/catalogue/home/buy.669507/?utm_source=sdd&utm_medium=ar_banner&utm_campaign=lead&coupon=SALE-70-AR» style=»flat» background=»#0083C2″ size=»10″ center=»yes» radius=»round»]Заказать настройку смартфона с 70% скидкой[/su_button]

    Установка другой клавиатуры

    Устали искать ответ на вопрос, как вернуть клавиатуру на Андроид? Тогда просто установите новую. Программ для набора текста и в официальном магазине Google, и на разнообразных специализированных сайтах предостаточно — выберите понравившийся и продолжайте пользоваться смартфоном в удобном режиме.

    На примере Google Play Market процесс выглядит так:

    Сразу после установки вам будет предложено установить новую клавиатуру в качестве основной. Сделайте это — а затем, запустив приложение, приступайте к настройке.

    Поиск и устранение конфликтующих программ

    Точно помните, с какого момента не отображается клавиатура на Андроиде? Удалите или остановите все установленные после этой даты сторонние приложения, обращающиеся к программе для набора текста: голосовые движки, наборы эмодзи и прочие:

    По завершении рекомендуем перезапустить телефон. Если проблема заключалась в несовместимом программном обеспечении, вы только что её решили.

    Сброс до заводских настроек

    Если исчезла клавиатура на Андроиде и ни один из вышеописанных способов не помогает, выполните полный сброс смартфона до заводского состояния:

    Перед началом работы сохраните на внешнем носителе или компьютере все важные данные, перепишите пароли, запомните особо важные настройки: в ходе сброса пользовательские данные будут полностью удалены.

    Вот и всё. Теперь можете снова установить клавиатуру и пользоваться ею — не забывая вовремя обновлять приложение и чистить кэш. Удачи!

    Урок 5. Клавиатуры и кнопки

    В сегодняшнем уроке мы разберём шаблоны сообщений и инлайн-клавиатуры и научимся применять встроенные в aiogram методы для составления сложных клавиатур.

    Не забывайте своевременно обновлять библиотеку командой python3.6 -m pip install aiogram -U ! Урок проводится с использованием версии 1.2.3

    Весь код, использованный в уроке, как обычно доступен на GitHub

    Для начала стоит понять, в чем основное различие ReplyKeyboardMarkup и InlineKeyboardMarkup :

    ReplyKeyboardMarkup — это шаблоны сообщений. К примеру, ваш бот задаёт пользователю вопрос и предлагает варианты ответа. Пользователь может самостоятельно напечатать ответ, либо нажать на готовую кнопку. Такая клавиатура показывается вместо основной и не привязана ни к какому сообщению. В кнопки такой клавиатуры нельзя заложить никакой информации, нельзя запрограммировать для неё подобный если пользователь нажимает кнопку с текстом «abc» отправить текст «qwerty» алгоритм, отправлено будет только то, что написано на кнопке (есть два исключения, о которых ниже).

    InlineKeyboardMarkup — это уже настоящая кастомная клавиатура. С её помощью мы можем выполнять более сложные действия. Она привязывается к сообщению, с которым была отправлена. В кнопки можно заложить любой текст размером от 1 до 64 байт (будьте осторожны, недобросовестные клиенты позволяют изменять эти данные). Инлайн кнопки позволяют скрыть в себе внутреннюю телеграм ссылку, ссылку на внешний ресурс, а также шорткат для инлайн запроса (об инлайн режиме в одном из следующих уроков).

    И ту и другую клавиатуру можно редактировать, но разными способами. Первая обновляется при отправке сообщения с новой клавиатурой типа ReplyKeyboardMarkup , вторую можно редактировать вместе с сообщением, к которому она прикреплена (или только саму разметку).

    Переходим к коду

    Создадим отдельный модуль с клавиатурами, которые будем использовать в основной программе.

    В первую очередь импортируем необходимые нам модули и создаём первую клавиатуру:

    from aiogram.types import ReplyKeyboardRemove, \ ReplyKeyboardMarkup, KeyboardButton, \ InlineKeyboardMarkup, InlineKeyboardButton button_hi = KeyboardButton('Привет! ��') greet_kb = ReplyKeyboardMarkup() greet_kb.add(button_hi) 

    При инициализации класса KeyboardButton необходимо передать один обязательный параметр — текст, который пользователь будет отправлять по нажатию на эту кнопку. У объекта класса ReplyKeyboardMarkup есть несколько методов, позволяющих добавить кнопку, в данном случае мы используем add . Таким образом мы получили первую готовую клавиатуру.

    Создаём обработчик, который будет отправлять нам сообщение и наш шаблон (напомню, что отправить отдельно клавиатуру никак нельзя, она является параметром к сообщению).

    @dp.message_handler(commands=['start']) async def process_start_command(message: types.Message): await message.reply("Привет!", reply_markup=kb.greet_kb) 

    Запускаем и проверяем:

    Отлично, клавиатура появилась! Но эта одна кнопка с маленьким текстом занимает очень много места. Телеграм позволяет автоматически уменьшить размер, для этого необходимо передать в инициализатор класса ReplyKeyboardMarkup параметру resize_keyboard значение True . Создадим новую клавиатуру:

    greet_kb1 = ReplyKeyboardMarkup(resize_keyboard=True).add(button_hi) 

    Мы передали параметр в инициализатор и следом сразу добавили уже существующую кнопку. Отправляем новую версию клавиатуры:

    @dp.message_handler(commands=['hi1']) async def process_hi1_command(message: types.Message): await message.reply("Первое - изменяем размер клавиатуры", reply_markup=kb.greet_kb1) 

    Очевидно, так как у нас нет обработчика обычных сообщений, текст, отправляемый нажатием на эту кнопку, остаётся без ответа. При желании можно добавить функцию эхо из первого урока. А что ещё можно было заметить при использовании этой кнопки? Что она остаётся всё там же, даже если мы после нажатия хотели бы вернуться к привычной клавиатуре. Да, нажать одну кнопку, чтобы переключиться, не сложно. Но если клавиатура в принципе не подразумевает повторного нажатия прямо сейчас? И для этого тоже есть решение:

    # keyboards.py greet_kb2 = ReplyKeyboardMarkup( resize_keyboard=True, one_time_keyboard=True ).add(button_hi) # bot.py @dp.message_handler(commands=['hi2']) async def process_hi2_command(message: types.Message): await message.reply("Второе - прячем клавиатуру после одного нажатия", reply_markup=kb.greet_kb2) 

    Эти параметры можно комбинировать. Вследствие чего мы получили маленькую клавиатуру, которая скрывается после одной отправки. Но пользователь может снова её открыть нажатием на соответствующую кнопку в поле ввода.

    Добавляем больше кнопок

    Рассмотрим подробно работу встроенных методов для создания более сложных клавиатур, а именно row , insert и add . Создаём кнопки, которые мы сможем использовать повторно и генерируем несколько разных клавиатур:

    button1 = KeyboardButton('1️⃣') button2 = KeyboardButton('2️⃣') button3 = KeyboardButton('3️⃣') markup3 = ReplyKeyboardMarkup().add( button1).add(button2).add(button3) markup4 = ReplyKeyboardMarkup().row( button1, button2, button3 ) markup5 = ReplyKeyboardMarkup().row( button1, button2, button3 ).add(KeyboardButton('Средний ряд')) button4 = KeyboardButton('4️⃣') button5 = KeyboardButton('5️⃣') button6 = KeyboardButton('6️⃣') markup5.row(button4, button5) markup5.insert(button6) 

    Важно: сейчас мы отталкиваемся от того, что клавиатура по умолчанию имеет 3 кнопки в ряд. О том, как изменить это значение, будет в примере с инлайн клавиатурами — этот параметр идентичен для обоих видов.

    • Метод add принимает в себя любое количество кнопок, всегда начинает добавление с новой строки и переносит ряд при достижении значения установленной ширины.
    • Метод row тоже принимает любое количество, но при этом не переносит кнопки на новый ряд, а добавляет всё полученное в одну строчку.
    • Метод insert работает по схеме схожей с add , но только начинает добавлять к последнему ряду. И только если там уже достигнута максимальная ширина, начинает новую строку. Взглянем на него ещё раз при создании следующей клавиатуры.

    Отправляем все готовые кнопки и смотрим на результат:

    @dp.message_handler(commands=['hi3']) async def process_hi3_command(message: types.Message): await message.reply("Третье - добавляем больше кнопок", reply_markup=kb.markup3) 

    @dp.message_handler(commands=['hi4']) async def process_hi4_command(message: types.Message): await message.reply("Четвертое - расставляем кнопки в ряд", reply_markup=kb.markup4) 

    @dp.message_handler(commands=['hi5']) async def process_hi5_command(message: types.Message): await message.reply("Пятое - добавляем ряды кнопок", reply_markup=kb.markup5) 

    Думаю, здесь достаточно наглядно видно работу методов добавления кнопок в разметку.

    И последнее по этому виду клавиатур. ReplyKeyboardMarkup позволяет запросить у пользователя его контакт или локацию. Это те самые два исключения из правила, когда при нажатии кнопки будет отправлено не то, что написано на ней. Их можно отправлять как по одной, так и в составе более сложной клавиатуры. Добавим обе кнопки и посмотрим, что будет (обращу внимание читателя на то, что нельзя одной кнопкой запросить сразу и то и то):

    # keyboards.py markup_request = ReplyKeyboardMarkup(resize_keyboard=True).add( KeyboardButton('Отправить свой контакт ☎️', request_contact=True) ).add( KeyboardButton('Отправить свою локацию ��️', request_location=True) ) #bot.py @dp.message_handler(commands=['hi6']) async def process_hi6_command(message: types.Message): await message.reply("Шестое - запрашиваем контакт и геолокацию\nЭти две кнопки не зависят друг от друга", reply_markup=kb.markup_request) 

    При нажатии на каждую из этих кнопок клиент (приложение Телеграм) спросит, уверены ли вы, что хотите поделиться с ботом этими данными и при утвердительном ответе отправит их.

    Запрос контакта

    Запрос текущей геолокации

    Данные пользователя

    Рассмотрим подробнее последний метод для составления клавиатур — insert . Он похож на метод add , но начинает добавлять кнопки не с нового ряда, а сначала проверяет, заполнен ли до конца последний ряд. И если нет, то сначала добавляет кнопки туда, а переносит строку только при достижении указанного лимита.

    # keyboards.py markup_big = ReplyKeyboardMarkup() markup_big.add( button1, button2, button3, button4, button5, button6 ) markup_big.row( button1, button2, button3, button4, button5, button6 ) markup_big.row(button4, button2) markup_big.add(button3, button2) markup_big.insert(button1) markup_big.insert(button6) markup_big.insert(KeyboardButton('9️⃣')) # bot.py @dp.message_handler(commands=['hi7']) async def process_hi7_command(message: types.Message): await message.reply("Седьмое - все методы вместе", reply_markup=kb.markup_big) 

    После каждой отправки ботом пользователю клавиатуры, последняя заменяет предыдущую. Поэтому пользователь всегда может открыть её, даже когда по контексту она не нужна. Для того, чтобы у пользователя в клиенте клавиатура убралась совсем, нужно отправить ему ReplyKeboardRemove :

    @dp.message_handler(commands=['rm']) async def process_rm_command(message: types.Message): await message.reply("Убираем шаблоны сообщений", reply_markup=kb.ReplyKeyboardRemove()) 

    Получив сообщение с такой клавиатурой, клиент уберёт шаблоны полностью.

    Инлайн клавиатуры

    Теперь перейдем к инлайн клавиатурам. Они имеют больше параметров, поэтому позволяют нам делать больше разных вещей. Самое популярное использование — как кнопка, являющаяся шорткатом для какого-то действия. То есть «если пользователь нажал кнопку X, сделать Y». И под Y можно понимать вообще что угодно, так как это уже не ограничивается даже API. Рассмотрим наглядно, для этого передадим в инициализатор значение callback_data :

    # keyboards.py inline_btn_1 = InlineKeyboardButton('Первая кнопка!', callback_data='button1') inline_kb1 = InlineKeyboardMarkup().add(inline_btn_1) #bot.py @dp.message_handler(commands=['1']) async def process_command_1(message: types.Message): await message.reply("Первая инлайн кнопка", reply_markup=kb.inline_kb1) 

    Нажимаем кнопку и.. ничего не происходит! Почему? Если у бота было включено логгирование, то вы могли заметить, что приходит обновление типа CallbackQuery . Так вот именно его нам и нужно отлавливать. Добавляем нужный хэндлер (я предпочитаю ставить их выше, но относительно хэндлеров обычных сообщений значения это не имеет):

    @dp.callback_query_handler(func=lambda c: c.data == 'button1') async def process_callback_button1(callback_query: types.CallbackQuery): await bot.answer_callback_query(callback_query.id) await bot.send_message(callback_query.from_user.id, 'Нажата первая кнопка!') 

    Здесь мы делаем проверку прямо в хэндлере. Аргумент func ожидает функцию, которая принимает один параметр (туда передаётся апдейт), и хэндлер срабатывает, если возвращается истина. Этот аргумент можно использовать и в других хэндлерах, мы уже использовали его в уроке по FSM.

    Внутри мы можем делать вообще что угодно, так как работаем с обычным питоном. Подача корма для кошки? Управление светом? Пределом является только ваша фантазия.

    Хорошим тоном будет отвечать на все колбеки — для этого есть метод answerCallbackQuery . В документации сказано, что ответ ожидается клиентом, и дать его нужно обязательно, даже если вы не собираетесь передавать что-либо. Этого времени предостаточно, чтобы собрать необходимые данные и прислать их. При этом во время ожидания на кнопке будут крутиться часики, показывающие, то клиент ждёт ответа, поэтому если мы не хотим, чтобы пользователь наблюдал их, то нужно не забывать отвечать. Обязательный аргумент — айди запроса, на который мы отвечаем. Остальные параметры рассмотрим ниже. А в данном случае мы для наглядности отправим сообщение с информацией о том, что нажата первая кнопка. Запускаем снова, жмём кнопку и таки получаем ответ:

    В этот раз установим ширину клавиатуры 2 и посмотрим, что будет.
    Ну и так как методы добавления новых элементов мы уже разобрали, добавим сразу все доступные кнопки и отправим получившуюся клавиатуру, не забыв добавить хэндлер кнопок:

    # keyboards.py inline_kb_full = InlineKeyboardMarkup(row_width=2).add(inline_btn_1) inline_kb_full.add(InlineKeyboardButton('Вторая кнопка', callback_data='btn2')) inline_btn_3 = InlineKeyboardButton('кнопка 3', callback_data='btn3') inline_btn_4 = InlineKeyboardButton('кнопка 4', callback_data='btn4') inline_btn_5 = InlineKeyboardButton('кнопка 5', callback_data='btn5') inline_kb_full.add(inline_btn_3, inline_btn_4, inline_btn_5) inline_kb_full.row(inline_btn_3, inline_btn_4, inline_btn_5) inline_kb_full.insert(InlineKeyboardButton("query=''", switch_inline_query='')) inline_kb_full.insert(InlineKeyboardButton("query='qwerty'", switch_inline_query='qwerty')) inline_kb_full.insert(InlineKeyboardButton("Inline в этом же чате", switch_inline_query_current_chat='wasd')) inline_kb_full.add(InlineKeyboardButton('Уроки aiogram', url='https://surik00.gitbooks.io/aiogram-lessons/content/')) # bot.py @dp.callback_query_handler(func=lambda c: c.data and c.data.startswith('btn')) async def process_callback_kb1btn1(callback_query: types.CallbackQuery): code = callback_query.data[-1] if code.isdigit(): code = int(code) if code == 2: await bot.answer_callback_query(callback_query.id, text='Нажата вторая кнопка') elif code == 5: await bot.answer_callback_query( callback_query.id, text='Нажата кнопка с номером 5.\nА этот текст может быть длиной до 200 символов ��', show_alert=True) else: await bot.answer_callback_query(callback_query.id) await bot.send_message(callback_query.from_user.id, f'Нажата инлайн кнопка! code=') @dp.message_handler(commands=['2']) async def process_command_2(message: types.Message): await message.reply("Отправляю все возможные кнопки", reply_markup=kb.inline_kb_full) 

    Пройдёмся по строчкам по порядку, чтобы не осталось вопросов:

    • мы создаём клавиатуру типа InlineKeyboardMarkup , указываем, что ширина строки должна быть не больше двух (напомню, что это не распространяется на метод row ) и сразу добавляем туда уже готовую кнопку
    • далее добавляем кнопку, у которой указываем другие данные в параметре callback_data
    • следом генерируем три новые кнопки и добавляем их дважды. Сначала методом add , затем через row . И так как ширина клавиатуры равна двум, то в первом случае происходит перенос третьей кнопки, во втором случае нет
    • затем добавляем кнопки, у которых указываем уже не callback_data , а другие параметры. То, что мы добавим в switch_inline_query , будет автоматически использовано при нажатии кнопки: пользователю предложат выбрать чат, а там вызовется инлайн режим этого бота (в поле ввода сообщения добавится юзернейм бота), следом через пробел будет прописано то, что мы указали. Параметр может принимать пустую строку, тогда инлайн режим запустится без какого-либо запроса, но если будет указан текст, то он и добавится
    • при использовании switch_inline_query_current_chat произойдёт ровно то же, что и в предыдущем пункте, но без выбора чата, а запустится в текущем (было сложно догадаться по названию, я знаю)
    • ну и последний параметр url - добавляем ссылку на внешний ресурс, либо диплинк в самом Телеграме

    Так как параметр клавиатуры row_width равен двум, то кнопки автоматически расставились соответствующе. Рассмотрим реакцию на кнопки по порядку: При нажатии первой срабатывает наш первый колбек, так как не важно, в какую клавиатуру добавлена кнопка, важно, какая у неё callback_data ☝️. Поэтому добавлять инлайн кнопку можно сколько угодно раз в любые инлайн клавиатуры.

    Кнопки со второй по пятую имеют схожую структуру в callback_data , поэтому внутри хэндлера проверяем, какой код у нажатой кнопки и:

    • если 2, то отвечаем на запрос и передаем информационное сообщение. Аргумент text это текст ответа на запрос. По умолчанию он будет показан вверху чата и сам скроется через пару секунд.
    • если 5, то отвечаем так же, но указываем show_alert=True , таким образом мы сообщаем клиенту, что нужно показать окошко с текстом
    • в ином случае просто отвечаем на колбек

    И во всех случаях шлем сообщение пользователю:

    Ещё можно отправить кнопку с игрой или платежом, но первое мы разберем в одном из следующих уроков, а о втором я уже упоминал в одном из предыдущих. При ответе на колбек можно ещё передать в ответ ссылку формата t.me/your_bot?start=XXXX , чтобы пользователь запустил вашего бота с определенным параметром, но диплинкинг мы тоже оставим для другого урока, так как здесь только о кнопках.

    На последок не забываем добавить обработку команы /help и запускаем:

    help_message = text( "Это урок по клавиатурам.", "Доступные команды:\n", "/start - приветствие", "\nШаблоны клавиатур:", "/hi1 - авто размер", "/hi2 - скрыть после нажатия", "/hi3 - больше кнопок", "/hi4 - кнопки в ряд", "/hi5 - больше рядов", "/hi6 - запрос локации и номера телефона", "/hi7 - все методы" "/rm - убрать шаблоны", "\nИнлайн клавиатуры:", "/1 - первая кнопка", "/2 - сразу много кнопок", sep="\n" ) @dp.message_handler(commands=['help']) async def process_help_command(message: types.Message): await message.reply(help_message) if __name__ == '__main__': executor.start_polling(dp) 

    Вот и всё!

    В этом уроке мы разобрали как работать с клавиатурами в Телеграм

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *