Skip to content
This repository has been archived by the owner on Sep 6, 2024. It is now read-only.

Commit

Permalink
Release Bug Fix Update: 1.2.6
Browse files Browse the repository at this point in the history
  • Loading branch information
jayantkageri and Dhruv Arora committed Oct 29, 2021
1 parent 2f6b5b6 commit 4820dcb
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 301 deletions.
310 changes: 10 additions & 300 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
<!-- - If the admin is Anonymous Admin, it also checks his rights by making an Callback -->
- 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:[email protected])

> 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 <https://github.com/jayantkageri>.
Expand Down
2 changes: 1 addition & 1 deletion tgEasy/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
from .decorater import *
from .helpers import *

__version__ = "1.2.5"
__version__ = "1.2.6"
__copyright__ = "Copyright 2021 Jayant Hegde Kageri <github.com/jayantkageri>"
__license__ = "GNU Lesser General Public License v3 or later (LGPLv3+)"
logging = logger.getLogger("tgEasy")
Expand Down

0 comments on commit 4820dcb

Please sign in to comment.