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
Fork of pathlib aiming to support the full stdlib Python API.

pathlib2 Fork of pathlib aiming to support the full stdlib Python API. The old pathlib module on bitbucket is in bugfix-only mode. The goal of pathlib

Jazzband 73 Dec 23, 2022
Clear merged pull requests ref (branch) on GitHub

GitHub PR Cleansing This tool is used to clear merged pull requests ref (branch) on GitHub. GitHub has no feature to auto delete branches on pull requ

Andi N. Dirgantara 12 Apr 19, 2022
BestBuy Script Designed to purchase any item when it becomes available.

prerequisites: Selnium; undetected-chromedriver. This Script is designed to order an Item provided a link from BestBuy.com only.

Bransen Smith 0 Jan 12, 2022
Companion Web site for Fluent Python, Second Edition

Fluent Python, the site Source code and content for fluentpython.com. The site complements Fluent Python, Second Edition with extra content that did n

Fluent Python 49 Dec 08, 2022
Senator Stock Trading Tester

Senator Stock Trading Tester Program to compare stock performance of Senator's transactions vs when the sale is disclosed. Using to find if tracking S

Cole Cestaro 1 Dec 07, 2021
It is a personal assistant chatbot, capable to perform many tasks same as Google Assistant plus more extra features...

PersonalAssistant It is an Personal Assistant, capable to perform many tasks with some unique features, that you haven'e seen yet.... Features / Tasks

Roshan Kumar 95 Dec 21, 2022
Insert a Spotify Playlist, Get a list of YouTube URLs from it.

spotbee This is a module that spits out YouTube URLs from Spotify Playlist URLs Why use this? It is asynchronous which makes it compatible to use with

Nishant Sapkota 10 Apr 06, 2022
Nuclei - Burp Extension allows to run nuclei scanner directly from burp and transforms json results into the issues

Nuclei - Burp Extension Simple extension that allows to run nuclei scanner directly from burp and transforms json results into the issues. Installatio

106 Dec 22, 2022
Supercharge your NFTs with new behaviours and superpowers!

WrapX Supercharge your NFTs with new behaviours and superpowers! WrapX is a collection of Wrappers (currently one - WrapXSet) to decorate your NTFs ad

Emiliano Bonassi 9 Jun 13, 2022
A calculator developed in Python.

Calculadora Uma simples calculadora... ( + − × ÷ ) 💻 Situação do projeto: Projeto finalizado ✔️ 🛠 Tecnologias: Python Tkinter (GUI) ⚙️ Pré-requisito

Arthur V.B.S. 1 Jan 27, 2022
Practice in Oxford_AI&ML class

Practice in Oxford_AI&ML class

St3ve Lee 2 Feb 04, 2022
Nick Craig-Wood's Website

Nick Craig-Wood's public website This directory tree is used to build all the different docs for Nick Craig-Wood's website. The content here is (c) Ni

Nick Craig-Wood 2 Sep 02, 2022
Cardano SundaeSwap ISO SPO vote ranking script

Cardano SundaeSwap ISO SPOs vote ranking This Python 3 script uses the database populated by cardano-db-sync from the Cardano blockchain to generate a

SM₳UG 1 Nov 17, 2021
MIB2 STD ZR Firmware Upgrade

Upgrade MIB2 STD ZR Firmware (without Navigation) About This repository contains some scripts and documentation how to upgrade the MIB2 firmware to a

Fabian 18 Dec 29, 2022
Notebook researcher - Notebook researcher with python

notebook_researcher To run the server, you must follow these instructions: At th

4 Sep 02, 2022
HomeAssistant Linux Companion

Application to run on linux desktop computer to provide sensors data to homeasssistant, and get notifications as if it was a mobile device.

Javier Lopez 10 Dec 27, 2022
Morth - Stack Based Programming Language

Morth WARNING! THIS LANGUAGE IS A WORKING PROGRESS. THIS IS JUST A HOBBY PROJECT

Dominik Danner 2 Mar 05, 2022
Jack Morgan's Advent of Code Solutions

Advent-of-Code Jack Morgan's Advent of Code Solutions Usage Run . initiate.sh year day To initiate a day. This sets up a template python file, and pul

Jack Morgan 1 Dec 10, 2021
Assembly example for CadQuery

Spindle and vacuum attachment This is a model of the vacuum attachment for my Workbee CNC router. There is a mist spray coming from the left hand side

Marcus Boyd 20 Sep 16, 2022
Snakemake worflow to process and filter long read data from Oxford Nanopore Technologies.

Nanopore-Workflow Snakemake workflow to process and filter long read data from Oxford Nanopore Technologies. It is designed to compare whole human gen

5 May 13, 2022