После выполнения if срабатывает и else, как можно решить?
import telebot
from telebot import types
import webbrowser
import random
api = 'TOKEN'
bot = telebot.TeleBot(api)
#Капча
@bot.message_handler(commands = ['start'])
def start(message):
markup = types.InlineKeyboardMarkup()
btn1 = types.InlineKeyboardButton('?', callback_data = '?')
btn2 = types.InlineKeyboardButton('?', callback_data = '?')
btn3 = types.InlineKeyboardButton('?', callback_data = '?')
markup.row(btn1, btn2, btn3)
icon = ['?', '?', '?']
global antibot
antibot = random.choice(icon)
bot.send_message(message.chat.id, f'<b>✌?Привет, {message.from_user.first_name}.\n\nНажми на {antibot} , чтобы я убедился, что ты не робот.</b>', parse_mode="html", reply_markup = markup)
#Ловим callback
@bot.callback_query_handler(func = lambda call: True)
def antibotresult(call):
antibotnew = antibot
if call.data == antibotnew:
bot.delete_message(call.message.chat.id, call.message.message_id)
markup2 = types.InlineKeyboardMarkup()
menubtn = types.InlineKeyboardButton('В главное меню', callback_data = 'menu')
markup2.row(menubtn)
bot.send_message(call.message.chat.id, '<b>Проверка пройдена, для продолжения нажми кнопку.</b>', reply_markup = markup2, parse_mode="html")
else:
bot.delete_message(call.message.chat.id, call.message.message_id)
markup3 = types.InlineKeyboardMarkup()
returnbtn = types.InlineKeyboardButton('Повторить попытку.', callback_data = 'return')
markup3.row(returnbtn)
bot.send_message(call.message.chat.id, '<b>Проверка не пройдена.</b>', parse_mode="html", reply_markup = markup3)
bot.polling(none_stop = True)
После выполнения if срабатывает и else, в чем может быть проблема?
Ответы (1 шт):
Автор решения: Amgarak
→ Ссылка
Глобальные переменные использовать наверное не стоит, так что предлагаю дергать правильный ответ для капчи прямо из сообщения:
import telebot
from telebot import types
import random
import re
api = 'TOKEN'
bot = telebot.TeleBot(api)
# Капча
@bot.message_handler(commands=['start'])
def start(message):
markup = types.InlineKeyboardMarkup()
btn1 = types.InlineKeyboardButton('?', callback_data='?')
btn2 = types.InlineKeyboardButton('?', callback_data='?')
btn3 = types.InlineKeyboardButton('?', callback_data='?')
markup.row(btn1, btn2, btn3)
icon = ['?', '?', '?']
antibot = random.choice(icon)
bot.send_message(message.chat.id, f'<b>✌?Привет, {message.from_user.first_name}.\n\nНажми на {antibot}, чтобы я убедился, что ты не робот.</b>', parse_mode="html", reply_markup=markup)
# Ловим callback
@bot.callback_query_handler(func=lambda call: True)
def antibotresult(call):
symbols = ['?', '?', '?']
antibot = None
# Получаем значение antibot из текста сообщения
for symbol in symbols:
if re.search(symbol, call.message.text):
antibot = symbol
break
if call.data == antibot:
bot.delete_message(call.message.chat.id, call.message.message_id)
markup2 = types.InlineKeyboardMarkup()
menubtn = types.InlineKeyboardButton('В главное меню', callback_data='menu')
markup2.row(menubtn)
bot.send_message(call.message.chat.id, '<b>Проверка пройдена, для продолжения нажми кнопку.</b>', reply_markup=markup2, parse_mode="html")
elif call.data in ['menu', 'return']:
bot.delete_message(call.message.chat.id, call.message.message_id)
markup = types.InlineKeyboardMarkup()
btn1 = types.InlineKeyboardButton('?', callback_data='?')
btn2 = types.InlineKeyboardButton('?', callback_data='?')
btn3 = types.InlineKeyboardButton('?', callback_data='?')
markup.row(btn1, btn2, btn3)
icon = ['?', '?', '?']
antibot = random.choice(icon)
bot.send_message(call.message.chat.id, f'<b>✌?Привет, {call.from_user.first_name}. Повторим проверку? \n\nНажми на {antibot}, чтобы я убедился, что ты не робот.</b>', parse_mode="html", reply_markup=markup)
else:
bot.delete_message(call.message.chat.id, call.message.message_id)
markup3 = types.InlineKeyboardMarkup()
returnbtn = types.InlineKeyboardButton('Повторить попытку.', callback_data='return')
markup3.row(returnbtn)
bot.send_message(call.message.chat.id, '<b>Проверка не пройдена.</b>', parse_mode="html", reply_markup=markup3)
bot.polling(none_stop=True)