NameError: name 'reminders_list' is not defined, не могу понять, почему возникает данная ошибка в коде?

Рейтинг: 0Ответов: 0Опубликовано: 17.05.2023
import telebot
from telebot import types
import time
import requests
import sqlite3
import datetime
import threading
from typing import List

api_key = "XXX"
bot = telebot.TeleBot('XXX')

reminders = {}
reminders_list.append({'name': reminder_name, 'time': reminder_time, 'message': message})
reminders.setdefault(message.chat.id, reminders_list)
users_dict = {}

def save_user_data_to_file(chat_id, name, age, vkontakte, mobilenumber, info, birthday):
    with open("users.txt", "a", encoding='utf-8') as f:
        f.write(f"ID: {chat_id}, Имя: {name}, Возраст: {age}, Дата рождения: {birthday}, Ссылка на VK: {vkontakte}, Номер телефона: {mobilenumber},О себе: {info}\n")

@bot.message_handler(commands=['start'])
def start_message(message):
    video = open('keyboard.MP4', 'rb')
    bot.send_message(message.chat.id, 'Бот запущен!')

    keyboard = telebot.types.ReplyKeyboardMarkup(True)
    keyboard.row('моя визитка 💼', 'telegram-info')
    keyboard.row('погода ⛅️', 'поиск фотографий 🌇')
    keyboard.row('заметки 🔥')
    keyboard.row('/help ❓')
    bot.send_video(message.chat.id, video, caption='Теперь можешь воспользоваться экранной клавиатурой.\nПриятного пользования!', reply_markup=keyboard)

@bot.message_handler(commands=['reminder'])
def reminder_message(message):
    bot.send_message(message.chat.id, "Введите напоминание:")
    bot.register_next_step_handler(message, set_reminder_name)
def set_reminder_name(message):
    user_data = {}
    user_data[message.chat.id] = {'reminder_name': message.text}
    bot.send_message(message.chat.id, text='Введите дату напоминания (в формате ДД:ММ:ГГГ чч:мм)\nПример: 01.01.2023 00:00', parse_mode=None)
    bot.register_next_step_handler(message, reminder_set, user_data=user_data)
def reminder_set(message, user_data):
    try:
        datetime
        reminder_time = datetime.datetime.strptime(message.text, '%d.%m.%Y %H:%M')
        now = datetime.datetime.now()
        delta = reminder_time - now
        if delta.total_seconds() <= 0:
            bot.send_message(message.chat.id, 'Вы ввели прошедшую дату, попробуйте ещё раз.')
            bot.register_next_step_handler(message, reminder_set, user_data=user_data)
        else:
            reminder_name = user_data[message.chat.id]['reminder_name']
            message = user_data[message.chat.id]['message']
            bot.send_message(message.chat.id, 'Напоминание "{}" установлено на {}'.format(reminder_name, reminder_time))
            reminder_timer = threading.Timer(delta.total_seconds(), send_reminder, [message.chat.id, reminder_name, message])
            reminder_timer.start()
            reminders.setdefault(message.chat.id, []).append({'name': reminder_name, 'time': reminder_time, 'message': message})

    except ValueError:
        bot.send_message(message.chat.id, 'Вы ввели дату в неверном формате.')
        bot.register_next_step_handler(message, reminder_set, user_data=user_data)

def send_reminder(chat_id, reminder_name, message):
    bot.send_message(chat_id, 'Время получить ваше напоминание "{}"'.format(reminder_name))
    del reminder[chat_id][0]

@bot.message_handler(commands=['list_reminders'])
def list_reminders(message):
    if message.chat.id in reminders:
        for reminder in reminders[message.chat.id]:
            bot.send_message(message.chat.id, '{} - {}'.format(reminder['name'], reminder['time']))
    else:
        bot.send_message(message.chat.id, 'У Вас нет установленных напоминаний.')

Код вовсе не запускается, выдаёт ошибку:

NameError: name 'reminders_list' is not defined

Если убрать из кода строку

reminders_list.append({'name': reminder_name, 'time': reminder_time, 'message': message})

бот работает, но само собой я не могу получить список напоминаний командой list_reminders, и код завершает свою работу.

Ответы

Ответов пока нет.