From 6973f584886bc5d65e6aa5d88a5f98abeb8a287e Mon Sep 17 00:00:00 2001
From: Dan <14043624+delivrance@users.noreply.github.com>
Date: Thu, 1 Aug 2019 12:37:22 +0200
Subject: [PATCH] Update scheduling.rst
---
docs/source/topics/scheduling.rst | 50 +++++++++++++++++++++----------
1 file changed, 35 insertions(+), 15 deletions(-)
diff --git a/docs/source/topics/scheduling.rst b/docs/source/topics/scheduling.rst
index 1f4e1e01..3cb95ec7 100644
--- a/docs/source/topics/scheduling.rst
+++ b/docs/source/topics/scheduling.rst
@@ -1,23 +1,34 @@
-Scheduling tasks
+Scheduling Tasks
================
-Pyrogram itself as Telegram MTProto API Framework contains only stuff
-related to Telegram. Scheduling is out of it's scope.
+Scheduling tasks means executing one or more functions periodically at pre-defined intervals or after a delay. This is
+useful, for example, to send recurring messages to specific chats or users.
-But it is easy to integrate pyrogram with your favourite scheduler.
+Since there's no built-in task scheduler in Pyrogram, this page will only show examples on how to integrate Pyrogram
+with the main Python schedule libraries such as ``schedule`` and ``apscheduler``. For more detailed information, you can
+visit and learn from each library documentation.
-schedule
---------
+Using ``schedule``
+------------------
+
+- Install with ``pip3 install schedule``
+- Documentation: https://schedule.readthedocs.io
.. code-block:: python
import time
+
import schedule
+ from pyrogram import Client
+
+ app = Client("my_account")
+
def job():
app.send_message("me", "Hi!")
+
schedule.every(3).seconds.do(job)
with app:
@@ -25,43 +36,52 @@ schedule
schedule.run_pending()
time.sleep(1)
-Note that schedule is not suitable for async version of pyrogram.
-For more information read `library `_ docs.
-apscheduler
------------
+
+Using ``apscheduler``
+---------------------
+
+- Install with ``pip3 install apscheduler``
+- Documentation: https://apscheduler.readthedocs.io
.. code-block:: python
- import time
from apscheduler.schedulers.background import BackgroundScheduler
+ from pyrogram import Client
+
+ app = Client("my_account")
+
def job():
app.send_message("me", "Hi!")
scheduler = BackgroundScheduler()
- scheduler.add_job(job, 'interval', seconds=3)
+ scheduler.add_job(job, "interval", seconds=3)
scheduler.start()
app.run()
-Apscheduler supports async version of pyrogram too, here is async example:
+``apscheduler`` does also support async code, here's an example with
+`Pyrogram Asyncio `_:
.. code-block:: python
from apscheduler.schedulers.asyncio import AsyncIOScheduler
+ from pyrogram import Client
+
+ app = Client("my_account")
+
async def job():
await app.send_message("me", "Hi!")
scheduler = AsyncIOScheduler()
- scheduler.add_job(job, 'interval', seconds=3)
+ scheduler.add_job(job, "interval", seconds=3)
scheduler.start()
app.run()
-For more information read `library `_ docs.