Не отображается клавиатура телеграм бота

Pomogite_pg_croki_goryat

Новичок
Пользователь
Дек 23, 2021
4
0
1
  1. Указать свою операционную систему:Windows
  2. Указать версию Python 3.10
  3. Укажите версию библиотек с которыми работаете, вставьте в спойлер вывод команды pip list pyTelegramBotAPI
  4. Вставьте фрагмент кода который у вас имеется на данный момент.
  5. Python:
    # Подключаем модуль случайных чисел
    import random
    # Подключаем модуль для Телеграма
    import telebot
    # Указываем токен
    bot = telebot.TeleBot('пвыпвыиыврртырнц')
    # Импортируем типы из модуля, чтобы создавать кнопки
    from telebot import types
    # Заготовки для трёх предложений
    
    @bot.message_handler(content_types=['text'])
    def get_text_messages(message):
      if message.text == "Привет":
          bot.send_message(message.from_user.id, "Привет, сейчас я расскажу тебе гороскоп на сегодня.")
      elif message.text == "/help":
          bot.send_message(message.from_user.id, "Напиши Привет")
      else:
          bot.send_message(message.from_user.id, "Я тебя не понимаю. Напиши /help.")
    
    first = ["Сегодня — идеальный день для новых начинаний.","Оптимальный день для того, чтобы решиться на смелый поступок!","Будьте осторожны, сегодня звёзды могут повлиять на ваше финансовое состояние.","Лучшее время для того, чтобы начать новые отношения или разобраться со старыми.","Плодотворный день для того, чтобы разобраться с накопившимися делами."]
    second = ["Но помните, что даже в этом случае нужно не забывать про","Если поедете за город, заранее подумайте про","Те, кто сегодня нацелен выполнить множество дел, должны помнить про","Если у вас упадок сил, обратите внимание на","Помните, что мысли материальны, а значит вам в течение дня нужно постоянно думать про"]
    second_add = ["отношения с друзьями и близкими.","работу и деловые вопросы, которые могут так некстати помешать планам.","себя и своё здоровье, иначе к вечеру возможен полный раздрай.","бытовые вопросы — особенно те, которые вы не доделали вчера.","отдых, чтобы не превратить себя в загнанную лошадь в конце месяца."]
    third = ["Злые языки могут говорить вам обратное, но сегодня их слушать не нужно.","Знайте, что успех благоволит только настойчивым, поэтому посвятите этот день воспитанию духа.","Даже если вы не сможете уменьшить влияние ретроградного Меркурия, то хотя бы доведите дела до конца.","Не нужно бояться одиноких встреч — сегодня то самое время, когда они значат многое.","Если встретите незнакомца на пути — проявите участие, и тогда эта встреча посулит вам приятные хлопоты."]
    # Метод, который получает сообщения и обрабатывает их
    @bot.message_handler(content_types=['text'])
    def get_text_messages(message):
        # Если написали «Привет»
        if message.text == "Привет":
            # Пишем приветствие
            bot.send_message(message.from_user.id, "Привет, сейчас я расскажу тебе гороскоп на сегодня.")
            # Готовим кнопки
            keyboard = types.InlineKeyboardMarkup()
            # По очереди готовим текст и обработчик для каждого знака зодиака
            key_oven = types.InlineKeyboardButton(text='Овен', callback_data='zodiac')
            # И добавляем кнопку на экран
            keyboard.add(key_oven)
            key_telec = types.InlineKeyboardButton(text='Телец', callback_data='zodiac')
            keyboard.add(key_telec)
            key_bliznecy = types.InlineKeyboardButton(text='Близнецы', callback_data='zodiac')
            keyboard.add(key_bliznecy)
            key_rak = types.InlineKeyboardButton(text='Рак', callback_data='zodiac')
            keyboard.add(key_rak)
            key_lev = types.InlineKeyboardButton(text='Лев', callback_data='zodiac')
            keyboard.add(key_lev)
            key_deva = types.InlineKeyboardButton(text='Дева', callback_data='zodiac')
            keyboard.add(key_deva)
            key_vesy = types.InlineKeyboardButton(text='Весы', callback_data='zodiac')
            keyboard.add(key_vesy)
            key_scorpion = types.InlineKeyboardButton(text='Скорпион', callback_data='zodiac')
            keyboard.add(key_scorpion)
            key_strelec = types.InlineKeyboardButton(text='Стрелец', callback_data='zodiac')
            keyboard.add(key_strelec)
            key_kozerog = types.InlineKeyboardButton(text='Козерог', callback_data='zodiac')
            keyboard.add(key_kozerog)
            key_vodoley = types.InlineKeyboardButton(text='Водолей', callback_data='zodiac')
            keyboard.add(key_vodoley)
            key_ryby = types.InlineKeyboardButton(text='Рыбы', callback_data='zodiac')
            keyboard.add(key_ryby)
            # Показываем все кнопки сразу и пишем сообщение о выборе
            bot.send_message(message.from_user.id, text='Выбери свой знак зодиака', reply_markup=keyboard)
        elif message.text == "/help":
            bot.send_message(message.from_user.id, "Напиши Привет")
        else:
            bot.send_message(message.from_user.id, "Я тебя не понимаю. Напиши /help.")
    # Обработчик нажатий на кнопки
    @bot.callback_query_handler(func=lambda call: True)
    def callback_worker(call):
        # Если нажали на одну из 12 кнопок — выводим гороскоп
        if call.data == "zodiac":
            # Формируем гороскоп
            msg = random.choice(first) + ' ' + random.choice(second) + ' ' + random.choice(second_add) + ' ' + random.choice(third)
            # Отправляем текст в Телеграм
            bot.send_message(call.message.chat.id, msg)
    # Запускаем постоянный опрос бота в Телеграме
    bot.polling(none_stop=True, interval=0)
 
Последнее редактирование:

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Не отображается клавиатура телеграм бота
Не отображается потому что не происходит вызова метода, который ее показывает. Так как весь текст перехватывает первый метод:
Python:
@bot.message_handler(content_types=['text'])
def get_text_messages(message):
  if message.text == "Привет":
      bot.send_message(message.from_user.id, "Привет, сейчас я расскажу тебе гороскоп на сегодня.")
  elif message.text == "/help":
      bot.send_message(message.from_user.id, "Напиши Привет")
  else:
      bot.send_message(message.from_user.id, "Я тебя не понимаю. Напиши /help.")
Если его изменить так чтобы он вызывался только по определенной команде (например, /start), то меню будет отображаться:
Python:
@bot.message_handler(commands=["start"])
def get_text_messages(message):
        bot.send_message(message.from_user.id, "Привет, сейчас я расскажу тебе гороскоп на сегодня.")
        bot.send_message(message.from_user.id, "Напиши Привет")
 

Форум IT Специалистов