Создание меню/кнопок в pyTelegramBotAPI на основе SQL запроса
В данной статье планирую поделиться с вами своей наработкой, которая позволяет создавать меню и кнопки вашего Telegram бота на основе данных хранящихся в БД.
Реализовывать все это будем на Python и нам потребуются библиотеки:
sqlite3 — для работы с БД (устанавливать не нужно, поставляется в коробке с Питоном)
pyTelegramBotAPI — для создания Telegram бота (предварительно необходимо установить)
Представьте, что мы имеем файл базы данных «database.db» с таблицей, которая называется «create_menu«. Эта таблица хранит следующую информацию:
type_menu
order_num
btn_name
btn_callback
type_menu — название меню, к которому будет относиться данная кнопка
order_num — порядковый номер кнопки в меню (сверху вниз)
btn_name — текст, который будет отображаться на кнопке
btn_callback — данные, которые будут возвращены при нажатии на кнопку. Их будет отлавливать обработчик событий.
Ну что, теперь поехали!
Создадим класс CreateMenu и сразу инициализируем в нём путь к нашему файлу базы данных.
По умолчанию считаем, что файл БД находиться в одном каталоге с файлом программы, поэтому строим путь к нему используя os.getcwd() и os.path.join().
Теперь сделаем внутренний метод __connect() который будет отвечать за подключение к нашей БД с использованием библиотеки sqlite3.
Так же сделаем внутренний метод __select_button() который будет бегать в БД с SQL запросом и возвращать нам словарь (dict), где ключ (key) = название кнопки и значение (value) = callback data этой кнопки. Что бы этот метод не тащил абы чего, он будет принимать аргумент type_menu. Это позволит нам набирать кнопки под конкретное меню.
Думаю стоит объяснить, что за магия тут твориться.-
Подключаемся к БД (используя ранее заготовленный __connect())
Выполняем SQL запрос, который дословно можно перевести :
«Покажи мне «название кнопки» и «её callback» из таблицы create_menu где тип меню равен type_menu и отсортируй все это по order_num в порядке возрастания.
Создаем словарик в который будем записывать результат SQL запроса.
Пробегаемся в цикле по результату SQL запроса и добавляем новые записи в словарь.
Возвращаем из функции словарь.
Например если мы передадим в качестве аргумента «main» функция вернёт словарь: <'Купить': 'buy', 'Продать': 'sell', 'Помощь': 'help'>)
Ну и давайте напишем единственный метод в классе, который будет вызываться программистом. Назовем его create_menu() и как вы догадались он будет создавать меню.
Метод в качестве аргумента принимает тип меню (type_menu), которое мы хотим создать. Далее он с этим аргументам дёргает выше рассмотренный внутренний метод __select_button() и получает в свое распоряжение словарик из которого будет лепить меню.
По классике жанра, пробегает словарик в цикле и добавляет в меню (markup) кнопки, где текст кнопки — ключ словаря, а её обратный данные — значение из словаря.
Итоговый код выглядит следующим образом:
Теперь мы можем импортировать написанный нами класс в свой проект. Создать экземпляр класса CreateMenu и использовать его метод create_menu() для создания разного рода меню.
Примечание класс CreateMenu описывался мной в файле с именем db.py
Исходник проекта и файл базы данных из примера, вы найдёте у меня на GitHub
Гайд по ведению Телеграм
Создавая канал или группу прежде всего нужно определиться с тематикой, подготовить запоминающийся аватар, описание. Добавьте в описание коротко самое важное, ссылку на ваш сайт. Придумайте запоминающийся логин для ссылки.
Также вы должны знать отличие канала от группы.
✅ В канал можно пригласить только 200 первых человек, дальше люди смогут вступать в канал только сами по вашей ссылке.
✅ Канал имеет подписчиков, а группа участников. В канале нельзя посмотреть самих подписчиков, их профили и в каких ещё каналах человек состоит. В группе же можно зайти и посмотреть участников и состоит ли тот или иной участник в одной группе с вами.
✅ Telegram канал может иметь неограниченное количество участников, в то время как группа может иметь только не более 200.000 участников.
✅ В telegram-канале участники могут видеть старые посты по умолчанию. В группе администратор может закрыть просмотр старых постов или наоборот сделать их видимыми.
✅ В telegram-канале каждый может увидеть количество просмотров ваших постов, в то время как в группе просмотры постов участникам не видны.
✅ Когда в группу присоединяется новый участник, каждый из участников группы видит уведомление о вступлении если вы его заранее не удалили специальным Ботом. В telegram-канале при присоединении к каналу нового подписчика уведомления не видны.
✅ В telegram-канале подписчики не могут писать сообщения, они могут оставлять комментарии под постами только в том случае если вы подвязали к каналу группу и тогда у них будет кнопка прокомментировать. Вы можете закрыть эту возможность отвязав группу. В группе каждый может писать сообщения в чат, однако вы также можете закрыть эту возможность для участников. Можно сделать так что писать в группу смогут только администраторы, однако если вы закроете сообщение в группе то и комментарии к постам люди оставлять уже не смогут.
На самом деле я рекомендую из личного опыта создавать и группу и канал. У канала для администратора больше привилегий и возможностей. Удобнее вести именно канал, однако учитывая что на канал нельзя приглашать людей, а сейчас существует такой популярный метод раскрутки как инвайтинг, то необходимо иметь и группу тоже.
Как это работает у меня. У меня есть telegram-канал который я продвигаю с помощью специальных подборок, а также с помощью других своих социальных сетей и контента, и к этому telegram-каналу у меня привязана группа которую я продвигаю методом инвайтинга, то есть приглашаю в группу свою целевую аудиторию. Все посты которые я делаю в telegram-канале автоматически дублируется в мою группу, которая привязана к каналу. Таким образом у меня суммируются просмотры и реакции, это очень удобно.
Канал может быть публичным или частным.
На частный канал люди смогут подписаться только по специальной ссылке которую вы им отправите. Такой канал считается приватным и его не видно в поиске. Также вы можете сделать публичный канал, в этом случае вам нужно придумать уникальную ссылку логин для своего канала.
Заходим в Настройки > Тип канала.
Когда необходим приватный канал?
Например вы создаёте закрытый telegram-канал в котором планируете продавать какой-то обучающий материал, доступный только после оплаты.
В приватном канале вы также можете создавать дополнительные ссылки и контролировать вступления.
Вы можете создать персональную ссылку со сроком действия на 24 часа или на неделю, с количеством вступлений на 1 человека (или на 10 чел.), и отправить её нужному человеку, например тому, кто оплатил доступ. Когда человек присоединится по ссылке, ссылка станет недействительна. Вы можете отслеживать в настройках присоединения по этой ссылке.
Заходим в Настройки > Тип канала > Управление приглашениями > Создание ссылки.
В telegram-канале можно запретить копирование вашего контента.
На сегодняшний день Это самый эффективный способ защиты от копирования авторского контента. Например у вас уникальные видеоуроки и вы не хотите чтобы эта информация попала в интернет в свободный доступ. Вы можете запретить копирование на вашем канале и никто не сможет сохранить, скопировать или переслать ваше видео, ваш текст, ваше изображение. Это хороший способ защитить платный контент в закрытом канале.
Настройки > Тип канала > Запретить копирование
Вы можете привязать к каналу группу, чтобы под постами появилась кнопка «Прокомментировать».
Чтобы привязать группу к каналу зайдите в Настройки канала > Обсуждение и выберите заранее подготовленную группу. Также настройте кто может в эту группу писать.
Обязательно Включите реакции на вашем канале и в группе.
Чтобы люди могли реагировать на ваш контент — реакции это дополнительный способ взаимодействия с вашей целевой аудиторией. Откройте Настройки > Реакции и выберите ползунки нужных.
Администраторы канала и группы.
Заранее подумайте кто будет администрировать ваш канал или группу. Также вы можете добавить ботов в канал и в группу, которые помогут управлять контентом. Ниже приведу список полезных ботов помощников по ведению канала и группы.
Боты для управления сообществом:
Боты для удаления сервисных сообщений (вступил в группу, покинул группу):
Посмотрите небольшое видео, как добавлять ботов в группу/ канал:
Будьте внимательны, не давайте ботам лишние разрешения. Периодически заходите в список администраторов и проверяйте, чтобы там не было никого лишнего.
Вы можете делать отложенный постинг в самом канале или группе.
Для того чтобы сделать отложенный пост нужно выбрать картинку, написать текст и использовать долгое нажатие на кнопку отправки. У вас появится два варианта > отправить пост сейчас или > запланировать публикацию.
Вы выбираете время и дату когда должен выйти пост и он отправляется в отложенные публикации. Найти и отредактировать можно нажав внизу календарь с красной отметкой.
Отложенный постинг с помощью бота + делаем кнопку в закрепленном сообщении.
Вы можете делать отложенный постинг, планировать контент на месяц вперёд, прямо с телефона с помощью бота Телеграм. Я сама пользуюсь этим ботом, это очень удобно.
Также с помощью этого бота можно добавлять одну или несколько кнопок под постом со ссылками. Например, можно написать приветственное сообщение и добавить к нему кнопку Скачать какой-то гайд в подарок за подписку. Это пост отправьте через бота, а затем закрепите пост в самом канале. Так вверху, в закрепленом сообщении тоже появится кнопка скачать.
Вы можете закреплять нужное сообщение вверху канала.
Можно закрепить до 5 важных сообщений нажимая на закреплённое сообщение человек попадёт на нужный пост. Можно также скопировать ссылку на конкретный пост.
Вы можете редактировать текст внутри поста.
Это можно сделать только после публикации. Нажимаем на опубликованный пост > редактировать и можем начинать редактировать текст. Выберите фрагмент текста и нажмите на три точки, появится несколько вариантов: можно сделать шрифт жирным, курсивным, подчёркнутым, скрытым добавить к тексту ссылку и так далее.
Есть два способа создания удобной навигации. По хэштегам или по ссылками.
Посмотрите подробное видео, как создать навигацию на своём канале:
Как посмотреть статистику своего канала?
Нажмите на аватар канала > три точки > статистика.
В статистике канала есть расширенная информация по аудитории, по просмотрам и реакциям. В группе будет более урезанная статистика.
Как делиться файлами отправлять музыку и делать опросы на канале.
Нажмите на скрепку (вложение), вам откроется меню внизу.
Можно создать опрос, поделиться файлами или отправить музыку.
Выбирая отправить файл, можно отправить из галереи (качество фото будет сжато и испортится), а можно выбрать файл из внутреннего архива телефона и отправить без сжатия.
Создавая опрос помните, к нему нельзя прикрепить фото и потом нельзя отредактировать пост с опросом.
Загружать музыку можно прямо из Телеграм. Например, вы нашли в Телеграм классный канал с треками. Сохраните любой трек из этого канала к себе в загрузки, а затем вы сможете этот трек разместить в своём канале.
Также можно проводить онлайн трансляции на канале или делать их запланированными подписчики канала получат уведомления о том что вы планируете провести трансляцию это по принципу похоже с эфирами в Instagram.
Продвигать канал и группу можно разными способами:
- Взаимный пиар
- Участие в подборках каналов
- Делиться каналом в других социальных сетях
- Устраивать розыгрыши за подписку
- Делать рассылку по пиар чатам
- Закупка рекламы на бирже
- Покупка рекламы у блогеров
- Инвайтинг целевой аудитории
Что такое Telegram подборки и как в них попасть?
Telegram подборки — это своего рода взаимный PR. Это бесплатный способ продвижения вашего telegram-канала. Группу в подборки добавить нельзя, только telegram-канал.
Чтобы попасть в Telegram подборку зайдите в специального бота и добавьте туда свой телеграм-канал. Следуй инструкциям бота. В определённый день и время создаются подборки из разных telegram-каналов и в каждом из каналов размещается пост со ссылками на другие каналы. Такой автоматический взаимный PR получается.
Ниже приведу список известных мне Telegram подборок (ботов) в которые вы можете добавить свой канал если у вас больше 100 подписчиков и они живые. Подборки проверяют каналы на накрутку (будьте внимательны).
Телеграм боты с подборками для пиара:
Канал подборок @TgMegaVip и их бот @BondVipbot
Канал подборок @TgProfit и их бот @topMegaBot
Лучше выбрать какую-то одну подборку и не участвовать во всех сразу.
Продвижение группы методом инвайтинга.
Что такое инвайтинг?
Инвайтинг — это приглашения живых людей в вашу группу.
Приглашаются люди с помощью специальной программы и с покупных аккаунтов. Приглашения выполняются согласно лимитам и исходя из опыта, если все делать аккуратно, то никаких блокировок нет.
Инвайтинг возможен только в группу. В Телеграм канал инвайтить нельзя никак.
Для того, чтобы делать инвайтинг, необходимо иметь необходимые программы, скрипты, множество аккаунтов и технически это довольно сложно даже если вы пройдёте обучение.
Есть множество исполнителей, которые оказывают услугу Инвайтинга. Цены разные, но из-за трудозатратности метода и учитывая что приглашаются живые люди, цена подписчика выходит не дёшево. В среднем от 3х до 9и руб. за подписчика.
Когда заказываете инвайтинг, обратите внимание на то, что именно предлагает специалист. Никогда не соглашайтесь, если вам предлагают 1000 подписчиков за 1.5-2 рубля. Все, кто добросовестно делают инвайтинг, всегда берут деньги за количество приглашений, НЕ подписчиков. Так как исполнитель не может отвечать за то, сколько людей останется в вашей группе. Люди приглашаются живые, они имеют право отписаться и выйти из группы. А когда вам говорят, что приведут подписчиков — это скорее всего накрутка ботов. Будьте внимательны, эта услуга не может стоить дёшево в виду сложности метода и затрат на выполнение.
Если вам нужен инвайтинг в группу, вы можете подробно изучить информацию об этой услуге у меня. Опыт работы больше года, ответы на все ваши вопросы.
Как создать чат-бота или бота для канала в Телеграм: учимся создавать ботов, команды, меню, отложенные посты, опросы и включаем автопостинг из социальных сетей или rss-лент

Всем привет! Сегодня я расскажу вам о том, как создать бота в Телеграм и зачем это может понадобиться владельцу популярного канала. Сразу хочу успокоить – уметь программировать не нужно. Хотя, конечно, если вы заядлый программист, то флаг вам в руки. Говорят, это достаточно просто.
Итак, зачем же нужны боты в Telegram и как их создать новичку? Как настроить меню, добавить команды или активировать автопостинг из социальных сетей? Давайте разбираться.
Зачем нужны боты
Telegram — один из самых популярных мессенджеров в России, постепенно завоёвывающий любовь и признание во всём мире. Его создателем является Павел Дуров, некогда создавший социальную сеть ВКонтакте. Мессенджер обладает множеством функций, при этом он абсолютно бесплатный. Даже стикеры вы можете подключить на халяву или сделать самостоятельно.
Одной из уникальных и очень удобных фишек приложения считаются боты. Они служат для выполнения самых разных задач:
- Создания рассылки из социальных сетей;
- Украшения постов в чатах и каналах;
- Проведения опросов среди подписчиков;
- Для ответов на часто задаваемые вопросы;
- Показа новостей;
- Чтобы развлекать подписчиков.
Как видите, вариантов использования много, а ведь я назвал далеко не все. Но, могу вас заверить, без помощи бота создать по настоящему интересный и полезный канал, посты в котором будут привлекать пользователей и подталкивать их к подписке – невозможно.
Способы создания бота в Telegram
Всего существует два способа, как можно сделать помощника для чата или канала. Первый, как вы уже могли догадаться – для программистов. Добавлю только, что для работы придется воспользоваться Telegram API. Я в этом не силен, поэтому выбираю второй вариант. Он не требует никаких дополнительных навыков и вполне подходит новичкам.
Как создать
Для начала вам нужно найти @Manybot и подписаться на него, нажав кнопку «Запустить»:

Чтобы не париться с языком – выбираем «Русский»:

Нажимаем «Добавить нового бота»:

А теперь нужно следовать инструкции, которую пришлют в чат и подключить нового бота. Для этого нажимаем вот сюда:

Активируем его и щелкаем вот по этой команде:

Вводим имя (обязательно латиницей) и нажимаем отправить. Снова вводим название, но уже пользовательское (оно обязательно должно заканчиваться словом «bot»).

Рекомендую просто к уже придуманному имени добавить требуемое окончание.
Остается скопировать следующий API:

И прислать его Manybot:

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

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

- скопировать «Имя пользователя»;

- зайти в канал, нажать троеточие справа сверху и щелкнуть «Добавить участников». Вставить скопированное название и нажать «Добавить».

Для чата процедура идентичная. Ну, если разработчики ничего не изменили. А теперь давайте научимся подключать различные команды.
Прописываем команды
Я не буду особо заморачиваться и сделаю что-нибудь простенькое. Вам главное запомнить принцип, а дальше все пойдет, как по маслу.
Чтобы прописать команду нужно:
- набрать /commands и нажать «Создать команду»;

- ввести подходящее название (обязательно на латинице, иначе не примет), отправить его и подобрать подходящий ответ: сообщение, картинку, файлик, после чего нажимаем «Сохранить»;

Довольно просто, правда? Теперь, когда люди активируют вашего бота и пропишут команду, получат в ответ заранее созданное сообщение.
Чтобы отредактировать уже созданную команду необходимо вернуться в главное меню и зайти в раздел «Пользовательские команды», после чего выбрать нужную:

Как создать меню в боте
Если есть время и желание довести своё творение до ума, то создание красивого меню в вашем боте – отличный выбор. Для этого нужно:
- зайти в «Пользовательские команды» и нажать «Настроить гл. меню»;

- нажать «Добавить»;

- выбрать команду из списка и ввести название, под которым она будет отображаться;

- на этом все. Данный пункт появится в меню и любой пользователь бота сможет им воспользоваться.
Если вам вдруг приспичило настроить внешний вид, переименовать кнопку или вовсе её удалить, нужно снова зайти в «Команды» и «Настройки меню», после чего нажать на желаемую клавишу. Дальше дело техники, а все возможные варианты настройки вам сразу же покажут:

Полезные фишки
А сейчас я продемонстрирую три крутые фишки, которыми можно воспользоваться после создания бота в Телеграме.
Как включить автопостинг из соц сетей
Первая и самая интересная – автопостинг из социальных сетей (ВК, Twitter, YouTube) или RSS ленты в канал или чат в Telegram. Она позволяет сэкономить уйму времени и упростить продвижение канала. Чтобы её включить, нужно:
- ввести специальную команду: /autoposting и выбрать источник, откуда будем брать посты;

- опубликовать ссылку на страницу;

Всё, теперь новые записи в соц. сетях или rss ленте будут автоматически дублироваться в чате или канале.
Для ВКонтакте нужна именно публичная страница, с личной такое не прокатит.

Учимся делать отложенные посты
Еще одна полезная функция – отложенные посты. Довольно часто бывают ситуации, когда времени на публикацию нет, а сделать это просто необходимо. Чтобы не забивать голову решением подобных проблем, в Telegram можно заранее продумать темы публикаций, подготовить материал и воспользоваться ботом, который сам все отправит в указанное время.
Итак, для начала вам нужно ввести /newpost или выбрать «Отправить новое сообщение» в меню. Придумываем текст, добавляем картинки или музыку, отправляем всё это боту и нажимаем «Отложить».

Выскочит оповещение, после чего нужно указать текущее время (настраиваем часовой пояс – это делается один раз):

Теперь нужно указать время публикации. Для этого выбираем день и отправляем точное время, нажимаем «Сохранить»:

Готово! В нужный час публикация отобразится у всех пользователей.
Как создать опрос
Последняя важная функция, которую я сейчас разберу – опросы. Ну, тут без комментариев, сами должны понимать, зачем они нужны и как ими воспользоваться для продвижения канала. Моё дело рассказать, как их создать.
Для начала нажмите «Пользовательские команды» и «Создать». Введите и отправьте название:

Нажмите «Добавить вопрос» и выберете его тип (я выбрал обычный):

Введите и отправьте вопрос:

Нажмите сохранить и всё, готово. Кстати, чтобы проверить ответы, вернитесь в главное меню и нажмите «Ответы на формы», после чего найдите и выберете нужную:

Заключение
Как видите, создать бота в Телеграм достаточно просто и быстро. Они полезные, а когда дело доходит до украшения публикаций, проведения опросов и улучшения администрирования – становятся просто незаменимой палочкой выручалочкой в руках админа.
Меню. Создаём меню с кнопками в telegram-боте конструктора Fleep.Бизнес
Fleep.бизнес — конструктор ботов для тех, кто хочет зарабатывать больше.
Если перейти по ссылке t.me/FleepBot , то можно создать свой первый бот бесплатно.
Меню в ботах Fleep.Бизнес даёт нам огромные возможности. Более того, без меню бизнес-бот практически теряет свою актуальность. Давайте глянем, как это работает начиная с простых меню и заканчивая сложными. И посмотрим, как их создать и привязать к сообщениям бота, как связывать с товарами, если у вас интернет-магазин. И узнаем, где ещё можно использовать меню с кнопками, для заработка.
Меню — это набор кнопок, которые ведут в другие меню с кнопками, или присылают в ответ на нажатие контент (сообщение, фото, видео, стикер и т.д.), или отправляют по ссылке внутри бота (UTM-метки) или за его пределы (в каналы и чаты, на сайты в интернете).
В первую очередь это может быть простое меню, которое ведёт пользователя по вашему боту и отвечает на его вопросы. Такой пример я показал на картинке в заголовке этой статьи. Мой бот t.me/culturenetbot при старте выдаёт именно это меню. Кнопки такого меню называются: "обычные". Обычные кнопки находятся внизу экрана под строкой для ввода сообщений.
Кнопки в меню, которые прикрепляются к сообщениям бота — называются inline-кнопки. Они выглядят вот так:
В меню может быть минимум одна кнопка и максимум 9 9 кнопок
Меню могут быть "вложенным". Это когда при нажатии какой-то из кнопок в меню бот показывает новое меню. С помощью вложенных меню создают интернет магазины и в оронк и продаж, примерно как на картинке ниже:
Воронка продаж начинается с первого меню, с пары-тройки кнопок. После нажатия одной из кнопок пользователь получает сообщение и с ним новое меню с кнопками. Каждая кнопка ведёт покупателя и пользователя бота в своё новое меню. Так до тех пор пока ваша воронка не заканчивается.
Преимущество такой ветвистости в том, что вы ведёте клиента туда, куда он хочет и в итоге продаёте ему. А ещё можете отследить всех пользователей на любом этапе. Вы увидите какие кнопки нажимали ваши пользователи и сможете разослать предложения только им — тем, кто нажимал конкретные кнопки. Но об этом позже, а сейчас продолжим уточнять, как создать меню с кнопками.
Итак, мы увидели, что меню — это набор кнопок, которые мы в него добавляем. Таких наборов мы можем сделать около сотни. В каждый набор можно добавить до 100 кнопок, если это нам нужно, конечно.
Любое меню, которое вы создадите существует само по себе и поначалу ни к чему не прикреплено. Оно просто существует в разделе "Меню" пока вы сами не укажете, где его показать.
Но "Главного меню" уже есть по умолчанию в боте. В "Главном меню" со старта нет кнопок. Как только вы добавите кнопки в "Главное меню" — это меню будет прикрепляться к первому сообщению, которое получит пользователь.
Давайте глянем как это выглядит в боте для вас, как творца бота, отправляем боту команду — /start:
После старта своего бизнес-бота получаем кнопку "Настройки": жмём её
Видим по умолчанию только
"Главное меню"
"Главное меню" есть всегда. Его нельзя переименовать или удалить. Оно просто есть. Как пустой кувшин для компота. Пока мы кувшин не наполним, то разливать из него нечего. Он просто стоит и ждёт когда его наполнят, чтоб появится на столе.
Так и меню — пока в нём нет кнопок, то оно не может нигде появиться. Оно ждёт, пока вы его наполните кнопками и прикрепите куда вам нужно. Это касается любого меню, не только "главного меню".
Но у "главного меню" есть своя особенность: как только мы добавим в него хотя бы одну кнопку, то его можно не только привязать куда захотите, но также оно появится при первом старте бота пользователем. Вот что написано в нашем конструкторе после того как мы нажмём кнопку "Главное меню" с предыдущей картинки:
Собственно, это то самое место, где мы уже можем создать кнопки в "Главном меню". Но перед тем, как создать кнопки давайте посмотрим как создать наше новое меню, которое понадобится позже.
Представьте, что вы хотите пить и у вас есть компот. Компот не может быть сам по себе, он всегда где-то хранится. Вы хотите пить — наливаете из кувшина. Но перед тем как налить компот в стакан из кувшина вы наполнили этот кувшин. Согласитесь, трудно наливать компот из пустого кувшина, как и без кувшина налить компот в стакан.
С кнопками такая же ситуация. Кнопки это наш компот и есть.
Перед тем как привязать какую-то кнопку к нужному сообщению или товару (налить компот), вам всегда понадобится создать меню (взять пустой кувшин), потом в меню создать кнопку (наполнить кувшин компотом) и только уже после привязать это меню к нужному сообщению или товару (налить из кувшина в стакан).
Вообще, когда собираешь бот, лучше продумать заранее структуру бота и записать всё это отдельно. После чего легко увидеть сколько меню понадобиться, какие в них будут кнопки и как они должны быть расположены (обычные — снизу или inline — под сообщением или под товарами).
Но сейчас мы хотели увидеть процесс рождения меню. И начнём, как обычно: /start -> Настройки -> Меню -> ➕: