@TellS

Как сделать чтобы при нажатии на кнопки появлялись другие кнопки в боте на питоне?

Мой код

import telebot
from telebot import types

bot = telebot.TeleBot('ТУТ ТОКЕН')


@bot.message_handler(content_types = ['text'])
def start(message):
    markup = types.ReplyKeyboardMarkup(resize_keyboard = True)
    butt1 = types.KeyboardButton('ПОЛУЧИТЬ ДЕНЬГИ')
    butt2 = types.KeyboardButton('‍КАНАЛ')

    markup.add(butt1, butt2)

    bot.send_message(message.chat.id, 'Начнем?, {0.first_name}'.format(message.from_user), reply_markup = markup)
    if message.text == 'ПОЛУЧИТЬ ДЕНЬГИ':
        bot.send_message(message.chat.id, 'Чтобы получить деньги тебе нужно просто проявить свою активность \n \n Копируй сообщения которое я скинул ниже и отправляй его разные группы, чаты и каналы!'.format(message.from_user), reply_markup = markup)
        bot.send_message(message.chat.id, 'ДЕНЬГИ АБСОЛЮТНО ВСЕМ\n\nt.me/whdengi_bot \n t.me/whdengi_bot \n t.me/whdengi_bot \n\n Все реально и без обмана')
        bot.send_message(message.chat.id, 'Если все сделал отправляй скрины админу - @didndc')
    elif message.text == '‍КАНАЛ':
        bot.send_message(message.chat.id, 'ССЫЛКА НА НАШ КАНАЛ - @TELEGRAM'.format(message.from_user), reply_markup = markup)

bot.polling(none_stop = True)
  • Вопрос задан
  • 1777 просмотров
Решения вопроса 1
@twistfire92
Python backend developer
Если будешь использовать обычные клавиатурные кнопки, то тут 2 варианта:
1. Тебе надо будет либо навесить отдельных хэндлеров под каждую кнопку
@bot.message_handler(func=lambda message: message.text == 'ПОЛУЧИТЬ ДЕНЬГИ')
def take_money(message):
    # Тут уже описываешь новые кнопки и отправляешь новое сообщение с этими кнопками

@bot.message_handler(func=lambda message: message.text == 'КАНАЛ')
def channel(message):
    # Аналогично предыдущей функции

ВАЖНЫЙ МОМЕНТ! Эти хэндлеры в коде должны быть выше твоего основного, иначе все твои нажатия будут в этот основной попадать

2. в этой же функции обрабатывать различные значения в message.text
@bot.message_handler(content_types = ['text'])
def start(message):
    if message.text == 'ПОЛУЧИТЬ ДЕНЬГИ':
       # Тут создаешь кнопки и отправляешь сообщение

    elif message.text == 'КАНАЛ':
        # Аналогично

    # elif <Условие>:
        # А это если у тебя еще какие-то кнопки надо будет обработать.
    # elif <Условие>:
    else:
        # Это если приходит какое-то любое сообщение

        markup = types.ReplyKeyboardMarkup(resize_keyboard = True)
        butt1 = types.KeyboardButton('ПОЛУЧИТЬ ДЕНЬГИ')
        butt2 = types.KeyboardButton('‍КАНАЛ')


А вы по сути одну и ту же разметку в каждое сообщение вставляете. Делайте новые кнопки и отправляйте с новым сообщением.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Atomnory
Тебе нужен Finite State Machine.
Не знаю есть ли такое в модуле telebot, который ты используешь.
Но в модуле aiogram есть. Почекай
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы