kavermoki
@kavermoki
junior

Как отправить сообщение в указанное время с помощью isoweekday из библиотеки datetime?

Здравствуйте!

Помогите понять использование isoweekday в datetime.

Пишу уведомляшку в определенные дни недели, в определенное время.
Например, я хочу сделать чтобы каждый понедельник в 15:00 было уведомление.
Понимаю, что делается через weekday или isoweekday – кстати, разницу я все равно не понимаю, что там ВС начинается с 0, а там с 1.

Это я пытаюсь прикрутить isoweekday:
from datetime import timedelta, datetime, timezone
import asyncio

@dp.message_handler(text=['Уведомлять меня!'])
async def process_start_command(message: types.Message):
    keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True)
    await message.answer("Уведомление включено!", reply_markup=keyboard)
    while True:
        await asyncio.sleep(1)
        now = datetime.now() 
        x = now.isoweekday()
        dt_string = now.strftime("%d/%m/%Y %H:%M:%S") 
        if (dt_string == "19:04:00") and x == 6:
            await bot.send_message(message.chat.id, f'"Уведомление в {dt_string}"')


Это код без isoweekday, который работает только в определенный dd/mm/YY H:M:S:
from datetime import timedelta, datetime, timezone
import asyncio

@dp.message_handler(text=['Уведомлять меня!'])
async def process_start_command(message: types.Message):
    keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True)
    await message.answer("Уведомление включено!", reply_markup=keyboard)
    while True:
        await asyncio.sleep(1)
        now = datetime.now() 
        dt_string = now.strftime("%d/%m/%Y %H:%M:%S") 
        if (dt_string == "15/05/2024 19:04:00"):
            await bot.send_message(message.chat.id, f'"Уведомление в {dt_string}"')
  • Вопрос задан
  • 84 просмотра
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
dt_string = now.strftime("%d/%m/%Y %H:%M:%S")   # метка времени вида дд/мм/гггг чч:мм:сс
if (dt_string == "19:04:00") and x == 6:  # ВНЕЗАПНО метка времени вида чч:мм:сс, дата куда-то пропала

Что ты ожидал-то? =)

А вообще, aioschedule в помощь, если у тебя будет несколько таких напоминашек.
Там достаточно один раз наладить запуск рабочего цикла aioschedule, и дальше просто планировать что делать.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы