python - 在 Python 中开发 Telegram 机器人的问题
问题描述
我正在为 Python 中的 Telegram 开发一个机器人,该语言的知识为零,但我非常了解 swift,我尝试遵循它,但它不起作用。我正在尝试制作一个逻辑表达式,以便当消息“经济”时,“如果 message.text == '经济':”行有效,但它给出了一个我无法理解几个小时的错误
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()
解决方案
错误消息表明问题的原因是由于“错误的缩进”。
可以通过为所有未对齐的语句添加缩进来解决该问题。
关于 Python 使用的 indetation 的注意事项:
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
推荐阅读
- symfony - Symfony 4 fetch response.text() 是分析器工具栏的 HTML 而不是 json
- excel - 有没有更好的方法来循环仅通过列的可见单元格并将当前单元格与下一个单元格以及之后的单元格两个进行比较?
- react-native - 在 Input 中使用 react-number-format
- c# - Newtonsoft.Json 反序列化集合
- javascript - 使用离子/角度向表单动态添加多个输入字段
- python - 如何在 python 中快速求和大型 numpy 数组?
- python-3.x - Flask 重定向功能重定向到原始 API Gateway url 而不是自定义域
- latex - 使用 tikzpicture 和 qtree 在树中创建交叉分支
- python - 无法将嵌套框架切换到主页
- python - 熊猫数据框输出为文本而不是标准格式