bogdanihoor4
@bogdanihoor4
Java programmer

Как мне сообщить пользователю в телеграмм боте, что он должен нажать на кнопки?

Использую библиотеку pyTelegramBotAPI. Я пробовал ставить else в конце, но бот писал: "Пожалуйста, нажми на кнопки", даже когда я собственно говоря и нажимал на кнопки.

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)
  • Вопрос задан
  • 174 просмотра
Решения вопроса 1
@xilysh
А зачем чередовать if и elif, если можно просто использовать каждый раз elif
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
> if message.text == 'Технология(Мальчики)':
Имел ввиду elif? У тебя вообще довольно много elif пропущено.

Вообще я бы посоветовал использовать словарь.
#код неполный! вставишь эти фрагменты в свой самостоятельно
#все задания описаны тут
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)

И никакой лестницы if-elif
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
01 мая 2024, в 02:11
5000 руб./за проект
01 мая 2024, в 00:29
2000 руб./за проект
01 мая 2024, в 00:20
15000 руб./за проект