@mapi
Увлекаюсь программированием на питоне.

По какой причине не отправляется сообщение по нажатию KeyboardButton в телеграмм-боте?

Нужно сделать функцию телеграмм-бота, которая при нажатии кнопки ("Игры") уточняет жанр игры, а затем на основе жанра предлагает игры. Не могу разобраться в чём проблема. Бот показывает все нужные кнопки, отправляет сообщение с уточнение, меняет кнопки(на "шутер", "онлайн", "выживание"), но после отправки жанра ничего не происходит.
код
#импорты
import telebot
import random
import requests
from bs4 import BeautifulSoup

token = ""#мой токен
bot = telebot.TeleBot(token)

#функция для отправки сообщений от бота
def message_(text, message):
    bot.send_message(message.chat.id, text)

#стартовый текст и кнопки
@bot.message_handler(commands=['start', 'help'])
def send_message(message):
    global ky1
    welcome_text = "Добро пожаловать в моего бота!"
    def ky1():
       global keyboard
       keyboard = telebot.types.ReplyKeyboardMarkup(row_width=2, resize_keyboard=True, one_time_keyboard=False)
       button1 = telebot.types.KeyboardButton("Стихотворение")
       button2 = telebot.types.KeyboardButton("Факт")
       button3 = telebot.types.KeyboardButton("Картинка")
       button4 = telebot.types.KeyboardButton("Стикер")
       button5 = telebot.types.KeyboardButton("Игры")
       keyboard.add(button1, button2, button3, button4, button5)
       bot.send_message(message.chat.id, welcome_text, reply_markup=keyboard)
    ky1()

#определение функций для кнопок
@bot.message_handler(content_types=["text"])
def answer(message):
    if message.text.strip() == "Факт":
        send_fact(message)
    elif message.text.strip() == "Стихотворение":
        send_poem(message)
    elif message.text.strip() == "Картинка":
        send_image(message)
    elif message.text.strip() == "Стикер":
        send_sticker(message) 
    elif message.text.strip() == "Игры":
        games_for_play(message)

#создание новых кнопок, для уточнения жанра игр
@bot.message_handler(commands=['games'])
def games_for_play(message):
    mess = "Какой жанр вы предпочитаете(Шутер, Песочница, Онлайн)?" 
    keyboard2 = telebot.types.ReplyKeyboardMarkup(row_width=2, resize_keyboard=True, one_time_keyboard=False)
    button1_ = telebot.types.KeyboardButton("Шутер")
    button2_ = telebot.types.KeyboardButton("Выживание")
    button3_ = telebot.types.KeyboardButton("Онлайн")
    keyboard2.add(button1_, button2_, button3_)
    bot.send_message(message.chat.id, mess, reply_markup=keyboard2)#скорее всего здесь и заканчивается код, потому что кнопки есть, а сообщений(советов) нет

#советы в какие игры поиграть, для определённого жанра
@bot.message_handler(content_types=["text"])
def games(message):
    if message.text.strip() == "Шутер":
        shooter(message)
    elif message.text.strip() == "Выживание":
        survival(message)
    elif message.text.strip() == "Онлайн":
        online(message)

#функции для отправки советов("Во что поиграть?")
@bot.message_handler(commands=[''])
def shooter(message):
    message_("'Fortnite', 'CS:GO', 'Half-Life Alyx'", message)

@bot.message_handler(commands=[''])
def survival(message):
    message_("'Minecraft', 'Terraria'", message)

@bot.message_handler(commands=[''])
def online(message):
    message_("'Fortnite', 'Minecraft', 'Teraria', 'CS:GO'", message) 

bot.infinity_polling()
  • Вопрос задан
  • 138 просмотров
Решения вопроса 1
@Denis4567
После этого хендлера
@bot.message_handler(content_types=["text"])
Оброботка других прекращается, т.к. этот ловит любое сообщение с типом данных text.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
23 нояб. 2024, в 01:31
1000 руб./за проект
23 нояб. 2024, в 00:16
2000 руб./за проект