tatsuki1
@tatsuki1

Какая-то проблема с кодом, поможете?

Пишу бота на pyTelegramBotApi. Пишу в группу любые другие слова, а он сообщением с else, хотя он не должен реагировать, на допусти "Понедельник" он должен реагировать словами с else. А допустим на "Привет" он не должен реагировать, а всё равно отвечает, как это решить? Код ниже
@bot.message_handler(content_types=['text'])
def raspisanya(message):
    if message.chat.type == 'private':

        if message.text == 'Понедельник':
            photo = open('photos/rasp/pon.png', 'rb')
            bot.send_photo(message.chat.id, photo, caption='Так уж и быть, скину')
        elif message.text == 'Вторник':
            photo = open('photos/rasp/vt.png', 'rb')
            bot.send_photo(message.chat.id, photo, caption='Так уж и быть, скину')
        elif message.text == 'Среда':
            photo = open('photos/rasp/sreda.png', 'rb')
            bot.send_photo(message.chat.id, photo, caption='Так уж и быть, скину')
        elif message.text == 'Четверг':
            photo = open('photos/rasp/cht.png', 'rb')
            bot.send_photo(message.chat.id, photo, caption='Так уж и быть, скину')
        elif message.text == 'Пятница':
            photo = open('photos/rasp/pyt.png', 'rb')
            bot.send_photo(message.chat.id, photo, caption='Так уж и быть, скину')
        elif message.text == 'Звонки':
            photo = open('photos/rasp/zvonki.png', 'rb')
            bot.send_photo(message.chat.id, photo, caption='Так уж и быть, скину')
    else:
        sti = open('photos/sticker/idinaxui.webp', 'rb')
        bot.send_sticker(message.chat.id, sti)
        bot.send_message(message.chat.id, 'Не отвечаю на данные сообщение в группах, пишите в личные сообщения.')
  • Вопрос задан
  • 150 просмотров
Решения вопроса 1
shurshur
@shurshur
Сисадмин, просто сисадмин...
Ну так что написано, то он и делает.

if message.chat.type == 'private':

Если написали в приват, то в зависимости от сообщения будет тот или иной ответ.

А если написали не в приват, то код сразу попадает в блок else.

Прежде чем писать ботов, надо почитать учебник по python. Обязательно! Тогда и не будет таких тривиальных вопросов. Отступы в python очень важны. В этом коде else относится не к if-elif-elif... а к внешнему if.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
Включить голову. Твой код, по сути, делает ровно то, что ты от него просишь:
1. Если сообщение в личку, то в зависимости от слова, скинуть ту или иную фотку. Если не одно слово не подошло, то ничего не делать.
2. Если сообщение не в личку, ответить, что на групповые сообщения не отвечает.

Т.е. он всегда будет реагировать на не-личные сообщения по else. Не нравится? Убери этот else вместе со всем содержимым.
Ну и да, основные алгоритмические конструкции.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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