Spaces:
Running
Running
File size: 5,251 Bytes
54d8b6b ab8dff0 b002286 7956eb0 eef97a7 b002286 eef97a7 b002286 7956eb0 effac34 7956eb0 89c3556 7956eb0 89c3556 7956eb0 89c3556 7956eb0 89c3556 7956eb0 24a49ae 89c3556 7956eb0 24a49ae 89c3556 7956eb0 89c3556 7956eb0 b002286 24a49ae 7956eb0 89c3556 7956eb0 b002286 7956eb0 89c3556 7956eb0 89c3556 7956eb0 818d601 d76971a 809532c d76971a 818d601 2707517 818d601 2707517 |
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 Powers import LOGGER
from pyrogram import filters
from Powers.vars import Config
from Powers.bot_class import Gojo
from Powers.utils.kbhelpers import ikb
from Powers.database.rules_db import Rules
from pyrogram.types import Message, CallbackQuery
from Powers.utils.custom_filters import command, admin_filter
@Gojo.on_message(command("rules") & filters.group)
async def get_rules(_, 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()
LOGGER.info(f"{m.from_user.id} fetched rules in {m.chat.id}")
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
priv_rules_status = db.get_privrules()
if priv_rules_status:
pm_kb = ikb(
[
[
(
"Rules",
f"https://t.me/{Config.BOT_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
await m.reply_text(
text=f"""The rules for <b>{m.chat.title} are:</b>
{formated}""",
disable_web_page_preview=True,
reply_to_message_id=msg_id,
)
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[0:3949] # Split Rules if len > 4000 chars
await m.reply_text("Rules are truncated to 3950 characters!")
db.set_rules(rules)
LOGGER.info(f"{m.from_user.id} set rules in {m.chat.id}")
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)
LOGGER.info(f"{m.from_user.id} enabled privaterules in {m.chat.id}")
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)
LOGGER.info(f"{m.from_user.id} disbaled privaterules in {m.chat.id}")
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>"
)
LOGGER.info(f"{m.from_user.id} fetched privaterules preference in {m.chat.id}")
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!")
LOGGER.info(f"{q.from_user.id} cleared rules in {q.message.chat.id}")
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."""
|