Spaces:
Sleeping
Sleeping
File size: 4,555 Bytes
ca4eb6d |
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 |
from pyrogram import filters
from pyrogram.types import CallbackQuery, Message
from Powers import LOGGER
from Powers.bot_class import Gojo
from Powers.database.rules_db import Rules
from Powers.tr_engine import tlang
from Powers.utils.custom_filters import admin_filter, command
from Powers.utils.kbhelpers import ikb
from Powers.vars import Config
@Gojo.on_message(command("rules") & filters.group)
async def get_rules(_, m: Message):
db = Rules(m.chat.id)
msg_id = m.reply_to_message.message_id if m.reply_to_message else m.message_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(
(tlang(m, "rules.no_rules")),
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(
(tlang(m, "rules.pm_me")),
quote=True,
reply_markup=pm_kb,
reply_to_message_id=msg_id,
)
return
formated = rules
await m.reply_text(
(tlang(m, "rules.get_rules")).format(
chat=f"<b>{m.chat.title}</b>",
rules=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(tlang(m, "rules.set_rules"))
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 = tlang(m, "rules.priv_rules.turned_on").format(chat_name=m.chat.title)
elif option in ("off", "no"):
db.set_privrules(False)
LOGGER.info(f"{m.from_user.id} disbaled privaterules in {m.chat.id}")
msg = tlang(m, "rules.priv_rules.turned_off").format(chat_name=m.chat.title)
else:
msg = tlang(m, "rules.priv_rules.no_option")
await m.reply_text(msg)
elif len(m.text.split()) == 1:
curr_pref = db.get_privrules()
msg = tlang(m, "rules.priv_rules.current_preference").format(
current_option=curr_pref,
)
LOGGER.info(f"{m.from_user.id} fetched privaterules preference in {m.chat.id}")
await m.reply_text(msg)
else:
await m.replt_text(tlang(m, "general.check_help"))
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(tlang(m, "rules.no_rules"))
return
await m.reply_text(
(tlang(m, "rules.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(tlang(q, "rules.cleared"))
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"]
|