Answer the question
In order to leave comments, you need to log in
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
> 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)
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question