Skip to main content

A Python library to handle steps in pyrogram framework.

Project description

Pyrostep

Downloads Python Pyrogram

A Python library to handle steps in pyrogram framework.

Pyrostep helps you to use pyrogram:

  • very easy step handling, waiting for answer, ...
  • change connection timeout, retries, etc.

Updated to 2.10.8

  • connection.session_max_retries completely changed.

Updated to 2.9.8

Now pyrostep is fully asyncronized ...

  • wait_for bug fixed on Python v3.10.x.

  • safe_idle changed, now you dont need this.

  • MetaStore.delete_item removed.

  • MetaStore.clear changed.

  • unregister_steps bug fixed, now cancel asyncio.Future object.

  • clear changed, now blocks listener until complete clearing.

Updated to 2.8.2

In this update, pyrostep completely changed ...

  • New Methods:

    • safe_idle
    • install
    • MetaStore method's name changed.
    • wait_for
  • Renamed Methods:

    • change_store to change_root_store
  • Removed Methods:

    • listen_on_the_side
    • ask
    • ask_wait
  • Removed Package:

    • filters
  • Install

  • Learn:

  • Other

install / update

python3 -m pip install -U pyrostep

Learn

to start with pyrostep, you have to do two steps:

  1. import pyrostep
  2. listen on which client you want
import pyrostep
# ...
cli = Client(...)
pyrostep.listen(cli)

step handling

step handling have two methods:

  • pyrostep.register_next_step(...)
  • pyrostep.unregister_steps(...)

register_next_step register next step, and unregister_steps removes step for user.

see example: ( see examples )

# ...

async def step1(client, msg):
    await msg.reply(
        "Send your name?"
    )
    pyrostep.register_next_step(
        msg.from_user.id,
        step2
    )

async def step2(client, msg):
    await msg.reply(
        f"Your name is {msg.text}"
    )

# ...

wait_for method

if you dont like step handling, can use this method.

see example: ( see examples )

# ...

async def get_name(client, msg):
    await msg.reply(
        "Send your name?"
    )
    answer = await pyrostep.wait_for(
        msg.from_user.id
    )
    await msg.reply(
        f"Your name is {answer.text}"
    )

# ...

Other packages and shortcuts

Connection

connection_max_retries method:

Change connection max retries. (default 3)

invoke_max_retries method:

Change invoke max retries. (default 5)

session_start_timeout method:

Change start timeout. (default 1)

session_max_retries method:

Change session max retries.

Shortcuts

import shortcuts:

from pyrostep import shortcuts

Now see methods:

split_list splites lst list:

>>> shortcuts.split_list([1, 2, 3, 4, 5, 6], 2)
# [[1, 2], [3, 4], [5, 6]]
>>> shortcuts.split_list([1, 2, 3], 2)
# [[1, 2], [3]]

keyboard creates ReplyKeyboardMarkup from your list:

buttons = [
    [
        ["Top Left"], ["Top Right"]
    ],
    [
        ["Bottom | Request Contact", True, "request_contact"]
    ]
]
kb = shortcuts.keyboard(buttons)

inlinekeyboard creates InlineKeyboardMarkup from your list:

buttons = [
    [
        ["Top Left", "data_1"], ["Top Right", "data_2"]
    ],
    [
        ["Bottom", "Your URL", "url"]
    ]
]
ikb = shortcuts.inlinekeyboard(buttons)

validation_channels checks user already in channels or not:

user_id = 56392019
channels = [-102792837, -10823823, 'channel_username']

is_joined = await validation_channels(
    app, user_id, channels
)
# ...
async def invite(app, id, channels) -> None:
    print(
        f"User {id} is not member of channels ({channels})"
    )

is_joined = await validation_channels(
    app, user_id, channels,
    invite_func=invite
)

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

pyrostep-2.10.8.tar.gz (8.7 kB view hashes)

Uploaded Source

Built Distribution

pyrostep-2.10.8-py3-none-any.whl (15.5 kB view hashes)

Uploaded Python 3

Supported by

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