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
A very small (15 lines of code) and beautiful fetch script (exclusively for Arch Linux).

minifetch A very small (15 lines of code) and beautiful fetch script (exclusively for Arch Linux). There are many fetch scripts out there but I wanted

16 Jul 11, 2022
an elegant datasets factory

rawbuilder an elegant datasets factory Free software: MIT license Documentation: https://rawbuilder.readthedocs.io. Features Schema oriented datasets

Mina Farag 7 Nov 12, 2022
Simple utlity for sniffing decrypted HTTP/HTTPS traffic on a jailbroken iOS device into an HAR format.

Description iOS devices contain a hidden feature for sniffing decrypted HTTP/HTTPS traffic from all processes using the CFNetwork framework into an HA

83 Dec 25, 2022
tagls is a language server based on gtags.

tagls tagls is a language server based on gtags. Why I wrote it? Almost all modern editors have great support to LSP, but language servers based on se

daquexian 31 Dec 01, 2022
Python framework to build apps with the GASP metaphor

Gaspium Python framework to build apps with the GASP metaphor This project is part of the Pyrustic Open Ecosystem. Installation | Documentation | Late

5 Jan 01, 2023
This module extends twarc to allow you to print out tweets as text for easy testing on the command line

twarc-text This module extends twarc to allow you to print out tweets as text for easy testing on the command line. Maybe it's useful for spot checkin

Documenting the Now 2 Oct 12, 2021
Streamlit Component, for a Chatbot UI

st-chat Streamlit Component, for a Chat-bot UI, example app authors - @yashppawar & @YashVardhan-AI Installation Install streamlit-chat with pip pip i

Yash AI 99 Jan 07, 2023
Slotscheck - Find mistakes in your slots definitions

🎰 Slotscheck Adding __slots__ to a class in Python is a great way to reduce mem

Arie Bovenberg 67 Dec 31, 2022
A python package that computes an optimal motion plan for approaching a red light

redlight_approach redlight_approach is a Python package that computes an optimal motion plan during traffic light approach. RLA_demo.mov Given the par

Jonathan Roy 4 Oct 27, 2022
Tc-python - A Python script to receive message from a twitch chat

Twitch-Chat 📜 I did a script in Python to receive messages from a twitch chat.

miyucode 2 May 31, 2022
This is a repository containing the backend and the frontend of a simple pokédex.

Pokémon This is a repository containing the backend and the frontend of a simple pokédex. This is a work in progress project! Project Structure 🗂 pok

André Rato 1 Nov 28, 2021
A common, beautiful interface to tabular data, no matter the format

rows No matter in which format your tabular data is: rows will import it, automatically detect types and give you high-level Python objects so you can

Álvaro Justen 834 Jan 03, 2023
Santa's kitchen helper for python

Santa's Kitchen Helper Introduction/Overview Contents UX User Stories Design Wireframes Color Scheme Typography Imagery Features Exisiting Features Fe

Paul Browne 4 May 31, 2022
Linux GUI app to codon optimize many single-fasta files with coding sequences , using many taxonomy ids

codon_optimize_cds_with_many_taxids_singlefasta Linux GUI app to codon optimize many single-fasta files with coding sequences, using many taxonomy ids

Olga Tsiouri 1 Jan 23, 2022
A comprensive software collection for nmea manipulation

nmeatoolkit A comprensive software collection for nmea manipulation; it includes a library and a collections of command line tools. Library pipes: con

Davide Gessa 1 Sep 14, 2022
App to decide weekly winners in H2H 1 Win (9 Cat)

Fantasy Weekly Winner for H2H 1 Win (9 Cat) Yahoo Fantasy API Read

Sai Atmakuri 1 Dec 31, 2021
Скрипт позволяет выгрузить участников чатов/каналов(по чату для комментариев) и сообщения в различные форматы файлов.

TG-Parser Парсер участников и сообщений из ТГ-Чатов и чатов для комментариев в ТГ-Каналах Возможности Выгрузка участников групп/каналов(по чату для ко

50 Jan 06, 2023
A simple API to upload notes or files to KBFS

This API can be used to upload either secure notes or files to a secure KeybaseFS folder.

Dakota Brown 1 Oct 08, 2021
Demo of using DataLoader to prevent out of memory

Demo of using DataLoader to prevent out of memory

3 Jun 25, 2022
Zotero references script (and app)

A little script (and PyInstaller build) for a very specific, somewhat hack-ish purpose: managing and exporting project references with Zotero and its API.

Marius Rödder 0 Dec 05, 2021