Я только начал разбираться в Python, и решил пройти бесплатный курс по основам программрования на этом языке. Написал кое как основные функции бота для телеграмм, но дальше у меня возникла проблема. Я не имею ни малейшего понятия как переменную из одной функции перенести в другую (команда /add), а ещё у меня проблема с командой, /show при отдельном её написании, я хочу что-бы она выводила все задачи и даты, а не крашила бота. Подскажите как исрправить мои ошибки! Буду благодарен любой помощи.
Вот проблемная часть кода:
import telebot
token = "********"
bot = telebot.TeleBot(token)
tasks = {}
todos = dict()
def add_todo(date, task):
date = date.lower()
if todos.get(date) is not None:
todos[date].append(task)
else:
todos[date] = [task]
@bot.message_handler(commands=['add'])
def add(message):
msg = bot.reply_to(message, "Введите дату (Пример: 15/01/2023):")
bot.register_next_step_handler(msg, add_date)
def add_date(message):
date1 = " "
try:
date1 = message.text
if not len(date1) == 10:
msg = bot.reply_to(message, "Введите дату (Пример: 15/01/2023):")
bot.register_next_step_handler(msg, add_date)
return
msg = bot.reply_to(message, 'Напишите задачу:')
bot.register_next_step_handler(msg, add_task)
except Exception: 1==1
return date1
def add_task(message):
try:
task = message.text
bot.send_message(message.chat.id, date1)
add_todo(date1, task) #я не зная как передать переменную date1 из другой функии
except Exception: 1==1
@bot.message_handler(commands=['show']) #эта команда может работать только с указаной через пробел датой
def show_(message):
dates = message.text.split(maxsplit=1)[1].lower().split()
response = ''
for date in dates:
tasks = todos.get(date)
response += f'{date}: \n'
for task in tasks:
response += f'[ ] {task}\n'
response += '\n'
bot.send_message(message.chat.id, response)
bot.polling(none_stop=True)