Skip to main content

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.TimeoutError if 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

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() returns None instead of raising asyncio.TimeoutError.
  • Useful for graceful timeout handling, .asker() has a default timeout of 2 minutes (adjustable via timeout argument).

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

patchpyro-2.1.1.tar.gz (21.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

patchpyro-2.1.1-py3-none-any.whl (24.2 kB view details)

Uploaded Python 3

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

Hashes for patchpyro-2.1.1.tar.gz
Algorithm Hash digest
SHA256 ce4f2b64d7f6316162375dd6f1886c95d93a80fa73d716ede96bf8e5c88c2363
MD5 c59a7a4052fb890b07944c2435f66108
BLAKE2b-256 e4e749b6ea743eceffcf4915e8b712e5cb3584c57eb7a6acf7f1b371b0e2f65c

See more details on using hashes here.

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

Hashes for patchpyro-2.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 16853264e81eb50d203ac07f21d894ce24db954c2eec18dd440134c20b0df232
MD5 a5c36949aedbf49de72ea84346e15aa3
BLAKE2b-256 a7530fc065751a731360930022668d575ce49ca58561fc30b586550fc38f3597

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page