skip to Main Content

I am developing a bot for Telegram in Python with zero knowledge of the language, but I know swift very well and I try to follow it, but it doesn’t work.
I’m trying to make a logical expression so that when the message "Economy" the line "if message.text == ‘Economy’:" works, but it gives an error that I can’t understand for several hours

import telebot

bot = telebot.TeleBot('token')

 

keyboard1 = telebot.types.ReplyKeyboardMarkup()
keyboard1.row('Группа ОБ20-1', 'Группа ОБ20-2', 'Группа ОБ20-3', 'Группа ОБ20-4')


keyboard2 = telebot.types.ReplyKeyboardMarkup()
keyboard2.row('Экономика', 'Астрология')









@bot.message_handler(commands=['start'])
def start_message(message):
    bot.send_message(message.chat.id, 'Привет, выбери свою группу', reply_markup = keyboard1)



    







if message.text == 'Экономика':

  @bot.message_handler(content_types = ['text'])
        def send_text(message):

    if message.text == 'Группа ОБ20-1':
        bot.send_message(message.chat.id, '''9:00 - 10:30: История мировых цивилизаций (Зал: №3/6, Лектор: Прохоров Андрей Валерьевич) 
            n10:40 - 12:10: История мировых цивилизаций (Зал: №3/6, Лектор: Прохоров Андрей Валерьевич) 
            n12:20 - 13:50: - 
            n14:00 - 15:30 - ''')

    elif message.text == 'Группа ОБ20-2':
        bot.send_message(message.chat.id, '''9:00 - 10:30: История мировых цивилизаций (Зал: №3/6, Лектор: Прохоров Андрей Валерьевич) 
            n10:40 - 12:10: -  
            n12:20 - 13:50: Информационные технологии в управлении (Зал: -, Лектор: Журавлев Игорь Владимирович)''')

    elif message.text == 'Группа ОБ20-3':
        bot.send_message(message.chat.id, '''9:00 - 10:30: История мировых цивилизаций (Зал: №3/6, Лектор: Прохоров Андрей Валерьевич) 
            n10:40 - 12:10: Логика. Практические занятия (Зал: -, Лектор: Ковылин Юрий Алексеевич)  
            n12:20 - 13:50: Информационные технологии в управлении. Лаб.Занятия (Зал: -, Лектор: Ващура Ирина Кириллсана)''')

    elif message.text == 'Группа ОБ20-4':
        bot.send_message(message.chat.id, '''9:00 - 10:30: История мировых цивилизаций (Зал: №3/6, Лектор: Прохоров Андрей Валерьевич) 
            n10:40 - 12:10: Введение в профессиональную деятельность. Практика (Зал: -, Лектор: Борисенков Алексей Александрович)  
            
            n12:20 - 13:50: Логика. Практические занятия (Зал: -, Лектор: Борисенков Алексей Александрович)''')

    



bot.polling()

enter image description here

2

Answers


  1. You’re getting an IndentationError; your Python indentation syntax is simply wonky (mixing and matching 0, 2, 6 and 4 spaces).

    Syntax-wise, you’re likely looking for something like the following, but do note that I have removed the if message.text == 'Экономика': bit, since it doesn’t make sense being outside of a function (there is no message to be inspected!), nor does trying to register a bot reply handler in an if block.

    import telebot
    
    bot = telebot.TeleBot("token")
    
    
    keyboard1 = telebot.types.ReplyKeyboardMarkup()
    keyboard1.row("Группа ОБ20-1", "Группа ОБ20-2", "Группа ОБ20-3", "Группа ОБ20-4")
    
    
    keyboard2 = telebot.types.ReplyKeyboardMarkup()
    keyboard2.row("Экономика", "Астрология")
    
    
    @bot.message_handler(commands=["start"])
    def start_message(message):
        bot.send_message(
            message.chat.id, "Привет, выбери свою группу", reply_markup=keyboard1
        )
    
    
    @bot.message_handler(content_types=["text"])
    def send_text(message):
        if message.text == "Группа ОБ20-1":
            bot.send_message(message.chat.id, """1...""")
        elif message.text == "Группа ОБ20-2":
            bot.send_message(message.chat.id, """2...""")
        elif message.text == "Группа ОБ20-3":
            bot.send_message(message.chat.id, """3...""")
        elif message.text == "Группа ОБ20-4":
            bot.send_message(message.chat.id, """4...""")
    
    
    bot.polling()
    
    Login or Signup to reply.
  2. The error message suggests that the cause of the problem is due to ‘wrong indentation’.

    The problem can be solved by adding indentation to all the mis-aligned statements.

    Note on indetation used by Python:

    Python does not use curly-braces for enclosing code blocks. It depends on indentations (Either a tab or 4 blank spaces) to know the boundaries of code blocks.

    Indents in Python are like the curly braces of Swift programming language.

    For example, Suppose that a function is Swift is like this:

    func my_function(_ s1: String, _ s2: String) -> Bool {
        if (s1 == s2) {
            return true
        }
        return false
    }
    

    The same function can be written in Python line this:

    def my_function (s1, s2):
        
        if (s1 == s2):
            return True
            
        return False
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search