NameError: name 'reminders_list' is not defined, не могу понять, почему возникает данная ошибка в коде?
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
, и код завершает свою работу.
Источник: Stack Overflow на русском