Не правильно работает регулярная отправка в Телеграм боте
Параллельно с обычными командами в боте, делаю отправку информации каждому пользователю в нужное ему время.
Проблема: словарь с данными пользователя в функции threading_control() корректен, а во вложенной функции regular_sending - нет, хотя при этом, данные не меняются. То есть при самой отправке, по какой-то причине, данные в словаре от другого пользователя, соответственно - отправка идёт не тому человеку не в его время.
Надеюсь, вы сможете мне помочь, заранее благодарен каждому! Код:
def get_user_params(user):
"""Возвращает словарь с данными о пользователе"""
params = {'id': user[0],
'name': user[1],
'send_time': user[2],
'city': user[3],
'news_topic': user[4],
'quantity_news': user[5],
'status': user[6]
}
return params
@aiocron.crontab('* * * * *')
async def threading_control():
# Получаем список кортежей со всеми пользователями
all_users = db.get_all_users_info()
for user in all_users:
# ТУТ - ЗНАЧЕНИЯ В СЛОВАРЕ ВЕРНЫ
user_params = get_user_params(user)
print(user_params)
# Проверяем, активна ли подписка пользователя
if user_params['status'] == 1:
try:
user_hours_minutes = user_params['send_time'].split(':')
hours = user_hours_minutes[0]
minutes = user_hours_minutes[1]
@aiocron.crontab(f'{minutes} {hours} * * *')
async def regular_sending():
# ТУТ - СЛОВАРЬ УЖЕ С ДАННЫМИ ДРУГОГО ПОЛЬЗОВАТЕЛЯ
print(user_params)
loop = asyncio.get_event_loop()
if __name__ == '__main__':
executor.start_polling(dp, loop=loop)