This repository has been archived by the owner on Sep 6, 2024. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
For changelog: https://github.com/jayantkageri/tgEasy/releases/tag/v1.2.6 Co-Authored-By: Dhruv Arora <[email protected]>
- Loading branch information
1 parent
2f6b5b6
commit 4820dcb
Showing
2 changed files
with
11 additions
and
301 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -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>. | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters