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()
2
Answers
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 nomessage
to be inspected!), nor does trying to register a bot reply handler in anif
block.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:
The same function can be written in Python line this: