async def add_sticker_to_pack( bot: TelegramClient) -> Tuple[StickerSet, InputDocument]: global sticker_pack animated = current_vote['animated'] if animated: file = await bot.upload_file(current_vote['filepath']) mime = 'application/x-tgsticker' else: img = Image.open(current_vote['filepath']) w, h = img.size if w > h: img = img.resize((512, int(h * (512 / w))), Image.ANTIALIAS) else: img = img.resize((int((w * (512 / h))), 512), Image.ANTIALIAS) dat = BytesIO() img.save(dat, format='PNG') file = await bot.upload_file(dat.getvalue()) mime = 'image/png' os.remove(current_vote['filepath']) file = InputMediaUploadedDocument(file, mime, []) document = await bot(UploadMediaRequest(InputPeerSelf(), file)) document = utils.get_input_document(document) item = InputStickerSetItem(document=document, emoji=current_vote['emoji']) pack: Optional[StickerSet] = None added = False # TODO add support for animated stickers if not sticker_pack: added, pack = await create_sticker_pack(bot, item) if not added: pack = await bot( AddStickerToSetRequest(stickerset=sticker_pack, sticker=item)) return pack, utils.get_input_document(pack.documents[-1])
async def convert_sticker_to_gif(sticker): gif_id = sticker_to_gif.get(str(sticker.id), None) if gif_id: access_hash = access_hashes[str(gif_id)] return types.InputDocument(gif_id, access_hash, b'') file = BytesIO() await borg.download_media(sticker, file=file) file.seek(0) # remove alpha im = Image.open(file) alpha = im.convert('RGBA').getchannel('A') size = max(im.width, im.height) new_im = Image.new('RGBA', (size, size), (40, 40, 40, 255)) xy = (round((size - im.width) / 2), round((size - im.height) / 2)) new_im.paste(im, box=xy, mask=alpha) file = BytesIO() new_im.save(file, format='gif') file.seek(0) # upload file file = await event.upload_file(file, part_size_kb=512) file = types.InputMediaUploadedDocument(file, 'video/mp4', []) media = await event(UploadMediaRequest('me', file)) media = utils.get_input_document(media) # save (that's right, this is relational json) sticker_to_gif[str(sticker.id)] = media.id gif_to_sticker[str(media.id)] = sticker.id access_hashes[str(sticker.id)] = sticker.access_hash access_hashes[str(media.id)] = media.access_hash storage.sticker_to_gif = sticker_to_gif storage.access_hashes = access_hashes return media
async def add_filter(fltr): """ For .save command, saves notes in a chat. """ try: from userbot.modules.sql_helper.notes_sql import add_note except AttributeError: await fltr.edit("`Running on Non-SQL mode!`") return notename = fltr.pattern_match.group(1) msg = await fltr.get_reply_message() if not msg: await fltr.edit("`I need something to save as a note.`") else: snip = {'type': TYPE_TEXT, 'text': msg.message or ''} if msg.media: media = None if isinstance(msg.media, types.MessageMediaPhoto): media = utils.get_input_photo(msg.media.photo) snip['type'] = TYPE_PHOTO elif isinstance(msg.media, types.MessageMediaDocument): media = utils.get_input_document(msg.media.document) snip['type'] = TYPE_DOCUMENT if media: snip['id'] = media.id snip['hash'] = media.access_hash snip['fr'] = media.file_reference success = "`Note {} successfully. Use` #{} `to get it`" if add_note(str(fltr.chat_id), notename, snip['text'], snip['type'], snip.get('id'), snip.get('hash'), snip.get('fr')) is False: return await fltr.edit(success.format('updated', notename)) else: return await fltr.edit(success.format('added', notename))
async def on_snip_save(event): name = event.pattern_match.group(1) msg = await event.get_reply_message() if msg: snip = {'type': TYPE_TEXT, 'text': msg.message or ''} if msg.media: media = None if isinstance(msg.media, types.MessageMediaPhoto): media = utils.get_input_photo(msg.media.photo) snip['type'] = TYPE_PHOTO elif isinstance(msg.media, types.MessageMediaDocument): media = utils.get_input_document(msg.media.document) snip['type'] = TYPE_DOCUMENT if media: snip['id'] = media.id snip['hash'] = media.access_hash snip['fr'] = media.file_reference add_snip(name, snip['text'], snip['type'], snip.get('id'), snip.get('hash'), snip.get('fr')) await event.edit( "Snip {name} başarıyla kaydedildi. # {Name} ile alın".format( name=name)) else: await event.edit( "Snips'i kaydetmek için bir mesajı `snips anahtar kelimesi` ile yanıtlayın" )
async def add_new_filter(new_handler): """ For .filter command, allows adding new filters in a chat """ if not new_handler.text[0].isalpha() and new_handler.text[0] not in ( "/", "#", "@", "!"): try: from userbot.modules.sql_helper.filter_sql import add_filter except AttributeError: await new_handler.edit("`Running on Non-SQL mode!`") return keyword = new_handler.pattern_match.group(1) msg = await new_handler.get_reply_message() if msg: snip = {'type': TYPE_TEXT, 'text': msg.message or ''} if msg.media: media = None if isinstance(msg.media, types.MessageMediaPhoto): media = utils.get_input_photo(msg.media.photo) snip['type'] = TYPE_PHOTO elif isinstance(msg.media, types.MessageMediaDocument): media = utils.get_input_document(msg.media.document) snip['type'] = TYPE_DOCUMENT if media: snip['id'] = media.id snip['hash'] = media.access_hash snip['fr'] = media.file_reference success = "`Filter` **{}** `{} successfully`" if add_filter(str(new_handler.chat_id), keyword, snip['text'], snip['type'], snip.get('id'), snip.get('hash'), snip.get('fr')) is True: await new_handler.edit(success.format(keyword, 'added')) else: await new_handler.edit(success.format(keyword, 'updated'))
async def on_snip_save(event): hitler = await edit_or_reply(event, "Yüklənir....") name = event.pattern_match.group(1) msg = await event.get_reply_message() if msg: snip = {"type": TYPE_TEXT, "text": msg.message or ""} if msg.media: media = None if isinstance(msg.media, types.MessageMediaPhoto): media = utils.get_input_photo(msg.media.photo) snip["type"] = TYPE_PHOTO elif isinstance(msg.media, types.MessageMediaDocument): media = utils.get_input_document(msg.media.document) snip["type"] = TYPE_DOCUMENT if media: snip["id"] = media.id snip["hash"] = media.access_hash snip["fr"] = media.file_reference add_filter( event.chat_id, name, snip["text"], snip["type"], snip.get("id"), snip.get("hash"), snip.get("fr"), ) await hitler.edit(f"filter {name} uğurla yükləndi. Kod: {name}") else: await hitler.edit( "Filteri Yükləmək Üçün `savefilter söz` Kodunu Mesajı Göstərərək Yazın." )
async def on_snip_save(event): """ For .snip command, saves snips for future use. """ try: from userbot.modules.sql_helper.snips_sql import add_snip except AtrributeError: await event.edit("`Running on Non-SQL mode!`") return name = event.pattern_match.group(1) msg = await event.get_reply_message() if not msg: await event.edit("`I need something to save as a snip.`") return else: snip = {'type': TYPE_TEXT, 'text': msg.message or ''} if msg.media: media = None if isinstance(msg.media, types.MessageMediaPhoto): media = utils.get_input_photo(msg.media.photo) snip['type'] = TYPE_PHOTO elif isinstance(msg.media, types.MessageMediaDocument): media = utils.get_input_document(msg.media.document) snip['type'] = TYPE_DOCUMENT if media: snip['id'] = media.id snip['hash'] = media.access_hash snip['fr'] = media.file_reference success = "**Snip {} successfully. Use** `₹{}` **anywhere to get it**" if add_snip(name, snip['text'], snip['type'], snip.get('id'), snip.get('hash'), snip.get('fr')) is False: await event.edit(success.format('updated', name)) else: await event.edit(success.format('saved', name))
async def handler(event): blacklist = { 1653974154589768377, 1653974154589768312, 1653974154589767857, 1653974154589768311, 1653974154589767816, 1653974154589767939, 1653974154589767944, 1653974154589767912, 1653974154589767911, 1653974154589767910, 1653974154589767909, 1653974154589767863, 1653974154589767852, 1653974154589768677, } try: await event.delete() except BaseException: pass docs = [ utils.get_input_document(x) for x in (await event.client( functions.messages.GetStickerSetRequest( types.InputStickerSetShortName("DabOnHaters")))).documents if x.id not in blacklist ] await event.respond(file=random.choice(docs))
async def on_snip_save(event): name = event.pattern_match.group(1) msg = await event.get_reply_message() if msg: snip = {'type': TYPE_TEXT, 'text': msg.message or ''} if msg.media: media = None if isinstance(msg.media, types.MessageMediaPhoto): media = utils.get_input_photo(msg.media.photo) snip['type'] = TYPE_PHOTO elif isinstance(msg.media, types.MessageMediaDocument): media = utils.get_input_document(msg.media.document) snip['type'] = TYPE_DOCUMENT if media: snip['id'] = media.id snip['hash'] = media.access_hash snip['fr'] = media.file_reference add_snip(name, snip['text'], snip['type'], snip.get('id'), snip.get('hash'), snip.get('fr')) await event.edit( "snip {name} saved successfully. Get it with #{name}".format( name=name)) else: await event.edit( "Reply to a message with `snips keyword` to save the snip")
async def upload_sticker(sticker: Sticker): sticker.file.seek(0) file = await client.upload_file(sticker.file, part_size_kb=512) file = types.InputMediaUploadedDocument(file, 'image/png', []) media = await client(UploadMediaRequest('me', file)) return types.InputStickerSetItem(document=utils.get_input_document(media), emoji=sticker.emoji)
async def on_snip_save(event): name = event.pattern_match.group(1) msg = await event.get_reply_message() if msg: snip = {'type': TYPE_TEXT, 'text': msg.message or ''} if msg.media: media = None if isinstance(msg.media, types.MessageMediaPhoto): media = utils.get_input_photo(msg.media.photo) snip['type'] = TYPE_PHOTO elif isinstance(msg.media, types.MessageMediaDocument): media = utils.get_input_document(msg.media.document) snip['type'] = TYPE_DOCUMENT if media: snip['id'] = media.id snip['hash'] = media.access_hash snip['fr'] = media.file_reference add_filter(event.chat_id, name, snip['text'], snip['type'], snip.get('id'), snip.get('hash'), snip.get('fr')) await event.edit("Filtro salvato!") await asynco.sleep(2) else: await event.edit( f"`{DEFAULTUSER}:`**Rispondi ad un messaggio `.savefilter` e il testo per salvare il filtro**" )
async def _(event): "To get random dabbing pose stickers." reply_to_id = await reply_id(event) blacklist = { 1653974154589768377, 1653974154589768312, 1653974154589767857, 1653974154589768311, 1653974154589767816, 1653974154589767939, 1653974154589767944, 1653974154589767912, 1653974154589767911, 1653974154589767910, 1653974154589767909, 1653974154589767863, 1653974154589767852, 1653974154589768677, } await event.delete() docs = [ utils.get_input_document(x) for x in ( await event.client( functions.messages.GetStickerSetRequest( types.InputStickerSetShortName("DabOnHaters") ) ) ).documents if x.id not in blacklist ] await event.respond(file=random.choice(docs), reply_to=reply_to_id)
async def _(event): name = event.pattern_match.group(1) msg = await event.get_reply_message() if msg: snip = {"type": TYPE_TEXT, "text": msg.message or ""} if msg.media: media = None if isinstance(msg.media, types.MessageMediaPhoto): media = utils.get_input_photo(msg.media.photo) snip["type"] = TYPE_PHOTO elif isinstance(msg.media, types.MessageMediaDocument): media = utils.get_input_document(msg.media.document) snip["type"] = TYPE_DOCUMENT if media: snip["id"] = media.id snip["hash"] = media.access_hash snip["fr"] = media.file_reference add_snip( name, snip["text"], snip["type"], snip.get("id"), snip.get("hash"), snip.get("fr"), ) await event.reply( "Note {name} saved successfully. Get it with ?{name}".format( name=name)) else: await event.reply( "Reply to a message with `snips keyword` to save the snip")
async def on_snip_save(event): name = event.pattern_match.group(1) msg = await event.get_reply_message() if msg: snip = {'type': TYPE_TEXT, 'text': msg.message or ''} if msg.media: media = None if isinstance(msg.media, types.MessageMediaPhoto): media = utils.get_input_photo(msg.media.photo) snip['type'] = TYPE_PHOTO elif isinstance(msg.media, types.MessageMediaDocument): media = utils.get_input_document(msg.media.document) snip['type'] = TYPE_DOCUMENT if media: snip['id'] = media.id snip['hash'] = media.access_hash snip['fr'] = media.file_reference add_filter(event.chat_id, name, snip['text'], snip['type'], snip.get('id'), snip.get('hash'), snip.get('fr')) await event.edit( f"filtro {name} salvato con successo. usalo con {name}") else: await event.edit( "Rispondi a un messaggio con .savefilter parola per salvare il filtro" )
async def on_snip_save(event): if event.fwd_from: return name = event.pattern_match.group(1) msg = await event.get_reply_message() if msg: snip = {'type': TYPE_TEXT, 'text': msg.message or ''} if msg.media: media = None if isinstance(msg.media, types.MessageMediaPhoto): media = utils.get_input_photo(msg.media.photo) snip['type'] = TYPE_PHOTO elif isinstance(msg.media, types.MessageMediaDocument): media = utils.get_input_document(msg.media.document) snip['type'] = TYPE_DOCUMENT if media: snip['id'] = media.id snip['hash'] = media.access_hash snip['fr'] = media.file_reference add_filter(event.chat_id, name, snip['text'], snip['type'], snip.get('id'), snip.get('hash'), snip.get('fr')) await edit_or_reply( event, f"Filter `{name}` saved successfully. Get it with `{name}`") else: await edit_or_reply( event, "Reply to a message with `savefilter keyword` to save the filter")
async def on_snip_save(event): name = event.pattern_match.group(1) msg = await event.get_reply_message() if msg: snip = {"type": TYPE_TEXT, "text": msg.message or ""} if msg.media: media = None if isinstance(msg.media, types.MessageMediaPhoto): media = utils.get_input_photo(msg.media.photo) snip["type"] = TYPE_PHOTO elif isinstance(msg.media, types.MessageMediaDocument): media = utils.get_input_document(msg.media.document) snip["type"] = TYPE_DOCUMENT if media: snip["id"] = media.id snip["hash"] = media.access_hash snip["fr"] = media.file_reference add_filter( event.chat_id, name, snip["text"], snip["type"], snip.get("id"), snip.get("hash"), snip.get("fr"), ) await edit_or_reply( event, f"filter {name} saved successfully. Get it with {name}" ) else: await edit_or_reply( event, "Reply to a message with `savefilter keyword` to save the filter" )
async def save(event): if event.is_group: if not await is_admin(event, event.sender_id): await event.reply("You need to be an admin to do this.") return if not await can_change_info(message=event): await event.reply( "You are missing the following rights to use this command: CanChangeInfo" ) return else: return if not event.reply_to_msg_id: input = event.pattern_match.group(1) if input: arg = input.split(" ", 1) if len(arg) == 2: name = arg[0] msg = arg[1] snip = {"type": TYPE_TEXT, "text": msg} else: name = arg[0] if not name: await event.reply("You need to give the filter a name!") return await event.reply("You need to give the filter some content!") return else: message = await event.get_reply_message() name = event.pattern_match.group(1) if not name: await event.reply("You need to give the filter a name!") return if not message.media: msg = message.text snip = {"type": TYPE_TEXT, "text": msg} else: snip = {"type": TYPE_TEXT, "text": ""} media = None if isinstance(message.media, types.MessageMediaPhoto): media = utils.get_input_photo(message.media.photo) snip["type"] = TYPE_PHOTO elif isinstance(message.media, types.MessageMediaDocument): media = utils.get_input_document(message.media.document) snip["type"] = TYPE_DOCUMENT if media: snip["id"] = media.id snip["hash"] = media.access_hash snip["fr"] = media.file_reference add_filter( event.chat_id, name, snip["text"], snip["type"], snip.get("id"), snip.get("hash"), snip.get("fr"), ) await event.reply(f"Saved filter `{name}`")
async def on_snip_save(event): if event.is_group: if not await can_change_info(message=event): return else: return name = event.pattern_match.group(1) msg = await event.get_reply_message() if msg: snip = {"type": TYPE_TEXT, "text": msg.message or ""} if msg.media: media = None if isinstance(msg.media, types.MessageMediaPhoto): media = utils.get_input_photo(msg.media.photo) snip["type"] = TYPE_PHOTO elif isinstance(msg.media, types.MessageMediaDocument): media = utils.get_input_document(msg.media.document) snip["type"] = TYPE_DOCUMENT if media: snip["id"] = media.id snip["hash"] = media.access_hash snip["fr"] = media.file_reference add_filter( event.chat_id, name, snip["text"], snip["type"], snip.get("id"), snip.get("hash"), snip.get("fr"), ) await event.reply( f"Classic Filter {name} saved successfully. you can get it with {name}\nNote: Try our new filter system /addfilter " ) else: await event.reply( "Usage: Reply to user message with /cfilter <text>.. \nNot Recomended use new filter system /savefilter" )
async def handler(event): await event.delete() nonlocal docs if docs is None: docs = [ utils.get_input_document(x) for x in (await borg(functions.messages.GetStickerSetRequest(types.InputStickerSetShortName(pack)))).documents if x.id not in blacklist ] await event.respond(file=random.choice(docs))
async def handler(event): blacklist = {} try: await event.delete() except BaseException: pass docs = [ utils.get_input_document(x) for x in (await event.client( functions.messages.GetStickerSetRequest( types.InputStickerSetShortName("supermind")))).documents if x.id not in blacklist ] await event.respond(file=random.choice(docs))
async def handler(event): "To get random brain stickers." reply_to_id = await reply_id(event) blacklist = {} await event.delete() docs = [ utils.get_input_document(x) for x in ( await event.client( functions.messages.GetStickerSetRequest( types.InputStickerSetShortName("supermind") ) ) ).documents if x.id not in blacklist ] await event.respond(file=random.choice(docs), reply_to=reply_to_id)
async def _(e): x = await e.get_reply_message() if not (x and x.media and hasattr(x.media, "document")): return await eod(e, "`Reply To Sticker Only`") set = x.document.attributes[1] sset = await ultroid_bot( GetStickerSetRequest( InputStickerSetID( id=set.stickerset.id, access_hash=set.stickerset.access_hash, ))) pack = sset.set.short_name docs = [ utils.get_input_document(x) for x in (await bot( GetStickerSetRequest(InputStickerSetShortName(pack)))).documents ] for xx in docs: await e.respond(file=(xx))
async def handler(event): if event.fwd_from: return animation_interval = 2 animation_ttl = range(0,8) nonlocal docs for i in animation_ttl: await asyncio.sleep(animation_interval) if docs is None: docs = [ utils.get_input_document(x) for x in (await borg(functions.messages.GetStickerSetRequest(types.InputStickerSetShortName(pack)))).documents ] await event.respond(file=random.choice(docs))
async def pack_kangish(_): _e = await _.get_reply_message() if not (_e and _e.sticker and _e.file.mime_type == "image/webp"): return await _.eor(get_string("sts_4")) if len(_.text) > 9: _packname = _.text.split(" ", maxsplit=1)[1] else: _packname = f"Ultroid Kang Pack By {_.sender_id}" _id = _e.media.document.attributes[1].stickerset.id _hash = _e.media.document.attributes[1].stickerset.access_hash _get_stiks = await _.client( functions.messages.GetStickerSetRequest( stickerset=types.InputStickerSetID(id=_id, access_hash=_hash), hash=0 ) ) stiks = [] for i in _get_stiks.documents: x = get_input_document(i) stiks.append( types.InputStickerSetItem( document=x, emoji=(i.attributes[1]).alt, ) ) try: short_name = "ult_" + _packname.replace(" ", "_") + str(_.id) _r_e_s = await asst( functions.stickers.CreateStickerSetRequest( user_id=_.sender_id, title=_packname, short_name=f"{short_name}_by_{asst.me.username}", stickers=stiks, ) ) except PeerIdInvalidError: return await _.eor( f"Hey {inline_mention(_.sender)} send `/start` to @{asst.me.username} and later try this command again.." ) except BaseException as er: LOGS.exception(er) return await _.eor(str(er)) await _.eor( get_string("sts_5").format(f"https://t.me/addstickers/{_r_e_s.set.short_name}"), )
async def on_snip_save(event): name = event.pattern_match.group(1) msg = await event.get_reply_message() if msg: snip = {'type': TYPE_TEXT, 'text': msg.message or ''} if msg.media: media = None if isinstance(msg.media, types.MessageMediaPhoto): media = utils.get_input_photo(msg.media.photo) snip['type'] = TYPE_PHOTO elif isinstance(msg.media, types.MessageMediaDocument): media = utils.get_input_document(msg.media.document) snip['type'] = TYPE_DOCUMENT if media: snip['id'] = media.id snip['hash'] = media.access_hash snip['fr'] = media.file_reference add_filter(event.chat_id, name, snip['text'], snip['type'], snip.get('id'), snip.get('hash'), snip.get('fr')) await event.edit(f"filter {name} saved successfully. Get it with {name}")
async def _(event): if event.fwd_from: return msg = await event.get_reply_message() if msg and msg.media: media = None message_type = TYPE_TEXT if isinstance(msg.media, types.MessageMediaPhoto): media = utils.get_input_photo(msg.media.photo) message_type = TYPE_PHOTO elif isinstance(msg.media, types.MessageMediaDocument): media = utils.get_input_document(msg.media.document) message_type = TYPE_DOCUMENT # add_welcome_setting(event.chat_id, msg.message, True, 0, message_type, media.id, media.access_hash, media.file_reference) await event.edit("Welcome note saved. ") else: input_str = event.text.split(None, 1) add_welcome_setting(event.chat_id, input_str[1], True, 0) await event.edit("Welcome note saved. ")
async def on_snip_save(event): name = event.pattern_match.group(1) msg = await event.get_reply_message() if msg: snip = {'type': TYPE_TEXT, 'text': msg.message or ''} if msg.media: media = None if isinstance(msg.media, types.MessageMediaPhoto): media = utils.get_input_photo(msg.media.photo) snip['type'] = TYPE_PHOTO elif isinstance(msg.media, types.MessageMediaDocument): media = utils.get_input_document(msg.media.document) snip['type'] = TYPE_DOCUMENT if media: snip['id'] = media.id snip['hash'] = media.access_hash snip['fr'] = media.file_reference add_snip(name, snip['text'], snip['type'], snip.get('id'), snip.get('hash'), snip.get('fr')) await event.edit("Taglio {name} salvato con successo. Prendilo con #{name}".format(name=name)) else: await event.edit("Rispondi ad un messaggio con `snips parola` per salvare il taglio.")
async def pack_kangish(_): _e = await _.get_reply_message() if not (_e and _e.sticker and _e.file.mime_type == "image/webp"): return await eor(_, get_string("sts_4")) if len(_.text) > 9: _packname = _.text.split(" ", maxsplit=1)[1] else: _packname = f"Ultroid Kang Pack By {_.sender_id}" _id = _e.media.document.attributes[1].stickerset.id _hash = _e.media.document.attributes[1].stickerset.access_hash _get_stiks = await _.client( functions.messages.GetStickerSetRequest( stickerset=types.InputStickerSetID(id=_id, access_hash=_hash))) stiks = [] for i in _get_stiks.documents: x = get_input_document(i) stiks.append( types.InputStickerSetItem( document=x, emoji=(i.attributes[1]).alt, )) try: short_name = (await _.client(SuggestShortNameRequest(_packname))).short_name _r_e_s = await asst( functions.stickers.CreateStickerSetRequest( user_id=_.sender_id, title=_packname, short_name=f"u{short_name}_by_{asst.me.username}", stickers=stiks, )) except BaseException as er: LOGS.exception(er) return await eor(_, str(er)) await eor( _, get_string("sts_5").format( f"https://t.me/addstickers/{_r_e_s.set.short_name}"), )
async def on_snip_save(event): name = event.pattern_match.group(1) msg = await event.get_reply_message() if msg: snips.pop(name, None) snip = {"type": TYPE_TEXT, "text": msg.message or ""} if msg.media: media = None if isinstance(msg.media, types.MessageMediaPhoto): media = utils.get_input_photo(msg.media.photo) snip["type"] = TYPE_PHOTO elif isinstance(msg.media, types.MessageMediaDocument): media = utils.get_input_document(msg.media.document) snip["type"] = TYPE_DOCUMENT if media: snip["id"] = media.id snip["hash"] = media.access_hash snips[name] = snip storage.snips = snips await event.delete()
async def on_snip_save(event): name = event.pattern_match.group(1) msg = await event.get_reply_message() if msg: snip = {'type': TYPE_TEXT, 'text': msg.message or ''} if msg.media: media = None if isinstance(msg.media, types.MessageMediaPhoto): media = utils.get_input_photo(msg.media.photo) snip['type'] = TYPE_PHOTO elif isinstance(msg.media, types.MessageMediaDocument): media = utils.get_input_document(msg.media.document) snip['type'] = TYPE_DOCUMENT if media: snip['id'] = media.id snip['hash'] = media.access_hash snip['fr'] = media.file_reference add_filter(event.chat_id, name, snip['text'], snip['type'], snip.get('id'), snip.get('hash'), snip.get('fr')) await event.edit(f"الرد {name} تم اضافته بنجاح. اكتب {name}") else: await event.edit("رد على الرد وااكتب النص الاساسي `اضف رد` لحفظ الرد")