if message.text == '' работает неккоректно в python telebot
@bot.message_handler(regexp='Сделать комплимент?')
def kompliment(message):
global ochki
chat = message.chat.id
username = message.from_user.first_name
kompliments = ['Ты сегодня довольно красивая)', 'Ух-ты! Ксюшечка ты себе сделала ногти? Круто получилось, красиво',
'Знаешь мне кажется твое платье тебе неочень идет(',
'Ксюша твои глаза такие прекрасные, словно сияющий изумруд',
'Тебе стоило бы поменьше улыбаться, твои зубы ужасны',
'Вау ксюша я просто в шоке от твоего сегодняшего вида']
ochki = 0
pyperclip.copy(random.choice(kompliments))
keyboard.press_and_release('ctrl + v')
pyautogui.press("enter")
if message.text == 'Ты сегодня довольно красивая)':
ochki += 2
bot.send_message(chat, f'Ого.. Спасибо, я старалась?\n\nВы сделали комплимент. У вас {ochki} очков')
if message.text == 'Ух-ты! Ксюшечка ты себе сделала ногти? Круто получилось, красиво':
ochki += 5
bot.send_message(chat,
'Сказать честно ты первый кто заметил это. Спасибо я рада слышать это)\n\nОго, да вы мастер! У вас {ochki} очков')
if message.text == 'Ксюша твои глаза такие прекрасные, словно сияющий изумруд':
ochki += 7
bot.send_message(chat,
f'Вау.. Я в восторге слышать такие приятные слова, мне никто так не говорил.. Спасибо тебе, я в шоке\n\nВау, а кто это тут умеет радовать девушку? У вас {ochki} очков')
if message.text == 'Вау ксюша я просто в шоке от твоего сегодняшего вида':
ochki += 4
bot.send_message(chat,
f'Ахаха спасибо. Я часто слышу это, но все равно спасибо)\n\nСлишком банально знаешь ли. У вас {ochki} очков')
else:
ochki -= 1
bot.send_message(chat,
f'{username} ты серьезно? Я ведь пытаюсь выглядеть получше для тебя, а ты блин. Я обиделась!\n\nВы обидели Ксюшую. У вас {ochki} очков')
Срабатывает только else, хотя все тексты введены правильно, думаю все из-за random.choice()
Ответы (2 шт):
Автор решения: oleksandrigo
→ Ссылка
Вы не понимаете как работают хендлеры.
Смотрите у вас есть
@bot.message_handler(regexp='Сделать комплимент?')
def kompliment(message):
Конкретно regexp='Сделать комплимент?' это фильтр для хендлера, который работает так:
- Юзер отправляет сообщение
- Бот получает апдейт
- Бот проходит циклом по всем хендлерам и проверяет фильтры
- Бот находит
regexp='Сделать комплимент?'(происходит проверка текста сообщения юзера с помощью регулярки, по факту идет сравнение типаmessage.text == 'Сделать комплимент?') - Дальше выполняется код функции хендлера (всё что ниже
def kompliment(message):). И что самое главное,message.textбудетСделать комплимент?'или возможноСделать комплимент?' + любой текст. - В итоге все проверки типа
if message.text == ...будутfalseи сработает толькоelse.