@SupV1rus
начинающий программист

Почему бот в телеграмме отвечает всегда, не реагируя на то, что сообщения не похожи в блоке if?

здесь лишь часть кода, т.к основа именно в этой части, чтобы я не писал, мне бот отвечает рандомным ответом из списка возможных ответов на "привет" и "приветик"
import schedule
import time
import random
from alice_config import random_answers
from alice_config import random_utro
from alice_config import random_noch
import telebotbot
bot = telebot.TeleBot("kod")


def utro():
    bot.send_message(random.choice(random_utro))
schedule.every().day.at("07:30").do(utro)
while True:
    schedule.run_pending()
    time.sleep(1)
    break
def noch():
    bot.send_message(random.choice(random_noch))
schedule.every().day.at("23:00").do(noch)
while True:
    schedule.run_pending()
    time.sleep(1)
    break
@bot.message_handler(content_types=["text"])
def text(message):
    if message.text.lower() == "привет" or "приветик":
        bot.send_message(message.chat.id, random.choice(random_answers))

    else:
        pass
bot.polling(none_stop=True, interval=0)
  • Вопрос задан
  • 121 просмотр
Пригласить эксперта
Ответы на вопрос 2
SoreMix
@SoreMix Куратор тега Python
yellow
Потому что правильным использованием будет делать два сравнения
message.text.lower() == "привет" or message.text.lower() == "приветик":

А так у вас одно сравнение и одни bool() от не пустой строки, который всегда вернёт True
Ответ написан
vabka
@vabka
Токсичный шарпист
Просто ты неправильно используешь логические операторы. В частности or - он работает только с логическим типом, а не так как ты ожидаешь.

Выражение ложно, если оба операнда с двух сторон ложные. Если хотя бы одно из них истинное, то и все выражение истинно.


В твоём случае нужно что-то типа text == "привет" or text == "приветик"
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы