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

Почему callback_data не обрабатывается и не вызывается функция?

Здраствуйте я бы хотел задать вапрос:
Почему callback_data не обрабатывается и не вызывается функция?(если что это касается только для моего кода)
Вот мой код:
@bot.message_handler(content_types=['text'])
def mess(message):	

        elif message.text == "1":
        markup = types.InlineKeyboardMarkup(row_width=1)
	odin = types.InlineKeyboardButton("Готово", callback_data="odin")
        markup.add(odin)
	bot.send_message(message.chat.id, "Укажите свою настоящую Фамилию и Имя", reply_markup=markup)
        
@bot.callback_query_handler(func=lambda call: True)
def Inline_callback(call):
	try:
		if call.message:
        		if  call.data == "odin":
				if int(message.chat.id) == int(config.owner):
					try:
						chatId=message.text.split(': ')[0]
						text=message.text.split(': ')[1]
						bot.send_message(chatId, text)
					except:
						pass
				else:
					bot.send_message(config.owner, str(message.chat.id) + ': ' + message.text)
					bot.send_message(message.chat.id, '%s, wait please '%message.chat.username)


Мне нужно сделать так чтобы
Когда вы нажимаете на инлайн кнопку Готово call.data должно сработать
  • Вопрос задан
  • 238 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
elif message.text == "1":
elif без if
Ответ написан
Комментировать
SoreMix
@SoreMix Куратор тега Python
yellow
@bot.message_handler(content_types=['text'])
def mess(message):	

        elif message.text == "1":
        markup = types.InlineKeyboardMarkup(row_width=1)
  odin = types.InlineKeyboardButton("Готово", callback_data="odin")
        markup.add(odin)
  bot.send_message(message.chat.id, "Укажите свою настоящую Фамилию и Имя", reply_markup=markup)

  1. Стоит elif, где if?
  2. Нет отступа после elif
  3. Еще меньше отступа в создании клавиатуры
  4. Нет отступа в markup.add()
  5. bot.send_message


@bot.callback_query_handler(func=lambda call: True)
def Inline_callback(call):
  try:
    if call.message:
        		if  call.data == "odin":
        if int(message.chat.id) == int(config.owner):
          try:
            chatId=message.text.split(': ')[0]
            text=message.text.split(': ')[1]
            bot.send_message(chatId, text)
          except:
            pass
        else:
          bot.send_message(config.owner, str(message.chat.id) + ': ' + message.text)
          bot.send_message(message.chat.id, '%s, wait please '%message.chat.username)

  1. Первый try не закрыт
  2. Зачем call.message?
  3. Кривой отступ в строке с if call.data ==
  4. Нет отступа в if int(message.chat.id) ==
  5. Зачем получать chat id через сплит JSON'a? message.chat.id есть
  6. Зачем получать text через сплит JSON'a?
  7. Разве text есть в объекте message, если речь идет о callback?
  8. Зачем нужен этот try except блок, если переменный из него нигде не используются?
  9. Зачем нужен этот try except блок, если переменный из него нигде не используются?


В общем, вопросов больше, чем ответов. У вас редактор кода красным не светится весь?
Ответ написан
Ваш ответ на вопрос

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

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