538f1e3972
- Pyrogram core is now fully asynchronous - Ditched Python 3.5, welcome 3.6 as minimum version. - Moved all types to pyrogram.types - Turned the Filters class into a module (filters) - Moved all filters to pyrogram.filters - Moved all handlers to pyrogram.handlers - Moved all emoji to pyrogram.emoji - Renamed pyrogram.api to pyrogram.raw - Clock is now synced with server's time - Telegram schema updated to Layer 117 - Greatly improved the TL compiler (proper type-constructor hierarchy) - Added "do not edit" warning in generated files - Crypto parts are executed in a thread pool to avoid blocking the event loop - idle() is now a separate function (it doesn't deal with Client instances) - Async storage, async filters and async progress callback (optional, can be sync too) - Added getpass back, for hidden password inputs
94 lines
1.9 KiB
ReStructuredText
94 lines
1.9 KiB
ReStructuredText
Scheduling Tasks
|
|
================
|
|
|
|
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.
|
|
|
|
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.
|
|
|
|
.. contents:: Contents
|
|
:backlinks: none
|
|
:depth: 1
|
|
:local:
|
|
|
|
-----
|
|
|
|
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:
|
|
while True:
|
|
schedule.run_pending()
|
|
time.sleep(1)
|
|
|
|
|
|
|
|
Using ``apscheduler``
|
|
---------------------
|
|
|
|
- Install with ``pip3 install apscheduler``
|
|
- Documentation: https://apscheduler.readthedocs.io
|
|
|
|
.. code-block:: python
|
|
|
|
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.start()
|
|
app.run()
|
|
|
|
``apscheduler`` does also support async code, here's an example:
|
|
|
|
.. 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.start()
|
|
app.run()
|
|
|