A Python library to handle steps in pyrogram framework.
Project description
Pyrostep
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.8.8
Now pyrostep is fully asyncronized ...
-
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 / update
python3 -m pip install -U pyrostep
Learn
to start with pyrostep, you have to do two steps:
- import pyrostep
- 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 ( and tcp connection mode ).
- TCP Connection Modes:
- TCPFull
- TCPAbridged
- TCPIntermediate
- TCPAbridgedO
- TCPIntermediateO
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.