Помогите исправить ошибку в привязке бота в телеграмме с использованием python
Вот код:
import telebot
from telebot import types
bot = telebot.TeleBot('token')
keyboard = types.InlineKeyboardMarkup()
@bot.message_handler(commands=['start'])
@bot.message_handler(content_types=["text"])
# считываем данные из файла с текущими данными
with open(r'current_data.txt', mode='r', encoding='utf-8') as cur_fl:
# получим список всех строк
cur_data_lines = cur_fl.readlines()
# на основе списка создадим словарь ключ:значение
cur_data_dict = {
ln.split(';')[0]:ln.split(';')[1] # разделение строки по ';' - левая часть в ключ, правая в значение
for ln in cur_data_lines
}
# то же самое, но для файла с предыдущими значениями
with open(r'prev_data.txt', mode='r', encoding='utf-8') as prev_fl:
prev_data_lines = prev_fl.readlines()
prev_data_dict = {ln.split(';')[0]:ln.split(';')[1] for ln in prev_data_lines}
# обход по циклу всех пар ключ:значение из файла с текущими данными
for k, v in cur_data_dict.items():
# если ключ есть в предыдущем файле и значение не равно предыдущему
if (k in prev_data_dict.keys()) and (v != prev_data_dict[k]):
# отправить сообщение в телеграм (здесь вызов бота написан в качестве placeholder - надо подставить свой код)
telegram_bot.send_message(f'Для ключа {k} значение изменилось на {v}')
# переносим значения текущего файла в файл с предыдущими данными
# открывает файл с предыдущими данными на запись
with open(r'prev_data.txt', mode='w', encoding='utf-8') as prev_fl:
# открываем файл с текущими данными на чтение
with open(r'current_data.txt', mode='r', encoding='utf-8') as cur_fl:
# записываем в файл с предыдущими файлами то, что прочли из файла с текущими
prev_fl.write(cur_fl.read())
Ошибка такая на каждом with open
Traceback (most recent call last):
File "C:\Users\user\Desktop\123.py", line 19
with open(r'current_data.txt', mode='r', encoding='utf-8') as cur_fl:
^
SyntaxError: invalid syntax
Ответы (1 шт):
Автор решения: MrBlackLord
→ Ссылка
@bot.message_handler(commands=['start'])
@bot.message_handler(content_types=["text"])
Сверху находятся так называемые декораторы. После каждого из них должна идти функция, которую они вызывают. Обромите код в фунцкию(ции если это нужно). Примеры можно посмотреть в документации