Данный код выдал эту ошибку: Traceback (most recent call last):
  File "C:\Users\Виктория Гайлитис\Documents\StudyBot\main.py", line 17, in <module>
    creds = Credentials.from_authorized_user_file('token.json', SCOPES)
  File "C:\Users\Виктория Гайлитис\Documents\StudyBot\venv\lib\site-packages\google\oauth2\credentials.py", line 439, in from_authorized_user_file
    data = json.load(json_file)
  File "C:\Users\Виктория Гайлитис\AppData\Local\Programs\Python\Python310\lib\json\__init__.py", line 293, in load
    return loads(fp.read(),
  File "C:\Users\Виктория Гайлитис\AppData\Local\Programs\Python\Python310\lib\json\__init__.py", line 346, in loads
    return _default_decoder.decode(s)
  File "C:\Users\Виктория Гайлитис\AppData\Local\Programs\Python\Python310\lib\json\decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:\Users\Виктория Гайлитис\AppData\Local\Programs\Python\Python310\lib\json\decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Перепиши код ниже с исправленной ошибкой: import os
import base64
import email
import re
import time
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from telegram.ext import Updater, CommandHandler, MessageHandler, filters
from telegram import ReplyKeyboardMarkup, ReplyKeyboardRemove
from google_auth_oauthlib.flow import InstalledAppFlow
import sqlite3

# Настройки Google API
SCOPES = ['https://www.googleapis.com/auth/gmail.readonly']
creds = None
if os.path.exists('token.json'):
    creds = Credentials.from_authorized_user_file('token.json', SCOPES)
if not creds or not creds.valid:
    if creds and creds.expired and creds.refresh_token:
        creds.refresh(Request())
    else:
        flow = InstalledAppFlow.from_client_secrets_file(
            'credentials.json', SCOPES)
        creds = flow.run_local_server(port=0)
    with open('token.json', 'w') as token:
        token.write(creds.to_json())

# Настройки Telegram бота
TELEGRAM_TOKEN = '<TRUFFLEHOG_REDACTED_TELEGRAMBOTTOKEN>'
telegram_bot = Updater(token=TELEGRAM_TOKEN, use_context=True).bot

# Создаем базу данных и таблицу для хранения адресатов
conn = sqlite3.connect('emails.db')
cursor = conn.cursor()
cursor.execute('''CREATE TABLE IF NOT EXISTS emails
                  (id INTEGER PRIMARY KEY AUTOINCREMENT,
                  user_id INTEGER,
                  email TEXT)''')

# Функция, которая ищет новые письма от указанного адресата
def check_email_updates():
    service = build('gmail', 'v1', credentials=creds)
    user_profile = service.users().getProfile(userId='me').execute()
    user_email = user_profile['emailAddress']
    for user_id, email in cursor.execute('SELECT user_id, email FROM emails'):
        result = service.users().messages().list(userId='me', q=f'from:{email} is:unread').execute()
        messages = result.get('messages', [])
        if not messages:
            continue
        for message in reversed(messages):  # Читаем сообщения в порядке, обратном их получению
            msg = service.users().messages().get(userId='me', id=message['id']).execute()
            snippet = msg['snippet']
            message_text = None
            payload = msg['payload']
            headers = payload['headers']
            for header in headers:
                if header['name'] == 'From':
                    sender = header['value']
                elif header['name'] == 'Subject':
                    subject = header['value']
                elif header['name'] == 'Date':
                    sent_at = header['value']
                elif header['name'] == 'Message-ID':
                    message_id = header['value']
            if 'parts' in payload:
                parts = payload['parts']
                for part in parts:
                    part_headers = part['headers']
                    part_type = part['mimeType']
                    if part_type == 'text/plain':
                        part_data = part['body']['data']
                        message_text = base64.urlsafe_b64decode(part_data).decode()
                    elif part_type == 'text/html':
                        continue
            elif 'data' in payload['body']:
                part_data = payload['body']['data']
                message_text = base64.urlsafe_b64decode(part_data).decode()
            if message_text:
                # Здесь можно проверить содержание сообщения на наличие ключевых слов, чтобы не уведомлять о ненужных письмах
                telegram_message = f'У вас новое сообщение от {sender}: {snippet}'
                telegram_bot.send_message(chat_id=user_id, text=telegram_message)

# Команда для добавления адресата
def add_email_start(bot, update):
    update.message.reply_text('Введите адрес электронной почты, от которого вы хотите получать уведомления:')
    # Добавляем хэндлер для обработки ответа пользователя
    return 'add-email'

def add_email(bot, update):
    user_id = update.message.chat_id
    email = update.message.text
    cursor.execute('INSERT INTO emails (user_id, email) VALUES (?, ?)', (user_id, email))
    conn.commit()
    update.message.reply_text(f'Адрес {email} успешно добавлен.')

# Добавляем хэндлер для обработки ответа пользователя
updater.dispatcher.add_handler(MessageHandler(Filters.regex(r'[1]+@[\w.-]+.\w+'), add_email), group=1)

# Создаем клавиатуру для удаления обработчика
keyboard = ReplyKeyboardMarkup([["Отмена"]], resize_keyboard=True, one_time_keyboard=True)

# Добавляем хэндлер для отмены добавления адресата
def add_email_cancel(bot, update):
    update.message.reply_text("Добавление адресата отменено.", reply_markup=ReplyKeyboardRemove())
    return ConversationHandler.END

# Создаем ConversationHandler для запуска процесса добавления адресата
add_email_handler = ConversationHandler(entry_points=[CommandHandler('add_email', add_email_start)],
                                        states={"add-email": [MessageHandler(Filters.regex(r'^[\w\.-]+@[\w\.-]+\.\w+'), add_email)]},
                                        fallbacks=[MessageHandler(Filters.text(['Отмена']), add_email_cancel)],allow_reentry=True)
updater.dispatcher.add_handler(add_email_handler)

# Команда для просмотра списка адресатов
def view_emails(bot, update):
    user_id = update.message.chat_id
    emails = [row[1] for row in cursor.execute('SELECT email FROM emails WHERE user_id = ?', (user_id,))]
    if emails:
        message = 'Список адресатов:\n' + '\n'.join(emails)
    else:
        message = 'Список адресатов пуст.'
    update.message.reply_text(message)

# Создание обработчика команды и запуск бота
updater = Updater(TELEGRAM_TOKEN)
updater.dispatcher.add_handler(CommandHandler('add_email', add_email, pass_args=True))
updater.dispatcher.add_handler(CommandHandler('view_emails', view_emails))
updater.start_polling()

# Запуск бесконечного цикла для проверки новых писем
while True:
    check_email_updates()
    time.sleep(60)