File size: 2,241 Bytes
78b07ad
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
from pyrogram import Client, filters
from pyrogram.enums import ChatType
from pyrogram.handlers import MessageHandler
from pyrogram.types import Message

from Hellbot.core import Config, db, hellbot
from Hellbot.functions.admins import is_user_admin


def on_message(

    command: str | list[str],

    group: int = 0,

    chat_type: list[ChatType] = None,

    admin_only: bool = False,

    allow_stan: bool = False,

):
    if allow_stan:
        _filter = (
            filters.command(command, Config.HANDLERS)
            & (filters.me | Config.STAN_USERS)
            & ~filters.forwarded
            & ~filters.via_bot
        )
    else:
        _filter = (
            filters.command(command, Config.HANDLERS)
            & filters.me
            & ~filters.forwarded
            & ~filters.via_bot
        )

    def decorator(func):
        async def wrapper(client: Client, message: Message):
            if client.me.id != message.from_user.id:
                if not await db.is_stan(client.me.id, message.from_user.id):
                    return

            if admin_only and not message.chat.type == ChatType.PRIVATE:
                if not await is_user_admin(message.chat, client.me.id):
                    return await hellbot.edit(message, "𝖨 𝖺𝗆 π—‡π—ˆπ— 𝖺𝗇 𝖺𝖽𝗆𝗂𝗇 𝗁𝖾𝗋𝖾!")

            if chat_type and message.chat.type not in chat_type:
                return await hellbot.edit(message, "𝖒𝖺𝗇'𝗍 π—Žπ—Œπ–Ύ π—π—π—‚π—Œ π–Όπ—ˆπ—†π—†π–Ίπ—‡π–½ 𝗁𝖾𝗋𝖾!")

            await func(client, message)
            message.continue_propagation()

        for user in hellbot.users:
            user.add_handler(MessageHandler(wrapper, _filter), group)

        return wrapper

    return decorator


def custom_handler(filters: filters.Filter, group: int = 0):
    def decorator(func):
        async def wrapper(client: Client, message: Message):
            await func(client, message)
            message.continue_propagation()

        for user in hellbot.users:
            user.add_handler(MessageHandler(wrapper, filters), group)

        return wrapper

    return decorator