kirill271099
@kirill271099
люблю прогить

@bot.callback_query_handler не работает. В чем проблема ???

import telebot
from telebot import types
from telebot.types import InlineKeyboardMarkup, InlineKeyboardButton
bot = telebot.TeleBot('мой токен');
@bot.message_handler(commands=['start'])
def start(message):
bot.send_message(message.chat.id, 'Здравствуйте, {0.first_name}! Я бот от Citylink.'.format(message.from_user, bot.get_me()),
parse_mode='html')

markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
item1 = types.KeyboardButton("СКУД")
item2 = types.KeyboardButton("Видеонаблюдение")
item3 = types.KeyboardButton("СКС")
item4 = types.KeyboardButton("Охрана - Пожарная сигнализация")

markup.add(item1, item2, item3, item4)
bot.send_message(message.chat.id, 'Выберите услугу:', reply_markup=markup)

@bot.message_handler(content_types=['text'])
def usl(message):

if message.text == 'СКУД':
bot.send_message(message.chat.id, 'Заявка отправлена. Скоро с Вами свяжется выполняющий.')
elif message.text == 'Видеонаблюдение':

markup = types.InlineKeyboardMarkup()
markup.row_width = 2
i1 = types.InlineKeyboardButton('Квартира', callback_data='kv')
i2 = types.InlineKeyboardButton('Офис', callback_data='of')
markup.add(i1, i2)
bot.send_message(message.chat.id, 'Выберите место поставки видеонаблюдения', reply_markup=markup)

def dalv(message):
bot.send_message(message.chat.id, 'Выбирите тип камеры:')
markup = types.InlineKeyboardMarkup()
markup.row_width = 3
ii1 = types.InlineKeyboardButton('IP', callback_data='ip')
ii2 = types.InlineKeyboardButton('Аналог', callback_data='an')
@bot.callback_query_handler(lambda usl: usl.data=="kv")
def callback_query(call):
if usl.data == "kv":
bot.answer_callback_query('Квартира. Ответ записан')
dalv()
elif usl.data == "of":
bot.answer_callback_query('Офис. Ответ записан.')
dalv()

@bot.callback_query_handler(func=lambda call: True)
def calltip(call):
if call.data == 'IP':
bot.callback_query_handler('Камера типа IP. Ответ записан.')
bot.callback_query_handler('Заявка отправлена. Скоро с Вами свяжется выполняющий.')
elif call.data == 'Аналог':
bot.send_message( 'Камера типа аналог. Ответ записан.')
bot.send_message('Заявка отправлена. Скоро с Вами свяжется выполняющий.')
bot.polling(none_stop=True)

Я делаю тг бота на питоне.Новичок в этом поэтому прошу объяснить подробно. Можете подсказать в чем ошибка?

Traceback (most recent call last):
File "E:\code\cityBot\bot.py", line 58, in
bot.polling(none_stop=True)
File "E:\code\cityBot\liber\lib\site-packages\telebot\__init__.py", line 664, in polling
self.__threaded_polling(non_stop, interval, timeout, long_polling_timeout, allowed_updates)
File "E:\code\cityBot\liber\lib\site-packages\telebot\__init__.py", line 726, in __threaded_polling
raise e
File "E:\code\cityBot\liber\lib\site-packages\telebot\__init__.py", line 686, in __threaded_polling
self.worker_pool.raise_exceptions()
File "E:\code\cityBot\liber\lib\site-packages\telebot\util.py", line 135, in raise_exceptions
raise self.exception_info
File "E:\code\cityBot\liber\lib\site-packages\telebot\util.py", line 87, in run
task(*args, **kwargs)
File "E:\code\cityBot\bot.py", line 43, in callback_query
if usl.data == "kv":
AttributeError: 'function' object has no attribute 'data'

Process finished with exit code 1
  • Вопрос задан
  • 2260 просмотров
Решения вопроса 1
kirill271099
@kirill271099 Автор вопроса
люблю прогить
@bot.callback_query_handler(func=lambda call:True)
def callgps(call):
if call.data == "kv":
bot.send_message(call.message.chat.id, text="Квартира. Ответ записан.")
elif call.data == "of":
bot.send_message(call.message.chat.id, text="Офис. Ответ записан.")
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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