Чтобы всем пользователям из списка `users` начинался обратный отсчёт одновременно после отправки команды `start_tracker`, можно использовать `asyncio.gather()` для запуска асинхронных функций одновременно для каждого пользователя. Сначала нам нужно определить отдельную асинхронную функцию для управления обратным отсчётом каждого пользователя, а затем вызвать эту функцию для каждого пользователя одновременно.
Пример для изменения кода:
```python
import asyncio
async def start_countdown_for_user(user, db, bot):
timer_seconds = int(db.get_time_tracking(user))
new_message = await bot.send_message(user, f'{timer_seconds}')
for seconds_left in range(timer_seconds - 1, -1, -1):
await asyncio.sleep(1) # Замените 1 на нужное количество секунд
db.set_time_tracking(user, seconds_left)
await new_message.edit_text(f'{seconds_left}')
await bot.send_message(user, 'Всё!')
async def start_tracker():
# Список пользователей
users = [765963392, 6537306686]
# Создаем список корутин для каждого пользователя
countdown_tasks = [start_countdown_for_user(user, db, bot) for user in users]
# Запускаем все корутины одновременно
await asyncio.gather(*countdown_tasks)
# Вставьте это в соответствующее место обработчика для команды, например:
@dp.message_handler(commands=['start_tracker'])
async def handle_start_tracker_command(message: types.Message):
# Стартуем таймеры для всех пользователей
await start_tracker()
# Не забудьте запустить бота с использованием асинхронного исполнения
# Например, так:
# if __name__ == '__main__':
# executor.start_polling(dp, skip_updates=True)
```
Обратите внимание, что для запуска функций `start_countdown_for_user()` одновременно для каждого пользователя создается список корутин (`countdown_tasks`), который затем передается в функцию `asyncio.gather()`.
Код функции `handle_start_tracker_command()` является обработчиком для вашей команды `/start_tracker` в Aiogram боте.
Не забудьте также корректно настроить работу с базой данных, чтобы функция `db.get_time_tracking(user)` возвращала нужное и актуальное значение количества секунд до конца обратного отсчёта, и функция `db.set_time_tracking(user, seconds_left)` обновляла его в базе данных для каждого пользователя.
Если функции `db.get_time_tracking()` и `db.set_time_tracking()` выполняются асинхронно, использовать их всё так же, но при вызове необходимо ставить `await` перед ними. Например:
```python
timer_seconds = int(await db.get_time_tracking(user))
...
await db.set_time_tracking(user, seconds_left)
```