Как доделать сюда рассылку

from email import message
import config
import logging
import asyncio
from datetime import datetime

from aiogram import Bot, Dispatcher, executor, types
from sqlighter import SQLighter


# задаем уровень логов
logging.basicConfig(level=logging.INFO)

# инициализируем бота
bot = Bot(token=config.API_TOKEN)
dp = Dispatcher(bot)

# инициализируем соединение с БД
db = SQLighter('db.db')



# Команда активации подписки
@dp.message_handler(commands=['subscribe'])
async def subscribe(message: types.Message):
    if(not db.subscriber_exists(message.from_user.id)):
        # если юзера нет в базе, добавляем его
        db.add_subscriber(message.from_user.id)
    else:
        # если он уже есть, то просто обновляем ему статус подписки
        db.update_subscription(message.from_user.id, True)
    
    await message.answer("Вы успешно подписались на рассылку!\nЖдите, скоро выйдет актуальное расписание! =)")
 
@dp.message_handler(commands=['tbl']) 
async def subscribe(message: types.Message): 
    all_tbl = db.get_tbl() 
    tbls = [] 
    for i in all_tbl: 
        tbl = f'{i[0]}' 
        tbls.append(tbl) 
    await message.answer(text="\n".join(tbls))
    
@dp.message_handler(commands=['Monday'])
async def send_ph(message: types.Message):
 for s in subscriptions:
  await bot.send_photo(chat_id=message.chat.id, photo='AgACAgIAAxkBAANiZTeivUdrCN8WE8qn1inIjwrc2EkAAq7YMRtwnsFJikOvhsbhx1wBAAMCAAN5AAMwBA')
    
@dp.message_handler(commands=['Thursday'])
async def send_ph(message: types.Message):
 for s in subscriptions:
  await bot.send_photo(chat_id=message.chat.id, photo='AgACAgIAAxkBAANoZTevghT5xBWp77HCOY00WHEtOboAAj7ZMRtwnsFJQ9jUAfPsfiUBAAMCAAN5AAMwBA')

    

# Команда отписки
@dp.message_handler(commands=['unsubscribe'])
async def unsubscribe(message: types.Message):
    if(not db.subscriber_exists(message.from_user.id)):
        # если юзера нет в базе, добавляем его с неактивной подпиской (запоминаем)
        db.add_subscriber(message.from_user.id, False)
        await message.answer("Вы итак не подписаны.")
    else:
        # если он уже есть, то просто обновляем ему статус подписки
        db.update_subscription(message.from_user.id, False)
        await message.answer("Вы успешно отписаны от рассылки.")
  



@dp.message_handler(content_types=['photo'])
async def get_file_id_p(message: types.Message):
    await message.reply(message.photo[-1].file_id)

        

# получаем список подписчиков бота
subscriptions = db.get_subscriptions()
  





                
                

# запускаем лонг поллинг
if __name__ == '__main__':
    executor.start_polling(dp, skip_updates=True)

Ответы (1 шт):

Автор решения: Amgarak

Исходя из ваших ответов: Боту что бы отправить сообщение всем юзерам, не обязательно от вас ловить команду. Так что-то можно сделать примерно так:

async def scheduled_message():
    while True:
        await asyncio.sleep(86400)  # Ожидание 24 часа (в секундах)
        
        # Отправка сообщения всем подписчикам
        for user_id in subscriptions:
            await bot.send_message(user_id, "Ежедневное сообщение!")

if __name__ == '__main__':
    dp.loop.create_task(scheduled_message())
    executor.start_polling(dp, skip_updates=True)
→ Ссылка