Skip to content

A customized pyromod

License

LGPL-3.0, GPL-3.0 licenses found

Licenses found

LGPL-3.0
COPYING.lesser
GPL-3.0
COPYING
Notifications You must be signed in to change notification settings

adityaprasad502/patchpyro

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PatchPyro

This is a fork of pyromod (renamed as patchpyro) for personal usecases.

Remember that this fork contains only conversation patch.

Requirements:

pyrogram>=2.0.69
python>=3.9

Installation:

python -m pip install patchpyro

Usage:

Import patchpyro at least one time in your script, so you'll be able to use modified pyrogram in all files of the same proccess. Example:

# config.py
from patchpyro import listen # or import patchpyro.listen
from pyrogram import Client

mybot = Client("mysession")
# any other .py
from config import mybot
# no need to import patchpyro again pyrogram is already monkeypatched globally (at the same proccess)

patchpyro.listen

Just import it, it will automatically do the monkeypatch and you'll get these new methods:

  • Available bound methods::
    • Chat.listen, User.listen

      • await mybot.listen(chat_id, filters=None, timeout=30)
      • raises asyncio.TimeoutError if timeout (optional parameter)
      • Awaits for a new message in the specified chat and returns it.
      • You can pass Update Filters to the filters parameter just like you do for the update handlers.
      • E.g. filters=filters.photo & filters.bot
    • Chat.ask, User.ask

      • await mybot.ask(text, chat_id, filters=None, timeout=30)
      • Same of .listen() above, but sends a message before awaiting.
      • You can pass custom parameters to its send_message() call. Check the example below.
    • Chat.asker, User.asker

      • await mybot.asker(chat_id, filters=None, timeout=36)
      • same as .listen() but .asker() returns None instead of raising asyncio.TimeoutError.
      • Found useful in some cases for me, .asker() has a default timeout of 2 minutes.
      • You can adjust it by passing as a argument. Refer the example code given below.

Examples:

For .asker():

...
    sendx = await client.send_message(chat_id, "`Send me your name:`")
    answer = await client.asker(chat_id, filters=None, timeout=60)
    if not answer: # `None` if timeout if no reply received.
        return await sendx.reply_text("How long should I wait?, Eh! Bye!")
    await answer.reply_text(f"{answer.text}, That's a cool name!")
...

For .ask():

...
    answer = await client.ask(chat_id, '*Send me your name:*', parse_mode=enums.ParseMode.MARKDOWN)
    await client.send_message(chat_id, f'Your name is: {answer.text}')
...

Copyright & License

This project may include snippets of Pyrogram code

Licensed under the terms of the GNU Lesser General Public License v3 or later (LGPLv3+)

About

A customized pyromod

Topics

Resources

License

LGPL-3.0, GPL-3.0 licenses found

Licenses found

LGPL-3.0
COPYING.lesser
GPL-3.0
COPYING

Stars

Watchers

Forks

Languages

  • Python 100.0%