Как исправить ситуацию, когда требуется повторное нажатие кнопки?

  • 31 августа 2023 г. 18:06
Ответы на вопрос 1
Чтобы убрать необходимость нажатия на кнопку "Вики" перед каждым новым запросом, можно изменить код следующим образом:

```python
import telebot

bot = telebot.TeleBot('your_bot_token')

@bot.message_handler(content_types=['text'])
def get_text_message(message):
    if message.text == 'Поздороваться':
        markup = telebot.types.ReplyKeyboardMarkup(resize_keyboard=True)
        btn1 = telebot.types.KeyboardButton('Вики')
        markup.add(btn1)
        bot.send_message(message.from_user.id, 'Задайте вопрос', reply_markup=markup)
        bot.register_next_step_handler(message, handle_text)
    else:
        bot.send_message(message.chat.id, 'Отправьте мне любое слово, и я найду его значение на Wikipedia')

def handle_text(message):
    if message.text == 'Вики':
        bot.send_message(message.chat.id, 'Введите запрос для поиска на Wikipedia:')
        bot.register_next_step_handler(message, handle_wiki_search)
    else:
        bot.send_message(message.chat.id, getwiki(message.text))

def handle_wiki_search(message):
    bot.send_message(message.chat.id, getwiki(message.text))

def getwiki(query):
    # ваша функция для получения данных из Википедии
    pass

bot.polling(none_stop=True)
```

В этом коде мы добавили отдельную функцию `handle_text`, которая будет обрабатывать все текстовые сообщения после нажатия на кнопку "Вики". Внутри этой функции мы проверяем, была ли нажата кнопка "Вики". Если да, то мы просим пользователя ввести запрос для поиска на Wikipedia и регистрируем следующий обработчик `handle_wiki_search`. Если кнопка не была нажата, то мы передаём текстовое сообщение в функцию `getwiki`.

Таким образом, теперь пользователю больше не нужно нажимать кнопку "Вики" перед каждым новым запросом.
Похожие вопросы