B
B
Bogdan Serebryanskiy2021-10-03 17:19:28
Python
Bogdan Serebryanskiy, 2021-10-03 17:19:28

How can I tell the user in the telegram bot that he should click on the buttons?

I am using the pyTelegramBotAPI library. I tried to put else at the end, but the bot said: "Please click on the buttons", even when I actually clicked on the buttons.

import telebot
import config

from telebot import types

bot = telebot.TeleBot(config.TOKEN)

@bot.message_handler(commands=['start'])
def welcome(message):

    # keyboard
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    item1 = types.KeyboardButton("Математика")
    item2 = types.KeyboardButton("Русский")
    item3 = types.KeyboardButton("Лит-ра/Родная Лит-ра")
    item4 = types.KeyboardButton("История")
    item5 = types.KeyboardButton("Английский(Группа 1)")
    item6 = types.KeyboardButton("Английский(Группа 2)")
    item7 = types.KeyboardButton("Физ.Ра/Секция")
    item8 = types.KeyboardButton("География")
    item9 = types.KeyboardButton("ОДНКР")
    item10 = types.KeyboardButton("Биология")
    item11 = types.KeyboardButton("Информатика(Группа 1)")
    item12 = types.KeyboardButton("Информатика(Группа 2)")
    item13 = types.KeyboardButton("Музыка")
    item14 = types.KeyboardButton("ИЗО")
    item15 = types.KeyboardButton("Технология(Девочки)")
    item16 = types.KeyboardButton("Технология(Мальчики)")

    markup.add(item1, item2, item3, item4, item5, item6, item7, item8, item9, item10, item11, item12, item13, item14, item15, item16)

    bot.send_message(message.chat.id, "Добро пожаловать, <b>{0.first_name}</b>!\nЯ - <b>{1.first_name}</b>, помогу тебе с записью ДЗ. Я тебе скажу ДЗ, а ты пообещай что будешь записывать!".format(message.from_user, bot.get_me()),
        parse_mode='html', reply_markup=markup)

@bot.message_handler(content_types=['text'])
def lalala(message):
    if message.chat.type == 'private':
        if message.text == 'Математика':
            bot.send_message(message.chat.id, 'Параграф 4 учить РТ 3')
        elif message.text == 'Русский':
            bot.send_message(message.chat.id, 'Здесь будет ДЗ по русскому')
        if message.text == 'Лит-ра/Родная Лит-ра':
             bot.send_message(message.chat.id, 'Здесь будет ДЗ по литературе')
        elif message.text == 'История':
            bot.send_message(message.chat.id, 'Здесь будет ДЗ по истории')
        if message.text == 'Английский(Группа 1)':
             bot.send_message(message.chat.id, 'Здесь будет ДЗ по группе Григорьевны')
        elif message.text == 'Английский(Группа 2)':
            bot.send_message(message.chat.id, 'Здесь будет ДЗ по группе Ралько')
        if message.text == 'Физ.Ра/Секция':
             bot.send_message(message.chat.id, 'Принести спортивную форму')
        elif message.text == 'География':
            bot.send_message(message.chat.id, 'Здесь будет ДЗ по географии')
        if message.text == 'ОДНКР':
             bot.send_message(message.chat.id, 'Здесь будет ДЗ по ОДНКР')
        elif message.text == 'Биология':
            bot.send_message(message.chat.id, 'Здесь будет ДЗ по биологии')
        if message.text == 'Литература':
             bot.send_message(message.chat.id, 'Здесь будет ДЗ по литературе')
        elif message.text == 'Информатика(Группа 1)':
            bot.send_message(message.chat.id, 'Здесь будет ДЗ по информатике(Группа 1)')
        if message.text == 'Информатика(Группа 2)':
             bot.send_message(message.chat.id, 'Здесь будет ДЗ по информатике(Группа 2)')
        elif message.text == 'Музыка':
            bot.send_message(message.chat.id, 'Здесь будет ДЗ по музыке')
        if message.text == 'ИЗО':
             bot.send_message(message.chat.id, 'Здесь будет ДЗ по ИЗО')
        <b>elif message.text == 'Технология(Девочки)':
            bot.send_message(message.chat.id, 'Здесь будет ДЗ по технологии(девочки)')
        if message.text == 'Технология(Мальчики)':
             bot.send_message(message.chat.id, 'Здесь будет ДЗ по технологии(мальчики)')    
        else:
            bot.send_message(message.chat.id, 'Пожалуйста, нажми на кнопки')     </b>
       
# RUN
bot.polling(none_stop=True)

Answer the question

In order to leave comments, you need to log in

2 answer(s)
X
xilysh, 2021-10-03
@bogdanihoor4

Why alternate if and elif when you can just use elif each time

V
Vindicar, 2021-10-03
@Vindicar

> if message.text == 'Tech(Boys)':
Did you mean elif? You generally have quite a lot of elif missing.
In general, I would advise using a dictionary.

#код неполный! вставишь эти фрагменты в свой самостоятельно
#все задания описаны тут
tasks = {
  'Математика': 'Параграф 4 учить РТ 3',
  #ну и так далее.
}
#делаем кнопки
buttons = [types.KeyboardButton(name) for name in tasks] #по кнопке на каждое задание
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
markup.add(*buttons) #добавить все элементы списка buttons, как если бы мы написали их по одному

#Проверка полученной кнопки
if message.chat.type == 'private':
    task = tasks.get(message.text, None) #ищем текст, соответствующий кнопке
    if task is None: #не нашли
        bot.send_message(message.chat.id, 'Пожалуйста, нажми на кнопки')
    else:
        bot.send_message(message.chat.id, task)

And no stairs if-elif

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question