mirror of
https://github.com/yasirarism/MissKatyPyro.git
synced 2026-01-01 02:24:52 +00:00
debugg
This commit is contained in:
parent
8d40cfd36c
commit
cb959b310c
3 changed files with 125 additions and 1 deletions
|
|
@ -1 +1 @@
|
|||
from . import bound, listen, methods
|
||||
from . import bound, listen, methods, decorators
|
||||
|
|
|
|||
1
misskaty/core/misskaty_patch/decorators/__init__.py
Normal file
1
misskaty/core/misskaty_patch/decorators/__init__.py
Normal file
|
|
@ -0,0 +1 @@
|
|||
from .command import command
|
||||
123
misskaty/core/misskaty_patch/decorators/command.py
Normal file
123
misskaty/core/misskaty_patch/decorators/command.py
Normal file
|
|
@ -0,0 +1,123 @@
|
|||
import typing
|
||||
import pyrogram
|
||||
from pyrogram.methods import Decorators
|
||||
from misskaty.vars import COMMAND_HANDLER
|
||||
|
||||
def command(
|
||||
self,
|
||||
command: typing.Union[str, list],
|
||||
pm_only: typing.Union[bool, bool] = False,
|
||||
group_only: typing.Union[bool, bool] = False,
|
||||
self_admin: typing.Union[bool, bool] = False,
|
||||
self_only: typing.Union[bool, bool] = False,
|
||||
handler: typing.Optional[list] = None,
|
||||
filter: typing.Union[pyrogram.filters.Filter, pyrogram.filters.Filter] = None,
|
||||
*args,
|
||||
**kwargs
|
||||
):
|
||||
"""
|
||||
### `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_only (bool) **optional**:
|
||||
- If True, the command will only excute if used by Self only, By Default False.
|
||||
|
||||
- handler (list) **optional**:
|
||||
- If set, the command will be handled by the specified Handler, By Default `Config.HANDLERS`.
|
||||
|
||||
- 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
|
||||
.. code-block:: 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}")
|
||||
"""
|
||||
if handler is None:
|
||||
handler = COMMAND_HANDLER
|
||||
if filter:
|
||||
if self_only:
|
||||
filter = (
|
||||
pyrogram.filters.command(command, prefixes=handler)
|
||||
& filter
|
||||
& pyrogram.filters.me
|
||||
)
|
||||
else:
|
||||
filter = (
|
||||
pyrogram.filters.command(command, prefixes=handler)
|
||||
& filter
|
||||
& pyrogram.filters.me
|
||||
)
|
||||
else:
|
||||
if self_only:
|
||||
filter = (
|
||||
pyrogram.filters.command(command, prefixes=handler)
|
||||
& pyrogram.filters.me
|
||||
)
|
||||
else:
|
||||
filter = pyrogram.filters.command(command, prefixes=handler)
|
||||
|
||||
def wrapper(func):
|
||||
async def decorator(client, message: pyrogram.types.Message):
|
||||
if (
|
||||
self_admin
|
||||
and message.chat.type != pyrogram.enums.ChatType.SUPERGROUP
|
||||
):
|
||||
return await message.reply_text(
|
||||
"This command can be used in supergroups only."
|
||||
)
|
||||
if self_admin:
|
||||
me = await client.get_chat_member(
|
||||
message.chat.id, (await client.get_me()).id
|
||||
)
|
||||
if me.status not in (
|
||||
pyrogram.enums.ChatMemberStatus.OWNER,
|
||||
pyrogram.enums.ChatMemberStatus.ADMINISTRATOR,
|
||||
):
|
||||
return await message.reply_text(
|
||||
"I must be admin to execute this Command"
|
||||
)
|
||||
if (
|
||||
group_only
|
||||
and message.chat.type != pyrogram.enums.ChatType.SUPERGROUP
|
||||
):
|
||||
return await message.reply_text(
|
||||
"This command can be used in supergroups only."
|
||||
)
|
||||
if pm_only and message.chat.type != pyrogram.enums.ChatType.PRIVATE:
|
||||
return await message.reply_text(
|
||||
"This command can be used in PMs only."
|
||||
)
|
||||
try:
|
||||
await func(client, message)
|
||||
except pyrogram.errors.exceptions.forbidden_403.ChatWriteForbidden:
|
||||
await client.leave_chat(message.chat.id)
|
||||
except BaseException as exception:
|
||||
return
|
||||
|
||||
self.__client__.add_handler(
|
||||
pyrogram.handlers.MessageHandler(callback=decorator, filters=filter)
|
||||
)
|
||||
return decorator
|
||||
|
||||
return wrapper
|
||||
|
||||
Decorators.command = command
|
||||
Loading…
Reference in a new issue