pip install https://github.com/IRMilad/rubika/archive/refs/heads/main.zip
import asyncio
from rubika import Client, models, handlers
async def main():
async with Client(session='rubika') as client:
@client.on(handlers.MessageUpdates(models.author_guid() == client._guid))
async def updates(update):
await update.reply('`hello` __from__ **rubika**')
await client.run_until_disconnected()
asyncio.run(main())
methods class
-
You can find the list of methods in the methods.json
-
The list of methods is divided into 9 groups, which are:
users
,chats
,extras
,groups
,messages
,channels
,conracts
,settings
,stickers
,authorisations
from rubika import Client, methods
client = Client(...)
result = await Client(methods.users.GetUserInfo(user_guid='...'))
from rubika import methods
print(dir(methods.users))
from rubika import methods
print(methods.users.SetBlockUser)
- TypeError: if the data type is inconsistent with the allowed values types
- ValueError: if the value does not exist in the allowed list
handlers class
-
Including 5 classes (may be increased) which are:
ChatUpdates
,MessageUpdates
,ShowActivities
,ShowNotifications
,RemoveNotifications
-
These are used to filter updates, whose names indicate what type of update they receive.
The inputs of these classes are models, If __any is true, OR operator is placed between the filters, otherwise AND
from rubika import handlers
async def custom_filter(update, result):
return update.raw_text
handlers.MessageUpdates(custom_filter)
- Filters can be functions
- Between the filters you can use the operators
|
,&
,!=
,==
,>
,>=
,<
,<=
use - To use the operators, the filter (model) must be called
models class
- Including 3 classes, which are:
Operator
,BaseModels
,RegexModel
async def custom_filter(update, result):
return result
handlers.MessageUpdates('hi' != models.raw_text())
handlers.MessageUpdates(custom_filter != models.raw_text())
handlers.MessageUpdates(custom_filter == models.time(func=int))
handlers.MessageUpdates(models.RegexModel(pattern=r'hi'))
handlers.MessageUpdates(
(15 < models.time(func=int) > 10)
&
models.RegexModel(pattern=r'hi')
&
models.is_private
)
# or
handlers.MessageUpdates(
15 < models.time(func=int) > 10,
models.RegexModel(pattern=r'hi'),
models.is_private
)
handlers.MessageUpdates(
models.is_private
|
(models.author_guid() == 'GUID')
)
# or
handlers.MessageUpdates(
models.is_private,
models.author_guid() == 'GUID',
__any=True
)
async with Client(session='rubika') as client:
@client.on(handler)
async def updates(update):
pass
# or
async with Client(session='rubika') as client:
async def updates(update):
pass
client.add_handler(updates, handler)