Задать вопрос
@Pus1st

Почему не работает bot.callback_query_handler?

Всем привет.
Пытаюсь создать бот для опросов, но сразу всплывают подводные камни, а именно:

1. Почему последняя функция(def call_opros(call)) не реагирует на нажатие кнопки? нашел метод register_next_step_handler, но с ним так же не получилось.
2. Как реализовать автопостинг в группу, как в Bot conroller?
3. Как реализовать выбор правильного/неправильного ответа?
Буду рад любой помощи, заранее спасибо.

КОД:

import telebot
import config
from telebot import types
bot = telebot.TeleBot(config.TOKEN)

@bot.message_handler(commands=["start"])

def start(message):
    key = types.InlineKeyboardMarkup()
    key_start = types.InlineKeyboardButton(text="Создать опрос",callback_data="first")
    key.add(key_start)
    mess = "Привет, этот бот умеет создавать опросы"
    bot.send_message(message.chat.id, mess, reply_markup=key)


@bot.callback_query_handler(func=lambda call:True)

def call_opros(call):
    if call.data == "first":
        bot.send_message(call.message.chat.id, text="Введите свой вопрос")


@bot.message_handler(content_types=["text"])

def question(message):
    key = types.InlineKeyboardMarkup()
    key_v = types.InlineKeyboardButton(text="Добавить варианты ответов", callback_data="sec")
    key.add(key_v)
    mess = "Отлично, Ваш вопрос:\n" + message.text + "\nТеперь добавьте варианты ответов"
    msg=bot.send_message(message.chat.id, mess, reply_markup=key)
    bot.register_next_step_handler(msg, call_answer)


@bot.callback_query_handler(func=lambda call:True)

def call_answer(call):
    if call.data == "sec":
        bot.send_message(call.message.chat.id, text="Пришлите свои варианты ответа в столбик")



bot.polling(none_stop=True)
  • Вопрос задан
  • 5179 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
@Pus1st Автор вопроса
С первым наконец получилось. Первый обработчик все перетягивает на себя, если правильно понял.
вот код

@bot.callback_query_handler(lambda first: first.data=="first")

def call_opros(first):
    if first.data == "first":
        bot.send_message(first.message.chat.id, text="Введите свой вопрос")

Со вторым аналогично. Как именно работают параметры, еще не до конца понял, может кто пояснит.
Ответ написан
@Aruy137
Необходимо уточнить в теле @bot.callback_query_handler(lambda first: True) какое значение должна обрабатывать данная функция, наподобие if.
lambda first: first.data=="то, что должна она обрабатывать"
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы