Spaces:
Sleeping
Sleeping
File size: 4,989 Bytes
87abec5 6dcea66 11ae35a ca4eb6d 87abec5 11ae35a 89a7a7a ca4eb6d c62ca93 ca4eb6d c15d499 ca4eb6d 11170eb ca4eb6d 89ad488 ca4eb6d c62ca93 ca4eb6d 11170eb ca4eb6d 89a7a7a aef1161 89a7a7a ca4eb6d 11170eb aef1161 ca4eb6d 89a7a7a ca4eb6d 89ad488 ca4eb6d 11170eb ca4eb6d 11170eb ca4eb6d 11170eb ca4eb6d 11170eb ca4eb6d af1662b ca4eb6d 11170eb ca4eb6d af1662b ca4eb6d 11170eb ca4eb6d 11170eb ca4eb6d 9da6fea 709df35 096ee5f 709df35 9da6fea d5348c6 9da6fea d5348c6 89a7a7a |
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!
"""
|