Кнопки снизу

Материал из wiki-MyMakerBot
Версия от 09:15, 29 мая 2019; Sergahell (обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
{key l=10 t='🔙 Главное меню' c='/about'}
{tg_sendMessage text='Привет' line_keys=1}
{key_clear}

<b>Добро пожаловать </b>

{key l=10 t='📌 О конструкторе' c='/about'}
{key l=10 t='🗄 Все функции' c='/functions'}


вот такой пример!!! в tg_sendMessage появился параметр line_keys если он равен 1, то ваши набранные с помощью keys кнопки будут под строкой ввода. Если он равен -1, то будет послана команда, вернее сообщение с командой, очистить кнопки

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

И второй побочный эффект. Я и раньше говорил, что эти кнопки ущербные, и сейчас не отказываюсь от этих слов. Они ущербные и для использования в динозавро-ботах только. Обработать их нормально на уровне ядра конструктора не получится. А потому чтоб обработать ту же самую кнопку "В главное меню" вам надо завести экшн, который будет проверять наличие сообщение со строки ввода и что-то вызывать.

например так

{if isset($argv[1])}
    {if ($data.fulltext == 'Главное меню')}
      {import c='/start'}
    {/if}
{/if}


и вызывать такой метод из каждого своего экшена

{import c='/my_old_keys'}


Итог: да, визуально они есть, но в отличии от инлайна они доставят вам больше геморроя. Потому сам телеграм очень быстро сделал инлайн кнопки. Но вот люди, которые писали библиотеки попросту забили на обновления. А текущие многие горе-программисты ботов не умеют писать свои библиотеки и используют готовые библиотеки для динозавров.


Единственное для чего нужны кнопки снизу строки ввода, так это запросить локацию или телефон Смотрим пример, тут все понятно

{if count($argv)>1}
{$argv|json}
{/if}
{key l=10 t='Телефон' c='#'}
{key l=10 t='Локацию' c='!'}
{tg_sendMessage text='Отправьте телефон или локацию' line_keys=1}