Задать вопрос
@nwtseo

Как на телеграф js при нажатии на кнопку дать команду боту?

640f92333c633702260503.png

фраемворк telegraf js , кнопки не инлайн , сейчас возвращает текст
  • Вопрос задан
  • 1983 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 3
@StepsOnes
Для того чтобы дать команду боту при нажатии на кнопку в Telegraf.js, нужно использовать метод ctx.telegram.command

Вот пример, как это можно сделать:

bot.action('my_button', (ctx, next) => {
  ctx.reply('Вы нажали на кнопку!');
  ctx.telegram.command('/my_command', ctx.state);
});


В данном примере, при нажатии на кнопку с идентификатором my_button бот отправляет пользователю ответ Вы нажали на кнопку! и выполняет команду /my_command.

Обратите внимание, что вторым параметром метода ctx.telegram.command передаётся объект ctx.state который содержит информацию о контексте запроса (например, идентификатор пользователя). Если необходимо передать какие-то дополнительные параметры, можно использовать другой объект или добавить нужные свойства в ctx.state.

Также стоит учитывать, что команда будет выполнена только если она зарегистрирована в боте. Поэтому перед использованием ctx.telegram.command нужно добавить обработчик для этой команды с помощью метода bot.command
Ответ написан
Комментировать
@nwtseo Автор вопроса
64102caadd657527710666.png
сделал как вы и говорили, но почему то всё так же не работает(
Ответ написан
Комментировать
@Fellow_Fiend
Не инлайн кнопки не могут возвращать callback_data, и наоборот, инлайновые кнопки не могут возвращать текст.
Про инлайн кнопки
Про обычные кнопки

Поэтому вам нужно изменить тип кнопок в клавиатуре и начать обрабатывать с помощью
bot.command('command', callback) // вместо command - текст кнопки без /

либо
bot.on('text', callback) // и проверять не равно ли ctx.message.text нужному значению

либо
const { message } = require('telegraf/filters')

bot.on(message('text'), callback) // рекомендуемая версия предыдущего примера


Либо вы можете изменить тип клавиатуры на инлайновую и обрабатывать уже callback_data, кодом, который предложил выше StepsOnes
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы