Что такое бот
1. Что такое бот, как его понять изнутри
Если описать внутреннее представление бота в двух словах, то бот (в рамках этого конструктора) это совокупность именованных страниц с текстом и кнопками. Текст и кнопки на экране вашего клиента - это результат выполнения какой либо команды. Имя блока текста совпадает с менем команды для простоты восприятия.
Если оглядываться на разные библиотеки, которые используют программисты, то подходы к написанию бота будут разными. Наиболее часто используется функцональный подход, когда мы пишем функцию команды и к ней функцию обработчика. Но этот подход надо попытаться понять и в двух словах мне будет сложно объяснить что это. Мы не будем использовать это предствление бота.
Так давайте попытаемся понять - что такое бот. Посмотрим ссылку на любой сайт. После имени сайта вы видине несколько зачастую английских слов разделенных символом / (слеш), например, https://www.reg.ru/support в данном случае запись /support - это ничто иное как страница которую сайт вам должен показать. Не кажется ли вам, что это и есть команды ботам, которые мы используем в телеграме? Так вот бота можно представить как сайт. И когда вы пишете бота, то представьте, что вы пишете сайт. А что такое сайт - это совокупность отдельных страничек с ссылками-пероеходами. Адрес ссылки вы также прописываете на сайте как /help /support и т.д. Так вот в боте мы то же будем придерживаться этой системы - страницы с именем. Именем страницы и будет наша команда Например первая же страница любого бота это /start - совпадает с именем команды?
2. Пишем бота
Если мы уже поняли, что мы будем писать сайт, простите, бот, то мы будем писать каждую страничку отдельно. В любом боте точно так же это и реализовано. Ссылками перехода у нас будут инлайн кнопки под сообщением. Кнопки, которые вы часто видите под строкой ввода сообщения я намеренно использовать не буду. По мне они некрасивые, портят вид, портят единый стиль. Все можно сделать с инлайн кнопками.
Второй момент. По умолчанию интерфейс с такими инлайн кнопками расчитан на то, что у нас каждый раз меняется сообщение, меняется текст и новый состав кнопок. А значит нам надо в каждом экране (сообщении, блоке - можно по разному называть) надо ВСЕГДА предусматривать кнопки для возврата назад или перехода куда-нить дальше.
В ботах у которых есть и инлайн кнопки и кнопки внизу сообщения я очень часто видел сатуацию, когда серия диалогов заканчивалась и дальше мынажимаем инлайн кнопку, а ничего не происходит. Нам нужно после этого нажимать кнопку под сообщением для запуска новой цепочки диалога. А по сути получается, что программисты просто бросили ветку и не написали обработчик на законченном диалоге. С одной стороны правильно - пользователю больше нечего ответить, а с другой стороны выглядит как откровенный баг в боте. Ибо кнопка если есть, значит она должна что-то делать и точка.
Интерфейс данного конструктора лишен такого недостатка. Каждая кнопка у вас будет запускать команду (вида /команда), т.е. являться ссылкой на какой-то существующий (вами написанный) блок. А из него дальше и дальше. Как вы построите карту переходов зависит только от вашей фантазии.
3. Подготовка, ТЗ
Чтоб не путаться во время написания своего бота, настоятельно рекомендую взять листок бумаги и написать ТЗ
ТЗ - это некое волшебное слово, которое вам поможет значительно быстрее сделать своего бота.
ТЗ - это техническое задание. Нарисуйте диаграму бота со стрелками. В каждом блоке вы пишете какой текст будет выводиться. Стрелками вы соединяете свои блоки и вверху каждого блока вы пишете имя самого блока. Все имена блоков на английском языке без пробелов. Например имена могут быть help support menu backlog и т.д.
После вы соединяете стрелками блоки - это будут ваши переходы. Предположим стрелка идет в блок help, значит на самой стрелке подпишите help. оно вам поможет при формировании кнопок. Позже вы будете просто смотреть в какой блок приходит стрелка - так она и будет именоваться и, забегая вперед, скажу, что именно это имя и будет вписано в команду на кнопке. Как только вы построили диаграму - вы сделали 50% работы Вам останется только перенабрать тексты в бота.