File size: 4,815 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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
import re

from pyrogram import Client
from pyrogram.types import Message

from . import HelpMenu, Symbols, handler, hellbot, on_message


@on_message("newfed", allow_stan=True)
async def newfed(client: Client, message: Message):
    if len(message.command) < 2:
        return await hellbot.delete(message, f"Usage: {handler}newfed <fedname>")

    bot_un = "@MissRose_bot"
    await client.unblock_user(bot_un)

    fedname = await hellbot.input(message)
    hell = await hellbot.edit(message, f"__Creating new federation__ **{fedname}**")

    extract_fedid = (
        lambda text: re.search(r"FedID: (\S+)", text).group(1)
        if re.search(r"FedID: (\S+)", text)
        else None
    )

    try:
        msg1 = await client.ask(bot_un, f"/newfed {fedname}", timeout=60)
    except Exception as e:
        return await hellbot.error(hell, f"`{e}`")

    if "created new federation" in msg1.text.lower():
        await hell.edit(
            f"**𝖭𝖾𝗐 π–₯π–Ύπ–½π–Ύπ—‹π–Ίπ—π—‚π—ˆπ—‡ 𝖼𝗋𝖾𝖺𝗍𝖾𝖽 π—ˆπ—‡ {bot_un}:** `{fedname}` \n**π–₯𝖾𝖽𝖨𝖽:** `{extract_fedid(msg1.text)[:-1]}`"
        )
    else:
        await hellbot.delete(hell, f"**Failed to create federation!**\n\n`{msg1.text}`")

    try:
        await msg1.request.delete()
        await msg1.delete()
    except:
        pass


@on_message("renamefed", allow_stan=True)
async def renamefed(client: Client, message: Message):
    if len(message.command) < 2:
        return await hellbot.delete(message, f"Usage: {handler}renamefed <new fedname>")

    bot_un = "@MissRose_bot"
    await client.unblock_user(bot_un)

    fedname = await hellbot.input(message)
    hell = await hellbot.edit(message, f"__Renaming federation to__ **{fedname}**")

    try:
        msg1 = await client.ask(bot_un, f"/renamefed {fedname}", timeout=60)
    except Exception as e:
        return await hellbot.error(hell, f"`{e}`")

    if "renamed your federation from" in msg1.text.lower():
        await hell.edit(f"**π–₯π–Ύπ–½π–Ύπ—‹π–Ίπ—π—‚π—ˆπ—‡ 𝗋𝖾𝗇𝖺𝗆𝖾𝖽 π—π—ˆ** `{fedname}`")
    else:
        await hellbot.delete(hell, f"**Failed to rename federation!**\n\n`{msg1.text}`")

    try:
        await msg1.request.delete()
        await msg1.delete()
    except:
        pass


@on_message("fedinfo", allow_stan=True)
async def fedinfo(client: Client, message: Message):
    if len(message.command) < 2:
        fedid = ""
    else:
        fedid = message.command[1]

    bot_un = "@MissRose_bot"
    await client.unblock_user(bot_un)

    get_value = lambda pattern: pattern.group(1) if pattern else None
    hell = await hellbot.edit(message, "__Fetching federation info__")

    try:
        msg1 = await client.ask(bot_un, f"/fedinfo {fedid}", timeout=60)
    except Exception as e:
        return await hellbot.error(hell, f"`{e}`")

    if "fed info" in msg1.text.lower():
        fedid, name, creator, admins, bans, connected_chats, subscribed_feds = map(
            get_value,
            (
                re.search(r"FedID: (\S+)", msg1.text),
                re.search(r"Name: (.+)", msg1.text),
                re.search(r"Creator: (.+)", msg1.text),
                re.search(r"admins: (\d+)", msg1.text),
                re.search(r"bans: (\d+)", msg1.text),
                re.search(r"connected chats: (\d+)", msg1.text),
                re.search(r"subscribed feds: (\d+)", msg1.text),
            ),
        )

        await hell.edit(
            f"**{Symbols.anchor} π–₯𝖾𝖽𝖨𝖽:** `{fedid}`\n"
            f"**{Symbols.anchor} 𝖭𝖺𝗆𝖾:** `{name}`\n"
            f"**{Symbols.anchor} π–’π—‹π–Ύπ–Ίπ—π—ˆπ—‹:** {creator}\n"
            f"**{Symbols.anchor} π–³π—ˆπ—π–Ίπ—… π–Ίπ–½π—†π—‚π—‡π—Œ:** `{admins}`\n"
            f"**{Symbols.anchor} π–³π—ˆπ—π–Ίπ—… π–»π–Ίπ—‡π—Œ::** `{bans}`\n"
            f"**{Symbols.anchor} π–’π—ˆπ—‡π—‡π–Ύπ–Όπ—π–Ύπ–½ π–’π—π–Ίπ—π—Œ:** `{connected_chats}`\n"
            f"**{Symbols.anchor} π–²π—Žπ–»π—Œπ–Όπ—‹π—‚π–»π–Ύπ–½ π–₯𝖾𝖽𝖲:** `{subscribed_feds}`\n"
        )
    else:
        await hellbot.delete(hell, f"**Failed to fetch federation info!**\n\n`{msg1.text}`")

    try:
        await msg1.request.delete()
        await msg1.delete()
    except:
        pass


HelpMenu("federation").add(
    "newfed", "<name>", "Create a new federation on Rose Bot.", "newfed Example Name",  
).add(
    "renamefed", "<name>", "Rename your federation on Rose Bot.", "renamefed Example Name",
).add(
    "fedinfo", "<fedid>", "Get info about a federation on Rose Bot.", "fedinfo fed-id",
).info(
    "MissRose Federation"
).done()