A modified pyromod by a.devh.in
Project description
PatchPyro
A fork of pyromod (renamed as patchpyro) providing conversation patches for Pyrogram-based clients.
Requirements
kurigram>=2.0.69
python>=3.9
Installation
pip install patchpyro
Usage
Import patchpyro at least once in your script so you can use the modified Pyrogram in all files of the same process.
Example
# config.py
from patchpyro import listen # or import patchpyro.listen
from pyrogram import Client
listen.thank() # use this if your linter/IDE flags patchpyro as an unused import.
mybot = Client("mysession")
# any other .py
from config import mybot
# no need to import patchpyro again; Pyrogram is already monkeypatched globally (in the same process)
Available Methods
Just importing patchpyro.listen will automatically do the monkeypatch and you'll get these new methods:
Chat.listen, User.listen
await mybot.listen(chat_id, filters=None, timeout=30)- Awaits a new message in the specified chat and returns it.
- Raises
asyncio.TimeoutErrorif timeout (optional parameter) occurs. - You can pass Update Filters to the filters parameter just like you do for the update handlers.
- E.g.
filters=filters.photo & filters.bot
- E.g.
Chat.ask, User.ask
await mybot.ask(text, chat_id, filters=None, timeout=30)- Same as
.listen()above, but sends a message before awaiting. - You can pass custom parameters to its internal
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()returnsNoneinstead of raisingasyncio.TimeoutError. - Useful for graceful timeout handling,
.asker()has a default timeout of 2 minutes (adjustable viatimeoutargument).
Examples
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 reached with no reply.
return await sendx.reply_text("How long should I wait? Bye!")
await answer.reply_text(f"{answer.text}, That's a cool name!")
# ...
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 includes code from:
- kurimod: Monkeypatcher logic and modern async compatibility fixes.
- Pyrogram: Telegram MTProto API Client Library for Python. Copyright (C) 2017-2022 Dan <https://github.com/delivrance>
- pyromod: Original conversation patch logic.
Licensed under the terms of the GNU Lesser General Public License v3 or later (LGPLv3+)
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file patchpyro-2.1.1.tar.gz.
File metadata
- Download URL: patchpyro-2.1.1.tar.gz
- Upload date:
- Size: 21.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ce4f2b64d7f6316162375dd6f1886c95d93a80fa73d716ede96bf8e5c88c2363
|
|
| MD5 |
c59a7a4052fb890b07944c2435f66108
|
|
| BLAKE2b-256 |
e4e749b6ea743eceffcf4915e8b712e5cb3584c57eb7a6acf7f1b371b0e2f65c
|
File details
Details for the file patchpyro-2.1.1-py3-none-any.whl.
File metadata
- Download URL: patchpyro-2.1.1-py3-none-any.whl
- Upload date:
- Size: 24.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
16853264e81eb50d203ac07f21d894ce24db954c2eec18dd440134c20b0df232
|
|
| MD5 |
a5c36949aedbf49de72ea84346e15aa3
|
|
| BLAKE2b-256 |
a7530fc065751a731360930022668d575ce49ca58561fc30b586550fc38f3597
|