A
A
Arthur2021-06-25 09:23:46
Python
Arthur, 2021-06-25 09:23:46

How to make other buttons appear when clicking on buttons in python bot?

My code

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)

Answer the question

In order to leave comments, you need to log in

2 answer(s)
M
Mikhail Krostelev, 2021-06-25
@TellS

If you use regular keyboard buttons, then there are 2 options:
1. You will either need to attach separate handlers for each button

@bot.message_handler(func=lambda message: message.text == 'ПОЛУЧИТЬ ДЕНЬГИ')
def take_money(message):
    # Тут уже описываешь новые кнопки и отправляешь новое сообщение с этими кнопками

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

IMPORTANT POINT! These handlers in the code must be higher than your main one, otherwise all your clicks will fall into this main one
2. in the same function, process different values ​​in 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('‍КАНАЛ')

And you essentially insert the same markup into each message. Make new buttons and send with a new message.

A
Atomnory, 2021-06-25
@Atomnory

You need a Finite State Machine.
I don't know if there is such a thing in the telebot module you are using.
But in the aiogram module there is. Pochekay

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question