В этой заметке я писал о том, как по команде бота выдаётся случайное фото, а если добавить параметр к команде, то будет целенаправленный выбор темы.
У меня в том боте, который я неспешно сейчас пишу, есть нечто подобное: по команде выбирается случайный канал и из него достаются картинки. Если указали канал, то выбор идёт из указанного. До какого-то момента это меня устраивало, пока список каналов не стал подходить к 10. И тогда я задумал сделать такую возможность: дать пользователю выбрать канал по нажатию на кнопку. Вот примерно как это сделано у меня.
Не важно, что вы используете в качестве библиотеки обращения к api, важно понимание этого самого api. Мы будем работать с методом sendMessage
this.bot.sendMessage(chatId, «Выберите канал:», reply_markup: resize_keyboard: true, inline_keyboard: [ [ text: «Случайно», callback_data: «random» >], [ text: «Спорт», callback_data: «sport» >], [ text: «Кино», callback_data: «cinema» >], [ text: «Музыка», callback_data: «music» >], ], >, >);
Enter fullscreen mode
Exit fullscreen mode
Telegram бот на python aiogram #5 Клавиатуры и кнопки
Результат:
Здесь у нас каждый массив с объектом- это строка с кнопкой. Можно и по-другому сделать, например так:
this.bot.sendMessage(chatId, «Выберите канал:», reply_markup: resize_keyboard: true, inline_keyboard: [ [ text: «Случайно», callback_data: «random» >], [ text: «Спорт», callback_data: «sport» >, text: «Кино», callback_data: «cinema» >, text: «Музыка», callback_data: «music» >, ], ], >, >);
Enter fullscreen mode
Exit fullscreen mode
Осталось добавить обработчик нажатия на кнопку. В библиотеке node-telegram-bot-api можно это сделать используя функцию on — первый параметр задаёт событие бота, на которое реагировать, второй параметр- обработчик этого события.
// После инициализации бота, задать обработчик this.bot.on(«callback_query», this.callbackQuery); // обработчик нажатия на кнопки callbackQuery = async (callbackQuery) => const msg = callbackQuery.message; // Спрятать клавиатуру (оптимально) // await this.removeHisKeyboard(callbackQuery); // См. ниже пояснения await this.bot.answerCallbackQuery(callbackQuery.id); const data = «» > = callbackQuery; //.. >; /** * Удалить вывод клавиатуры */ removeHisKeyboard = (callbackQuery) => const messageText = callbackQuery.message.text; const messageId = callbackQuery.message.message_id; return this.bot .editMessageText(messageText, message_id: messageId, chat_id: callbackQuery.from.id, reply_markup: inline_keyboard: [], >, >) >;
Enter fullscreen mode
Exit fullscreen mode
Про callbackQuery написано в документации по api — там же объясняется, почему нужно вызывать answerCallbackQuery . Функция removeHisKeyboard здесь может и не нужна, но если Вы хотите скрыть клавиатуру, после того, как сделан выбор, то можно ей воспользоваться. Здесь бот редактирует своё сообщение с интерактивным выбором,- он просто очищает inline_keyboard.
Источник: dev.to
Telegram bot — Удалить клавиатуру — Nodejs
Я столкнулся с очень странной проблемой, которая, вероятно, связана с кешем.
Так вот оно. Я разработал бота в nodejs для телеграммы.
Этот бот в прошлом был пользовательской клавиатурой, которая не была «inline_keyboard», я решил изменить это поведение и реализовал inline_keyboard.
текущий код выглядит примерно так:
var options = < parse_mode: «Markdown», disable_web_page_preview: true, reply_markup: JSON.stringify(< inline_keyboard: [ [< text: ‘ English’, callback_data: «SET ENGLISH» >,< text: ‘ Français’, callback_data: «SET FRENCH» >] ] >) >; bot.sendMessage(msg.chat.id, «Please choose your language»,options);
Inline_keyboard работает нормально, но мой старый код (который был удален) по-прежнему появляется для моих пользователей и очень неприятен.
Вот; он продолжает появляться, когда мои пользователи входят в мой чат.
Я был следующим ressources:
- https://core.telegram.org/bots/api#replykeyboardremove
- Как удалить клавиатуру ответа без отправки сообщения в Telegram?
- https://core.telegram.org/bots/api#editmessagereplymarkup
Но я не вижу, как его реализовать, поэтому я могу удалить этот раздражающий чат для своих пользователей.
Какие-либо предложения? спасибо для вашей поддержки
node.js telegram telegram-bot
1 ответ
1 Решение tashakori [2018-04-15 22:20:00]
могут быть разные решения для этого, мое предложение:
вы можете использовать самый первый ответ каждого пользователя для удаления клавиатуры, сначала используйте editMessageText, чтобы удалить клавиатуру, а затем отправьте ему соответствующий ответ (обратите внимание, что сохраняйте chatID, что вы удалили свою клавиатуру, поэтому вы будете делать это для каждого пользователя только один раз )
bot.on(‘callback_query’, function onCallbackQuery(callbackQuery) < if(!didWeRemoveHisKeyboard(callbackQuery.from.id)) removeHisKeyboard(callbackQuery) //then handle the user response >) removeHisKeyboard = function(callbackQuery)< bot.editMessageText(callbackQuery.message.text, >).catch((err) => < //some error handling >).then(function(res)< if(res) addThisChatToHandledList(callbackQuery.from.id) >) >
обратите внимание, что вам может потребоваться некоторая модификация этого кода на основе используемого узла node_module.
Источник: qarchive.ru
Как удалить бота в Телеграм: зачем их удалять и почему важно уметь
Вопросы и ответы
Автор fast12v0_teleg На чтение 9 мин Просмотров 3к. Опубликовано 16.08.2021
Что такое бот
Бот в Telegram — это программа, созданная специально для общения. Роботы обучаются выполнять определенные действия с помощью предписанных команд — они могут изменять настройки и отвечать на вопросы.
Пример: робот для поиска книг.
- Введите команду запуска;
- Щелкните кнопку загрузки.
- Введите команду для поиска фишки;
Сервисы не отправляют информационные сообщения. Они работают только по команде — список разработанных настроек можно найти в каждом конкретном чате.
Какие есть программы:
- Образовательный;
- Используется в групповых чатах.
- Для настроек;
- Поисковый движок;
- Для напоминания;
- Для загрузки файлов;
- Комментировать;
- Веселье;
Важно! Сервисы безопасны: личные данные мессенджера просто недоступны.
Если робот не используется, от него стоит избавиться — ведь вы же не хотите собирать ненужные программы? Ниже описано, как удалить сервис на iPhone и Android.
Немного о ботах в Телеграме?
Бот — это специально написанная программа, которая общается с человеком в режиме реального времени. Отвечает на вопросы, выполняет команды, меняет настройки. Telegram — это мессенджер, официально поддерживающий функциональность таких систем в своем мире. Каждый пользователь может создать личного бота. Достаточно немного знаний в области программирования.
Преимущество использования ботов в Telegram заключается в том, что они не забывают информационные каналы: они могут отправлять сообщение после того, как пользователь отправил им запрос.
Они не предназначены для распространения рекламы. В мессенджере самые популярные боты:
Что могут делать боты?
Вот несколько примеров использования ботов:
- Интеграция с другими сервисами. Например, бот может оставлять комментарии или управлять умным домом. Или, например, отправлять вам уведомления при выполнении действия или события (примеры: GitHub Bot, Image Bot).
- Что ты хочешь. Ботов можно запрограммировать на что угодно. Если только они не могут мыть посуду.
- Социальные службы. Бот может найти вам собеседника на основе ваших общих интересов и увлечений. (Пример: HotOrBot).
- Утилиты и инструменты. Бот может отображать погоду, переводить тексты или предупреждать о предстоящих событиях по вашему запросу (например: бот для опросов).
- Одиночные и многопользовательские игры. Бот может играть с вами в шашки или шахматы, проводить викторины и так далее. (Пример: викторина-бот).
Чем бот отличается от обычного аккаунта?
Суперспособности
Роботы Telegram обладают множеством уникальных функций, таких как настраиваемые клавиатуры, дополнительные командные интерфейсы по умолчанию, внешние ссылки и специальные режимы конфиденциальности для групп.
Игры
С помощью ботов пользователи могут играть в игры HTML5 в группах или приватных чатах. Игровая платформа Telegram поможет составить таблицу рекордов и уведомить пользователей об изменении рейтинга.
Под капотом игр лежит HTML5, поэтому вы можете создавать игры любой сложности. На данный момент команда Telegram создала несколько демо-игр:
- Математическая битва
- Корсары
- Лесоруб
Клавиатуры
Одна из самых необычных функций Bot API — это настраиваемые клавиатуры. Когда сервер отправляет ответ, может быть отправлена команда для отображения специальной клавиатуры с предустановленными параметрами ответа (см. ReplyKeyboardMarkup).
Клиент Telegram, получив сообщение, покажет пользователю вашу клавиатуру. Нажатие клавиши немедленно отправит на сервер соответствующую команду. Таким образом, взаимодействие робота с пользователем можно значительно упростить: на данный момент можно использовать смайлики и текст для отображения на клавише.
Команды
Команды — это более гибкий способ общения с вашим ботом. Рекомендуется следующий синтаксис:
/ команда необязательно аргумент
Команда должна начинаться с символа косой черты «/» и не может быть длиннее 32 символов. Команды могут состоять из латинских букв, цифр и знаков подчеркивания. Несколько примеров:
/ get_messages_stats / set_timer 10-минутный будильник! / get_timezone Лондон, Великобритания
Если в группе несколько ботов, вы можете добавить имя бота после команды, чтобы избежать коллизий в общих командах:
Это произойдет автоматически, если вы выберете команду из списка доступных.
Как убрать из активного чата
Несмотря на очевидные преимущества использования роботов, иногда возникает необходимость удалить бота Telegram. Это несложно, с этим справится даже начинающий пользователь. Следуйте нашим инструкциям: все будет работать!
На iPhone
Владельцам iPhone необходимо сделать следующее, чтобы удалить бота в Telegram:
- Откройте нужный диалог в Telegram и нажмите на имя бота;
- Щелкните значок «Подробности»;
- Внизу экрана вы найдете кнопку «Стоп»;
- Теперь вернитесь на главный экран в раздел «Чат»;
- Найдите значок корзины, выделенный красным;
- Проведите пальцем влево по названию службы;
- Выберите «Удалить».
Если вы не хотите останавливать и удалять бота отдельными действиями, выберите пункт меню «Удалить и остановить».
Таким образом вы можете устранить любого бота, например бота Telegram Flibust, с помощью которого вы можете совершенно бесплатно скачивать различные книги в любом формате!
На Android
Поговорим теперь о том, как удалить бота Telegram на Android:
- Войдите в диалог в Telegram и нажмите на имя бота;
- Нажмите на три точки вверху справа;
- Найдите элемент «Стоп»;
- Вернитесь в чат и нажмите на три точки вверху справа;
- Выберите «Удалить чат»;
- Подтвердите действие.