JavaRush/Courses/Python SELF EN/Creating reminders and notifications based on time

Creating reminders and notifications based on time

Open

1. Implementing reminder mechanisms

Using the modules datetime and timedelta

Sometimes, you need to calculate how much time is left before an event to create a reminder. Here's where timedelta comes in handy:

Python
from datetime import datetime, timedelta

# Calculating reminder time
meeting_time = datetime(2023, 10, 30, 15, 0, 0)
reminder_time = meeting_time - timedelta(minutes=30)

print(f"You need to send a reminder at: {reminder_time}")

Simple notification via console

The first step is simple notifications. Sure, they’re not as "fancy" as push notifications on your smartphone, but it’ll do for starters.

Python
import time

def simple_reminder(message, delay):
    print(f"In {delay} seconds, a reminder will follow...")
    time.sleep(delay)
    print(f"Reminder: {message}")

simple_reminder("It's time for the meeting!", 10)

2. Using schedule for periodic reminders

When you need reminders to repeat, schedule becomes your buddy. You can set different intervals, like daily or weekly:

Python
import schedule
import time

def meeting_reminder():
    print("Reminder: You have a meeting soon!")

# Reminder every day at 2:30 PM
schedule.every().day.at("14:30").do(meeting_reminder)

while True:
    schedule.run_pending()
    time.sleep(1)

3. Time-based notifications using the plyer library

To make notifications more "real", we can use the plyer library to send system notifications:

Python
from plyer import notification
import time

def plyer_notification(title, message):
    notification.notify(
        title=title,
        message=message,
        app_name='Python Reminder',
        timeout=10
    )

# Example usage
plyer_notification("Reminder!", "It's time for the meeting.")

The function notification.notify() will display a standard OS notification.

4. Email reminders

To send email notifications in Python, the smtplib module is used. In the next example, we'll set up email reminders using an SMTP server.

Python
import smtplib
from email.mime.text import MIMEText
import schedule
import time

def send_email_reminder():
    sender = "your_email@example.com"
    receiver = "receiver_email@example.com"
    subject = "Task Reminder"
    body = "This is an automatic reminder: Don't forget to complete your task today."

    # Creating the message
    msg = MIMEText(body)
    msg["Subject"] = subject
    msg["From"] = sender
    msg["To"] = receiver

    # Connecting to the SMTP server and sending the email
    with smtplib.SMTP("smtp.example.com", 587) as server:
        server.starttls()
        server.login(sender, "your_password")
        server.sendmail(sender, receiver, msg.as_string())

    print("Reminder sent via email.")

# Schedule the reminder to be sent daily at 8:30 AM
schedule.every().day.at("08:30").do(send_email_reminder)

while True:
    schedule.run_pending()
    time.sleep(1)

Here, send_email_reminder() sends an email notification. Customize the sender address, recipient address, and SMTP server. This method allows easy automation of email reminder sending.

5. Reminders via Telegram

To send reminders via Telegram, you can use its API. In this example, we'll send a notification to a Telegram chat using requests.

Setup:

  1. Create a bot in Telegram via BotFather and get the API_TOKEN.
  2. Find your CHAT_ID by sending a message to the bot and getting the chat ID using the API.
Python
import requests
import schedule
import time

def send_telegram_reminder():
    api_token = "YOUR_API_TOKEN"
    chat_id = "YOUR_CHAT_ID"
    message = "Reminder: You have an important task today!"

    url = f"https://api.telegram.org/bot{api_token}/sendMessage"
    payload = {
        "chat_id": chat_id,
        "text": message
    }

    response = requests.post(url, data=payload)
    if response.status_code == 200:
        print("Reminder sent via Telegram.")
    else:
        print("Error sending Telegram reminder.")

# Schedule the reminder to be sent daily at 9:00 AM
schedule.every().day.at("09:00").do(send_telegram_reminder)

while True:
    schedule.run_pending()
    time.sleep(1)

Now, every day at 9:00 AM, the bot will send a notification to the specified Telegram chat.

6. Additional notification setup tips

  1. Error handling: Add error handling for sending notifications, such as checking the connection to the email server or Telegram.
  2. Logging: Use the logging library to record reminder events. This will help track when reminders were actually sent.
  3. Flexible settings: If you plan to use reminders in a project, create a function for dynamically setting the time and notification methods, so you can easily change the settings.
1
Task
Python SELF EN,  40 level,  3 lecture
Locked
Creating a Simple Text Reminder
Creating a Simple Text Reminder
2
Task
Python SELF EN,  40 level,  3 lecture
Locked
Periodic Reminder Using Schedule
Periodic Reminder Using Schedule
3
Task
Python SELF EN,  40 level,  3 lecture
Locked
Creating a notification using system notifications
Creating a notification using system notifications
4
Task
Python SELF EN,  40 level,  3 lecture
Locked
Sending Email Notifications
Sending Email Notifications
Комментарии
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны sign in
This page has no comments yet