From 4820dcbbbf16ea7b29a51d61956dcb9389b55493 Mon Sep 17 00:00:00 2001 From: Jayant Hegde Kageri Date: Fri, 29 Oct 2021 13:45:45 +0530 Subject: [PATCH] Release Bug Fix Update: 1.2.6 For changelog: https://github.com/jayantkageri/tgEasy/releases/tag/v1.2.6 Co-Authored-By: Dhruv Arora <71146870+dhruvx09@users.noreply.github.com> --- README.md | 310 ++------------------------------------------- tgEasy/__init__.py | 2 +- 2 files changed, 11 insertions(+), 301 deletions(-) diff --git a/README.md b/README.md index 246d039..95f6f5b 100644 --- a/README.md +++ b/README.md @@ -49,314 +49,24 @@ app.run() - **Documented**: All of the available methods, types and functions are well documented. - **Comprehensive**: With the help of [Pyrogram](https://docs.pyrogram.org), Execute any advanced action an official client is able to do, and even more. - -## Configuration +### Requirements - Make an .env or set the Following in your Environment Variables. - - `LOGS` - Log Group ID - - `PLUGINS` - Plugins Directory Path where your Plugins are located, By Default it is `plugins` Directory - - `HANDLERS` - The Command Handlers, By Default it is `/` and `!` +- Python 3.7 or higher. +- A [Telegram API key](https://docs.pyrogram.org/intro/setup#api-keys). -## Documatation -- Never name `tgEasy` for your any files/directory +### Installing -### `tgEasy.tgClient` -- A Class for Initialising the tgEasy and it's Methods, Types and Functions -- Parameters: - - client (`pyrogram.Client`): - - The Pyrogram Client - -#### Example -```python -from tgEasy import tgClient -from pyrogram import Client - -app = tgClient(Client("my_account")) -``` -### `tgEasy.tgClient.command` -- A decorater to Register Commands in simple way and manage errors in that Function itself, alternative for `@pyrogram.Client.on_message(pyrogram.filters.command('command'))` -- Parameters: - - command (str || list): - - The command to be handled for a function - - - group_only (bool) **optional**: - - If True, the command will only executed in Groups only, By Default False. - - - pm_only (bool) **optional**: - - If True, the command will only executed in Private Messages only, By Default False. - - - self_admin (bool) **optional**: - - If True, the command will only executeed if the Bot is Admin in the Chat, By Default False - - - self_only (bool) **optional**: - - If True, the command will only executeed if the Bot is Admin in the Chat, By Default False - - - filter (`~pyrogram.filters`) **optional**: - - Pyrogram Filters, hope you know about this, for Advaced usage. By Default `~pyrogram.filters.edited` and this can't be changed. Use `and` for seaperating filters. - -#### Example -```python -import pyrogram -from tgEasy import tgClient - -app = tgClient(pyrogram.Client()) - -@app.command("start", group_only=False, pm_only=False, self_admin=False, self_only=False, pyrogram.filters.chat("777000") and pyrogram.filters.text) -async def start(client, message): - await message.reply_text(f"Hello {message.from_user.mention}") -``` - -### `tgEasy.tgClient.callback` - -- A decorater to Register Callback Quiries in simple way and manage errors in that Function itself, alternative for `@pyrogram.Client.on_callback_query(pyrogram.filters.regex('^data.*'))` -- Parameters: - - data (str || list): - - The callback query to be handled for a function - - - self_admin (bool) **optional**: - - If True, the command will only executeed if the Bot is Admin in the Chat, By Default False - - - filter (`~pyrogram.filters`) **optional**: - - Pyrogram Filters, hope you know about this, for Advaced usage. Use `and` for seaperating filters. - -#### Example -```python -import pyrogram -from tgEasy import tgClient - -app = tgClient(pyrogram.Client()) - -@app.command("start") -async def start(client, message): - await message.reply_text( - f"Hello {message.from_user.mention}", - reply_markup=pyrogram.types.InlineKeyboardMarkup([[ - pyrogram.types.InlineKeyboardButton( - "Click Here", - "data" - ) - ]]) - ) - -@app.callback("data") -async def data(client, CallbackQuery): - await CallbackQuery.answer("Hello :)", show_alert=True) -``` -### `tgEasy.tgClient.adminsOnly` -- A decorater for running the function only if the admin have the specified Rights. - -- We are still Working on this to make it to check Rights for Anonoymous Admins, Stay Tuned. -- Parameters: - - permission (str): - - Permission which the User must have to use the Functions -- - - TRUST_ANON_ADMIN (bool) **optional**: - - If User is Anonymous Admin also, It Runs the Function, By Default False - -#### Example -```python -from tgEasy import tgClient -import pyrogram - -app = tgClient(pyrogram.Client()) - -@app.command("start") -@app.adminsOnly("can_change_info") -async def start(client, message): - await message.reply_text(f"Hello Admin {message.from_user.mention}") -``` - -### `tgEasy.tgClient.run()` -- Runs the `pyrogram.Client` by adding `tgEasy.tgClient.run()` in your main file and run. - -- This calls `pyrogram.Client.start()`, `pyrogram.idle()` and `pyrogram.Client.stop()` -#### Example -```python -import pyrogram -from tgEasy import tgClient - -app = tgClient(pyrogram.Client()) - -app.run() -``` - -### `tgEast.tgClint.runClients()` -- Runs the Multiple `pyrogram.Client` of tgEasy by adding `tgEasy.tgClient.run()` in your main file and run. - -- This calls `pyrogram.Client.start()`, `pyrogram.idle()` and `pyrogram.Client.stop()` - -- Pass the tgEasy Clients in it. - -#### Example -```python -from tgEasy import tgClient -import pyrogram - -app = tgClient(pyrogram.Client()) -app1 = tgClient(pyrogram.Client()) - -tgClient.runClients(app, app1) -``` -### `tgEasy.get_user` -- Gets a User from Message/RepliedMessageFromUser -- Parameters: - - m (`~pyrogram.types.Message` || `~pyrogram.types.CallbackQuery`) -- Returns: - - `pyrogram.types.User` on Success - - `False` on Error - -#### Example -```python -from tgEasy import get_user, tgClient -import pyrogram - -app = tgClient(pyrogram.Client()) - -@app.command("ban", group_only=True, self_admin=True) -@app.adminsOnly("can_restrict_members") -async def ban(client, message): - user = await get_user(message) - await message.chat.kick_member(user.id) -``` -### `tgEasy.get_user_adv` -- A Function to Get the User from the Message/CallbackQuery, If there is None arguments, returns the From User. -- Parameters: - - m (`pyrogram.types.Message` || `pyrogram.types.CallbackQuery`): - - Message or Callbackquery. -- Returns: - - `pyrogram.types.User` on Success - - `False` on Error - -#### Example -```python -from tgEasy import get_user_adv -import pyrogram - -app = tgClient(pyrogram.Client()) - -@app.command("id") -async def id(client, message): - user = await get_user_adv(message) - await message.reply_text(f"Your ID is `{user.id}`") +``` bash +pip3 install tgEasy ``` -### `tgEasy.check_rights` -- Checks the Rights of an User -- This is an Helper Function for `adminsOnly` - -- Parameters: - - chat_id (int): - - The Chat ID of Which Chat have to check the Rights. - - - user_id (int): - - The User ID of Whose Rights have to Check. - - - rights (str): - - The Rights have to Check. - - - client (`pyrogram.Client`): - - From which Client to Check the Rights. - -- Returns: - - `True` if the User have the Right. - - `False` if the User don't have the Right. - -#### Example -```python -from tgEasy import tgClient, check_rights, get_user -import pyrogram - -app = tgClient(pyrogram.Client()) - -@app.command("ban", group_only=True, self_admin=True) -async def ban(client, message): - if not await check_rights(message.chat.id, message.from_user.id, "can_restrict_members"): - return await message.reply_text("You don't have necessary rights to use this Command.") - user = await get_user(message) - await message.chat.kick_member(user.id) -``` -### `tgEasy.is_admin` -- A Functions to Check if the User is Admin or not +### Resources -- Parameters: - - chat_id (int): - - The Chat ID of Which Chat have to check the Admin Status. - - - user_id (int): - - The User ID of Whose Admin Status have to Check. - - - client (`pyrogram.Client`): - - From which Client to Check the Admin Status. - -- Returns: - - `True` if the User is Admin. - - `False` if the User is't Admin. - #### Example -```python -from tgEasy import tgClient, is_admin, adminsOnly -import pyrogram - -app = tgClient(pyrogram.Client()) - -@app.command("ban", group_only=True, self_admin=True) -@app.adminsOnly("can_restrict_members") -async def ban(client, message): - if await is_admin(message.chat.id, (await get_user(mesasge)).id): - return await message.reply_text("You can't Ban Admins.") - await message.chat.kick_member((await get_user(message)).id) - await message.reply_text("User has been Banned.") -``` -### `tgEasy.handle_error` -- A Function to Handle the Errors in Functions. -- This Sends the Error Log to the Log Group and Replies Sorry Message for the Users. -- This is Helper for all of the functions for handling the Errors. - -- Parameters: - - error: - - The Exceptation. - - - m (`pyrogram.types.Message` or `pyrogram.types.CallbackQuery`): - - The Message or Callback Query where the Error occurred. - -#### Exapmle -```python -from tgEasy import tgClient, handle_error -import pyrogram - -app = tgClient(pyrogram.Client()) - -@app.command("start") -async def start(client, message): - try: - await message.reply_text("Hi :D') # I intentionally made an bug for Example :/ - except Exceptation as e: - return await handle_error(e, message) -``` - -### `tgEasy.send_typing` -- A Function to Send the Typing Status to the Chat. - -- Parameters: - - m (`pyrogram.types.Message` || `pyrogram.types.CallbackQuery`): - - Message or Callbackquery. - -#### Example -```python -from tgEasy import tgClinet, send_typing -import pyrogram - -app = tgClient(pyrogram.Client()) - -@app.command("start") -async def start(client, message): - await send_typing(message) - await message.reply_text("Hello") -``` -### Smart Plugins -- The Smart Plugins Concept is't Implemented yes, It will be avaiable soon. +- The docs contain lots of resources to help you get started with tgEasy: https://github.com/jayantkageri/tgEasy/wiki. +- Seeking extra help? Come join and ask our community: https://t.me/tgEasyNews. +- For other kind of inquiries, you can send a [message](https://t.me/jayantkageri) or an [e-mail](mailto:jayantkageri@gmail.com) -> Pro Tip: ```tgEasy imports all of the pyromod Functions, Methods and Types, use `from tgEasy import [pyromod function name]`, A Pyromod Function and make it More convenient to develop``` ## Copyright and Licence - tgEasy is Licenced under the Terms and Conditions of OSI Approved GNU Lesser General Public License v3 or later (LGPLv3+). - Copyright 2021 Jayant Hegde Kageri . diff --git a/tgEasy/__init__.py b/tgEasy/__init__.py index 319ae4f..2c26582 100644 --- a/tgEasy/__init__.py +++ b/tgEasy/__init__.py @@ -32,7 +32,7 @@ from .decorater import * from .helpers import * -__version__ = "1.2.5" +__version__ = "1.2.6" __copyright__ = "Copyright 2021 Jayant Hegde Kageri " __license__ = "GNU Lesser General Public License v3 or later (LGPLv3+)" logging = logger.getLogger("tgEasy")