File size: 4,795 Bytes
19e1d1f |
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 |
import io
from pyrogram import filters, Client, enums
from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup
from database.gfilters_mdb import(
add_gfilter,
get_gfilters,
delete_gfilter,
count_gfilters
)
from database.connections_mdb import active_connection
from utils import get_file_id, gfilterparser, split_quotes
from info import ADMINS
@Client.on_message(filters.command(['gfilter', 'addg']) & filters.incoming & filters.user(ADMINS))
async def addgfilter(client, message):
args = message.text.html.split(None, 1)
if len(args) < 2:
await message.reply_text("Command Incomplete :(", quote=True)
return
extracted = split_quotes(args[1])
text = extracted[0].lower()
if not message.reply_to_message and len(extracted) < 2:
await message.reply_text("Add some content to save your filter!", quote=True)
return
if (len(extracted) >= 2) and not message.reply_to_message:
reply_text, btn, alert = gfilterparser(extracted[1], text)
fileid = None
if not reply_text:
await message.reply_text("You cannot have buttons alone, give some text to go with it!", quote=True)
return
elif message.reply_to_message and message.reply_to_message.reply_markup:
try:
rm = message.reply_to_message.reply_markup
btn = rm.inline_keyboard
msg = get_file_id(message.reply_to_message)
if msg:
fileid = msg.file_id
reply_text = message.reply_to_message.caption.html
else:
reply_text = message.reply_to_message.text.html
fileid = None
alert = None
except:
reply_text = ""
btn = "[]"
fileid = None
alert = None
elif message.reply_to_message and message.reply_to_message.media:
try:
msg = get_file_id(message.reply_to_message)
fileid = msg.file_id if msg else None
reply_text, btn, alert = gfilterparser(extracted[1], text) if message.reply_to_message.sticker else gfilterparser(message.reply_to_message.caption.html, text)
except:
reply_text = ""
btn = "[]"
alert = None
elif message.reply_to_message and message.reply_to_message.text:
try:
fileid = None
reply_text, btn, alert = gfilterparser(message.reply_to_message.text.html, text)
except:
reply_text = ""
btn = "[]"
alert = None
else:
return
await add_gfilter('gfilters', text, reply_text, btn, fileid, alert)
await message.reply_text(
f"GFilter for `{text}` added",
quote=True,
parse_mode=enums.ParseMode.MARKDOWN
)
@Client.on_message(filters.command(['viewgfilters', 'gfilters']) & filters.incoming & filters.user(ADMINS))
async def get_all_gfilters(client, message):
texts = await get_gfilters('gfilters')
count = await count_gfilters('gfilters')
if count:
gfilterlist = f"Total number of gfilters : {count}\n\n"
for text in texts:
keywords = " × `{}`\n".format(text)
gfilterlist += keywords
if len(gfilterlist) > 4096:
with io.BytesIO(str.encode(gfilterlist.replace("`", ""))) as keyword_file:
keyword_file.name = "keywords.txt"
await message.reply_document(
document=keyword_file,
quote=True
)
return
else:
gfilterlist = f"There are no active gfilters."
await message.reply_text(
text=gfilterlist,
quote=True,
parse_mode=enums.ParseMode.MARKDOWN
)
@Client.on_message(filters.command('delg') & filters.incoming & filters.user(ADMINS))
async def deletegfilter(client, message):
try:
cmd, text = message.text.split(" ", 1)
except:
await message.reply_text(
"<i>Mention the gfiltername which you wanna delete!</i>\n\n"
"<code>/delg gfiltername</code>\n\n"
"Use /viewgfilters to view all available gfilters",
quote=True
)
return
query = text.lower()
await delete_gfilter(message, query, 'gfilters')
@Client.on_message(filters.command('delallg') & filters.user(ADMINS))
async def delallgfilters(client, message):
await message.reply_text(
f"Do you want to continue??",
reply_markup=InlineKeyboardMarkup([
[InlineKeyboardButton(text="YES",callback_data="gfiltersdeleteallconfirm")],
[InlineKeyboardButton(text="CANCEL",callback_data="gfiltersdeleteallcancel")]
]),
quote=True
)
|