tgEasy | Easy for a Brighter Shine | Monkey Patcher Addon for Pyrogram

Overview

tgEasy

tgEasy

from tgEasy import tgClient, command
from pyrogram import Client

app = tgClient(Client("my_account"))

@command("start", group_only=True)
async def start(client, message):
    await message.reply_text(f"Hello {message.from_user.mention}")

app.run()

Featurs

  • Easy: You can install tgEasy with pip and start building your applications right away.

  • Fast: With the Pyrogram, tgEasy's speed is enhanced

  • Type-hinted: Types and methods are all type-hinted, enabling excellent editor support.

  • Asynchronous: With the Asynchronous, tgEasy can handle Multiple Requests at a time.

  • Documented: All of the available methods, types and functions are well documented.

  • Comprehensive: With the help of Pyrogram, Execute any advanced action an official client is able to do, and even more.

Configuration

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 !

Documatation

  • Never name tgEasy for your any files/directory

tgEasy.tgClient

  • A Class for Initialising the tgEasy and it's Methods, Types and Functions
  • Parameters:
    • client (pyrogram.Client):
      • The Pyrogram Client

Example

from tgEasy import tgClient
from pyrogram import Client

app = tgClient(Client("my_account"))

tgEasy.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

import pyrogram
from tgEasy import command

@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.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

import pyrogram
from tgEasy import command, callback

@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"
        )
      ]])
    )

@callback("data")
async def data(client, CallbackQuery):
  await CallbackQuery.answer("Hello :)", show_alert=True)

tgEasy.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

from tgEasy import command, adminsOnly

@command("start")
@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 [Not Recommended to use this], instead of running python3 -m tgEasy.

  • This calls pyrogram.Client.start(), pyrogram.idle() and pyrogram.Client.stop()

Example

from tgEasy import run

run()

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

from tgEasy import get_user, command, adminsOnly

@command("ban", group_only=True, self_admin=True)
@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

from tgEasy import command, get_user_adv

@command("id")
async def id(client, message):
  user = await get_user_adv(message)
  await message.reply_text(f"Your ID is `{user.id}`")

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.
  • Returns:

    • True if the User have the Right.
    • False if the User don't have the Right.

Example

from tgEasy import command, check_rights, get_user

@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

  • 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.
  • Returns:

    • True if the User is Admin.
    • False if the User is't Admin.

Example

from tgEasy import command, is_admin, adminsOnly

@command("ban", group_only=True, self_admin=True)
@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

from tgEasy import command, handle_error

@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

from tgEasy import command, send_typing

@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.

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 Projects Codes may contain snippets or codes of Pyrogram.
  • Pyrogram - Telegram MTProto API Client Library for Python. Copyright (C) 2017-2020 Dan https://github.com/delivrance
  • This Project uses Pyromod for making it more convenient.
  • Pyromod - A monkeypatcher add-on for Pyrogram
  • Copyright (C) 2020 - 2021 Cezar https://github.com/usernein
You might also like...
Blender addon - Breakdown in object mode

Breakdowner Breakdown in object mode Download latest Demo Youtube Description Same breakdown shortcut as in armature mode in object mode Currently onl

A Blender addon to align the origin to the top, center or bottom of a mesh object
A Blender addon to align the origin to the top, center or bottom of a mesh object

Align Origin Blender Addon. Align Origin Blender Addon. What? This simple addon lets you align the origin to the top, center or bottom of a mesh objec

Blender addon that simplifies access to useful operators and adds missing functionality
Blender addon that simplifies access to useful operators and adds missing functionality

Quick Menu is a Blender addon that simplifies common tasks Compatible with Blender 3.x.x Install through Edit - Preferences - Addons - Install... -

Blender Addon for Snapping a UV to a specific part of a Tilemap

UVGridSnapper A simple Blender Addon for easier texturing. A menu in the UV editor allows a square UV to be snapped to an Atlas texture, or Tilemap. P

An AddOn storing wireguard configuration

Wireguard Database Connector Overview Development Status: 0.1.7 (alpha) First of all, I'd like to thank Jared McKnight for wireguard who inspired me t

Blender addon for executing the operator in response to the received OSC message.
Blender addon for executing the operator in response to the received OSC message.

I/F Joiner 受信したOSCメッセージに応じてオペレータ(bpy.ops)を実行するアドオンです. OSC通信に対応したコントローラやアプリをインストールしたスマートフォンを使用してBlenderを操作することが可能になります. 同時開発しているAndroidコントローラ化アプリMocopa

Easytile blender - Simple Blender 2.83 addon for tiling meshes easily

easytile_blender Dead simple, barebones Blender (2.83) addon for placing meshes as tiles. Installation In Blender, go to Edit Preferences Add-ons

A Blender addon for VSE that auto-adjusts video strip's length, if speed effect is applied.

Blender VSE Speed Adjust Addon When using Video Sequence Editor in Blender, the speed effect strip doesn't auto-adjusts clip length when changing its

Blender addon, import and update mixamo animation

This is a blender addon for import and update mixamo animations.

Releases(v1.3.3)
  • v1.3.3(Apr 25, 2022)

  • v1.3.1(Jan 18, 2022)

    What's New

    • If you wanted a custom handler for one function only, then it's now introduced, use it via a handler field in @tgClient.command which accepts list or str.
    • Bug Fixes and Improvements.

    Full Changelog: https://github.com/jayantkageri/tgEasy/compare/v1.3.0...v1.3.1

    Source code(tar.gz)
    Source code(zip)
  • v1.3.0(Jan 5, 2022)

    What's New

    • So finally, We are the first one to make Pyrogram Anonymous Admin Verification Opensource, From now tgEasy will be verifying Anonymous Admins also. A Special Thanks to @annihilatorrrr for helping with this.
    • Bug Fixes

    Full Changelog: https://github.com/jayantkageri/tgEasy/compare/v1.2.7...v1.3.0

    Source code(tar.gz)
    Source code(zip)
  • v1.2.7(Nov 19, 2021)

    What's Changed

    • Fixed the self_admin parameter.
    • Fixed the adminsOnly decorator not supporting permissions in the list and same fixed in check_rights
    • Fixed the Error Occurring with static method decorator, self is Not Defined by @dhruvx09 in https://github.com/jayantkageri/tgEasy/pull/12
    • Optimized code and file system

    Full Changelog: https://github.com/jayantkageri/tgEasy/compare/v1.2.6...v1.2.7

    Source code(tar.gz)
    Source code(zip)
  • v1.2.6(Oct 29, 2021)

    What's Changed

    • Fixed the Error Occurring with Static Method Decorator, self is not Defined by @dhruvx09 in https://github.com/jayantkageri/tgEasy/pull/12

    What's New

    • Moved Documentations to GitHub Wiki

    Full Changelog: https://github.com/jayantkageri/tgEasy/compare/v1.2.5...v1.2.6

    Source code(tar.gz)
    Source code(zip)
  • v1.2.5(Oct 26, 2021)

    tgEasy's Bug Fix Update v1.2.5

    What's Changed

    • Update decorater.py by @dhruvx09 in https://github.com/jayantkageri/tgEasy/pull/6
    • Decorating method with @staticmethod by @Awesome-RJ in https://github.com/jayantkageri/tgEasy/pull/3
    • Mis reimport of 'logging' by @Awesome-RJ in https://github.com/jayantkageri/tgEasy/pull/4
    • Update decorater.py by @dhruvx09 in https://github.com/jayantkageri/tgEasy/pull/7
    • Merge if Statements @Awesome-RJ in https://github.com/jayantkageri/tgEasy/pull/9
    • Using in by @Awesome-RJ in https://github.com/jayantkageri/tgEasy/pull/8

    New Contributors

    • @dhruvx09 made their first contribution in https://github.com/jayantkageri/tgEasy/pull/6
    • @Awesome-RJ made their first contribution in https://github.com/jayantkageri/tgEasy/pull/3

    Full Changelog: https://github.com/jayantkageri/tgEasy/compare/v1.2.4...v1.2.5

    Source code(tar.gz)
    Source code(zip)
  • v1.2.4(Oct 1, 2021)

    tgEasy v1.2.4

    What's New

    • Bug Fixes.

    Things to do

    • Anonymous Admin Rights Check, cannot assure that it will come in Next Update only.
    • Make more Stable
    Source code(tar.gz)
    Source code(zip)
  • v1.2.3(Sep 29, 2021)

    tgEasy v1.2.3

    What's New

    • Added Support for Multiple Clients.
    • Added Scaffold (For Developers Convenience)
    • Bug Fixes.

    Things to Change in Code

    • Change available methods to @tgClient.{available_methods}

    Things to do

    • Anonymous Admin Rights Check, cannot assure that it will come in Next Update only.
    • Make more Stable
    Source code(tar.gz)
    Source code(zip)
  • v1.1.3(Aug 24, 2021)

    tgEasy v1.1.3

    What's New

    • Added self_only.
    • Added Support for Userbots.
    • Added Support for Custom Plugins.
    • Added Support for Custom Command Handlers.
    • Bug Fixes.

    Things to Change in Code

    • Make your Own Client and Pass it in tgClient.

    Things to do

    • Anonymous Admin Rights Check, cannot assure that it will come in Next Update only.
    Source code(tar.gz)
    Source code(zip)
Owner
Jayant Hegde Kageri
Nothing is Easy in the Life when you are't Interested in it
Jayant Hegde Kageri
CRC Reverse Engineering Tool in Python

CRC Beagle CRC Beagle is a tool for reverse engineering CRCs. It is designed for commnication protocols where you often have several messages of the s

Colin O'Flynn 51 Jan 05, 2023
Project Guide for ASAM OpenX standards

ASAM Project Guide Important This guide is a work in progress and subject to change! Hosted version available at: ASAM Project Guide (Link) Includes:

ASAM e.V. 2 Mar 17, 2022
User management system (UMS), has the primary purpose of connecting to an Active Directory (AD)

💿 Sistema de Gerenciamento de Usuário (SGU) 📚 Sobre o projeto Sistema de gerenciamento de usuários (SGU), tem o objetivo primário de se conectar a u

Patrick Viegas 2 Feb 25, 2022
SimplePyBLE - Python bindings for SimpleBLE

The ultimate fully-fledged cross-platform Python BLE library, designed for simplicity and ease of use.

Open Bluetooth Toolbox 27 Aug 28, 2022
Exercicios de Python do Curso Em Video, apresentado por Gustavo Guanabara.

Exercicios Curso Em Video de Python Exercicios de Python do Curso Em Video, apresentado por Gustavo Guanabara. OBS.: Na data de postagem deste repo já

Lorenzo Ribeiro Varalo 0 Oct 21, 2021
Automated, progress quest-inspired procedural adventuring

Tales of an Endless Journey (TEJ) Automated, progress quest-inspired procedural adventuring What is this project? Journey is the result of many, many

8 Dec 14, 2021
Software that extracts spreadsheets from various .pdf files to .csv

Extração de planilhas de diversos arquivos .pdf para .csv O código inteiro foi desenvolvido em Python. Foi utilizado o pacote "tabula" e a biblioteca

Marcos Silva 2 Jan 09, 2022
A numbers extract from string python package

Made with Python3 (C) @FayasNoushad Copyright permission under MIT License License - https://github.com/FayasNoushad/Numbers-Extract/blob/main/LICENS

Fayas Noushad 4 Nov 28, 2021
Liquid Rocket Engine Cooling Simulation

Liquid Rocket Engine Cooling Simulation NASA CEA The implemented class calls NASA CEA via RocketCEA. INSTALL GUIDE In progress install instructions fo

John Salib 1 Jan 30, 2022
Beancount: Double-Entry Accounting from Text Files.

beancount: Double-Entry Accounting from Text Files Contents Description Documentation Download & Installation Versions Filing Bugs Copyright and Licen

2.3k Dec 28, 2022
Blender addon - Breakdown in object mode

Breakdowner Breakdown in object mode Download latest Demo Youtube Description Same breakdown shortcut as in armature mode in object mode Currently onl

Samuel Bernou 4 Mar 30, 2022
Functional interface for concurrent futures, including asynchronous I/O.

Futured provides a consistent interface for concurrent functional programming in Python. It wraps any callable to return a concurrent.futures.Future,

A. Coady 11 Nov 27, 2022
A collection of design patterns and idioms in Python (With tests!).

Python Patterns Help the project financially: Donate: https://smartlegion.github.io/donate/ Yandex Money: https://yoomoney.ru/to/4100115206129186 PayP

5 Sep 12, 2021
MoBioTools A simple yet versatile toolkit to automatically setup quantum mechanics/molecular mechanics

A simple yet versatile toolkit to setup quantum mechanical/molecular mechanical (QM/MM) calculations from molecular dynamics trajectories.

MoBioChem 17 Nov 27, 2022
Validate UC alumni identifier numbers with Python 3.

UC number validator Validate UC alumni identifier numbers with Python 3. Getting started Install the library with: pip install -U ucnumber Usage from

Open Source eUC 1 Jul 07, 2021
LanguageCreator - Simple library for easy creation transpilator.

LanguageCreator - Simple library for easy creation transpilator. Create transpilators in one hour! Install. Download code, rename folder to "LanguageC

Ivan Perzhinsky. 2 Dec 31, 2021
Custom Python code for calculating the Probability of Profit (POP) for options trading strategies using Monte Carlo Simulations.

Custom Python code for calculating the Probability of Profit (POP) for options trading strategies using Monte Carlo Simulations.

35 Nov 22, 2022
Tools to convert SQLAlchemy models to Pydantic models

Pydantic-SQLAlchemy Tools to generate Pydantic models from SQLAlchemy models. Still experimental. How to use Quick example: from typing import List f

Sebastián Ramírez 893 Dec 29, 2022
A web project to control the daily life budget planing

Budget Planning - API In this repo there's only the API and Back-End of the this project. Install and run the project # install virtualenv --python=py

Leonardo Da Vinci 1 Oct 24, 2021
Reference management solution using Python and Notion.

notion-scholar Reference management solution using Python and Notion. The main idea of this app is to allow to furnish a Notion database using a BibTe

Thomas Hirtz 69 Dec 21, 2022