Spaces:
Running
Running
File size: 4,989 Bytes
98ab4e9 3580517 1b5719b 7956eb0 98ab4e9 1b5719b d720c41 7956eb0 8ee0322 7956eb0 effac34 7956eb0 89c3556 7956eb0 3c9449b 7956eb0 8ee0322 7956eb0 89c3556 7956eb0 d720c41 d7e1221 d720c41 7956eb0 89c3556 d7e1221 7956eb0 d720c41 7956eb0 3c9449b 7956eb0 89c3556 7956eb0 89c3556 7956eb0 89c3556 7956eb0 89c3556 7956eb0 b002286 7956eb0 89c3556 7956eb0 b002286 7956eb0 89c3556 7956eb0 89c3556 7956eb0 818d601 d76971a 809532c d76971a 818d601 2707517 818d601 2707517 d720c41 |
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 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 |
from pyrogram import filters
from pyrogram.types import CallbackQuery, Message
from Powers.bot_class import Gojo
from Powers.database.rules_db import Rules
from Powers.utils.custom_filters import admin_filter, command
from Powers.utils.kbhelpers import ikb
from Powers.utils.string import build_keyboard, parse_button
@Gojo.on_message(command("rules") & filters.group)
async def get_rules(c: Gojo, m: Message):
db = Rules(m.chat.id)
msg_id = m.reply_to_message.id if m.reply_to_message else m.id
rules = db.get_rules()
if m and not m.from_user:
return
if not rules:
await m.reply_text(
text="The Admins for this group have not setup rules! That doesn't mean you can break the DECORUM of this group !",
quote=True,
)
return
if priv_rules_status := db.get_privrules():
pm_kb = ikb(
[
[
(
"Rules",
f"https://t.me/{c.me.username}?start=rules_{m.chat.id}",
"url",
),
],
],
)
await m.reply_text(
text="Click on the below button to see this group rules!",
quote=True,
reply_markup=pm_kb,
reply_to_message_id=msg_id,
)
return
formated = rules
teks, button = await parse_button(formated)
button = await build_keyboard(button)
button = ikb(button) if button else None
textt = teks
await m.reply_text(
text=f"""The rules for <b>{m.chat.title} are:</b>
{textt}""",
disable_web_page_preview=True,
reply_to_message_id=msg_id,
reply_markup=button
)
return
@Gojo.on_message(command("setrules") & admin_filter)
async def set_rules(_, m: Message):
db = Rules(m.chat.id)
if m and not m.from_user:
return
if m.reply_to_message and m.reply_to_message.text:
rules = m.reply_to_message.text.markdown
elif (not m.reply_to_message) and len(m.text.split()) >= 2:
rules = m.text.split(None, 1)[1]
else:
return await m.reply_text("Provide some text to set as rules !!")
if len(rules) > 4000:
rules = rules[:3949]
await m.reply_text("Rules are truncated to 3950 characters!")
db.set_rules(rules)
await m.reply_text(text="Successfully set rules for this group.")
return
@Gojo.on_message(
command(["pmrules", "privaterules"]) & admin_filter,
)
async def priv_rules(_, m: Message):
db = Rules(m.chat.id)
if m and not m.from_user:
return
if len(m.text.split()) == 2:
option = (m.text.split())[1]
if option in ("on", "yes"):
db.set_privrules(True)
msg = f"Private Rules have been turned <b>on</b> for chat <b>{m.chat.title}</b>"
elif option in ("off", "no"):
db.set_privrules(False)
msg = f"Private Rules have been turned <b>off</b> for chat <b>{m.chat.title}</b>"
else:
msg = "Option not valid, choose from <code>on</code>, <code>yes</code>, <code>off</code>, <code>no</code>"
await m.reply_text(msg)
elif len(m.text.split()) == 1:
curr_pref = db.get_privrules()
msg = (
f"Current Preference for Private rules in this chat is: <b>{curr_pref}</b>"
)
await m.reply_text(msg)
else:
await m.reply_text(text="Please check help on how to use this this command.")
return
@Gojo.on_message(command("clearrules") & admin_filter)
async def clear_rules(_, m: Message):
db = Rules(m.chat.id)
if m and not m.from_user:
return
rules = db.get_rules()
if not rules:
await m.reply_text(
text="The Admins for this group have not setup rules! That doesn't mean you can break the DECORUM of this group !"
)
return
await m.reply_text(
text="Are you sure you want to clear rules?",
reply_markup=ikb(
[[("⚠️ Confirm", "clear_rules"), ("❌ Cancel", "close_admin")]],
),
)
return
@Gojo.on_callback_query(filters.regex("^clear_rules$"))
async def clearrules_callback(_, q: CallbackQuery):
Rules(q.message.chat.id).clear_rules()
await q.message.edit_text(text="Successfully cleared rules for this group!")
await q.answer("Rules for the chat have been cleared!", show_alert=True)
return
__PLUGIN__ = "rules"
__alt_name__ = ["rule"]
__HELP__ = """
**Rules**
Set rules for you chat so that members know what to do and what not to do in your group!
• /rules: get the rules for current chat.
**Admin only:**
• /setrules `<rules>`: Set the rules for this chat, also works as a reply to a message.
• /clearrules: Clear the rules for this chat.
• /privrules `<on/yes/no/off>`: Turns on/off the option to send the rules to PM of user or group.
**Note Format**
Check /markdownhelp for help related to formatting!
"""
|