问题描述
我正在使用Python的零知识为Python开发Telegram机器人,但是我非常了解它,因此我尝试遵循它,但是它不起作用。 我正在尝试做出一个逻辑表达式,以便当消息“经济”行“ if message.text =='Economy':”起作用时,但是它给出了我几个小时都无法理解的错误
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,Лектор: Прохоров Андрей Валерьевич)
\n10:40 - 12:10: -
\n12:20 - 13:50: Информационные технологии в управлении (Зал: -,Лектор: Журавлев Игорь Владимирович)''')
elif message.text == 'Группа ОБ20-3':
bot.send_message(message.chat.id,Лектор: Прохоров Андрей Валерьевич)
\n10:40 - 12:10: Логика. Практические занятия (Зал: -,Лектор: Ковылин Юрий Алексеевич)
\n12:20 - 13:50: Информационные технологии в управлении. Лаб.Занятия (Зал: -,Лектор: Ващура Ирина Кириллсана)''')
elif message.text == 'Группа ОБ20-4':
bot.send_message(message.chat.id,Лектор: Прохоров Андрей Валерьевич)
\n10:40 - 12:10: Введение в профессиональную деятельность. Практика (Зал: -,Лектор: Борисенков Алексей Александрович)
\n12:20 - 13:50: Логика. Практические занятия (Зал: -,Лектор: Борисенков Алексей Александрович)''')
bot.polling()
解决方法
错误消息表明问题的原因是由于“错误的缩进”。
可以通过在所有未对齐的语句中添加缩进来解决该问题。
有关Python使用的插入的说明:
Python不使用大括号括起代码块。依靠缩进(一个制表符或4个空格)才能知道代码块的边界。
Python中的缩进就像Swift编程语言的花括号。
例如,假设一个函数是Swift,就像这样:
func my_function(_ s1: String,_ s2: String) -> Bool {
if (s1 == s2) {
return true
}
return false
}
可以在以下Python行中编写相同的函数:
def my_function (s1,s2):
if (s1 == s2):
return True
return False
,
您收到一个IndentationError;您的Python缩进语法简直就是怪诞的(混合并匹配0、2、6和4个空格)。
就语法而言,您可能正在寻找类似以下内容的内容,但请注意,我删除了if message.text == 'Экономика':
位,因为在函数之外没有意义(没有{ {1}}进行检查!),也不会尝试在message
块中注册漫游器回复处理程序。
if