Update SmartPlugins.rst page

This commit is contained in:
Dan 2018-10-21 09:43:35 +02:00
parent 35e3471961
commit 2febb53d72

View File

@ -64,8 +64,11 @@ functions. So... What if you could?
Using Smart Plugins
-------------------
Setting up your Pyrogram project to accommodate Smart Plugins is as easy as creating a folder and putting your files
full of handlers inside.
Setting up your Pyrogram project to accommodate Smart Plugins is pretty straightforward:
#. Create a new folder to store all the plugins (e.g.: "plugins").
#. Put your files full of plugins inside.
#. Enable plugins in your Client.
.. note::
@ -103,16 +106,14 @@ full of handlers inside.
from pyrogram import Client
Client("my_account").run()
Client("my_account", plugins_dir="plugins").run()
The first important thing to note is the ``plugins`` folder, whose name is default and can be changed easily by setting
the ``plugins_dir`` parameter when creating a :obj:`Client <pyrogram.Client>`; you can put *any python file* in there
and each file can contain *any decorated function* (handlers) with only one limitation: within a single plugin file you
must use different names for each decorated function. Your Pyrogram Client instance (in the ``main.py`` file) will
**automatically** scan the folder upon creation to search for valid handlers and register them for you.
The first important thing to note is the new ``plugins`` folder, whose name is passed to the the ``plugins_dir``
parameter when creating a :obj:`Client <pyrogram.Client>` in the ``main.py`` file — you can put *any python file* in
there and each file can contain *any decorated function* (handlers) with only one limitation: within a single plugin
file you must use different names for each decorated function. Your Pyrogram Client instance will **automatically**
scan the folder upon creation to search for valid handlers and register them for you.
Then you'll notice you can now use decorators. That's right, you can apply the usual decorators to your callback
functions in a static way, i.e. **without having the Client instance around**: simply use ``@Client`` (Client class)
instead of the usual ``@app`` (Client instance) namespace and things will work just the same.
The ``main.py`` script is now at its bare minimum and cleanest state.