Download telebot/plugins/clone.py from thenamk3/cc: direct link, hf CLI and curl.
- Browser
- Download file 5.38 kB
-
https://huggingface.co/spaces/thenamk3/cc/resolve/main/telebot/plugins/clone.py
- Command line
-
hf download hf://spaces/thenamk3/cc/telebot/plugins/clone.py
-
curl -L -o clone.py https://huggingface.co/spaces/thenamk3/cc/resolve/main/telebot/plugins/clone.py
5.38 kB
| """Get Telegram Profile Picture and other information | |
| and set as own profile. | |
| Syntax: .clone @username""" | |
| # Credits of Plugin @ViperAdnan and @mrconfused(revert)[will add sql soon] | |
| import html | |
| from telethon.tl import functions | |
| from telethon.tl.functions.users import GetFullUserRequest | |
| from telethon.tl.types import MessageEntityMentionName | |
| from .. import ALIVE_NAME, CMD_HELP | |
| from ..utils import admin_cmd | |
| DEFAULTUSER = str(ALIVE_NAME) if ALIVE_NAME else "TeleBot" | |
| DEFAULTUSERBIO = "404: No bio found!" | |
| if Var.PRIVATE_GROUP_ID is None: | |
| BOTLOG = False | |
| else: | |
| BOTLOG = True | |
| BOTLOG_CHATID = Var.PRIVATE_GROUP_ID | |
| async def _(event): | |
| if event.fwd_from: | |
| return | |
| reply_message = await event.get_reply_message() | |
| replied_user, error_i_a = await get_full_user(event) | |
| if replied_user is None: | |
| await event.edit(str(error_i_a)) | |
| return False | |
| user_id = replied_user.user.id | |
| profile_pic = await event.client.download_profile_photo( | |
| user_id, Config.TMP_DOWNLOAD_DIRECTORY | |
| ) | |
| # some people have weird HTML in their names | |
| first_name = html.escape(replied_user.user.first_name) | |
| # https://stackoverflow.com/a/5072031/4723940 | |
| # some Deleted Accounts do not have first_name | |
| if first_name is not None: | |
| # some weird people (like me) have more than 4096 characters in their | |
| # names | |
| first_name = first_name.replace("\u2060", "") | |
| last_name = replied_user.user.last_name | |
| # last_name is not Manadatory in @Telegram | |
| if last_name is not None: | |
| last_name = html.escape(last_name) | |
| last_name = last_name.replace("\u2060", "") | |
| if last_name is None: | |
| last_name = "" | |
| # inspired by https://telegram.dog/afsaI181 | |
| user_bio = replied_user.about | |
| if user_bio is not None: | |
| user_bio = replied_user.about | |
| await borg(functions.account.UpdateProfileRequest(first_name=first_name)) | |
| await borg(functions.account.UpdateProfileRequest(last_name=last_name)) | |
| await borg(functions.account.UpdateProfileRequest(about=user_bio)) | |
| pfile = await borg.upload_file(profile_pic) # pylint:disable=E060 | |
| await borg( | |
| functions.photos.UploadProfilePhotoRequest(pfile) # pylint:disable=E0602 | |
| ) | |
| await event.delete() | |
| await borg.send_message( | |
| event.chat_id, "**LET US BE AS ONE**", reply_to=reply_message | |
| ) | |
| if BOTLOG: | |
| await event.client.send_message( | |
| BOTLOG_CHATID, | |
| f"#CLONED\nSuccesfulley cloned [{first_name}](tg://user?id={user_id })", | |
| ) | |
| async def _(event): | |
| if event.fwd_from: | |
| return | |
| name = f"{DEFAULTUSER}" | |
| bio = f"{DEFAULTUSERBIO}" | |
| n = 1 | |
| await borg( | |
| functions.photos.DeletePhotosRequest( | |
| await event.client.get_profile_photos("me", limit=n) | |
| ) | |
| ) | |
| await borg(functions.account.UpdateProfileRequest(about=bio)) | |
| await borg(functions.account.UpdateProfileRequest(first_name=name)) | |
| await event.edit("succesfully reverted to your account back") | |
| if BOTLOG: | |
| await event.client.send_message( | |
| BOTLOG_CHATID, f"#REVERT\nSuccesfully reverted back to your profile" | |
| ) | |
| async def get_full_user(event): | |
| if event.reply_to_msg_id: | |
| previous_message = await event.get_reply_message() | |
| if previous_message.forward: | |
| replied_user = await event.client( | |
| GetFullUserRequest( | |
| previous_message.forward.from_id | |
| or previous_message.forward.channel_id | |
| ) | |
| ) | |
| return replied_user, None | |
| replied_user = await event.client(GetFullUserRequest(previous_message.from_id)) | |
| return replied_user, None | |
| input_str = None | |
| try: | |
| input_str = event.pattern_match.group(1) | |
| except IndexError as e: | |
| return None, e | |
| if event.message.entities is not None: | |
| mention_entity = event.message.entities | |
| probable_user_mention_entity = mention_entity[0] | |
| if isinstance(probable_user_mention_entity, MessageEntityMentionName): | |
| user_id = probable_user_mention_entity.user_id | |
| replied_user = await event.client(GetFullUserRequest(user_id)) | |
| return replied_user, None | |
| try: | |
| user_object = await event.client.get_entity(input_str) | |
| user_id = user_object.id | |
| replied_user = await event.client(GetFullUserRequest(user_id)) | |
| return replied_user, None | |
| except Exception as e: | |
| return None, e | |
| if event.is_private: | |
| try: | |
| user_id = event.chat_id | |
| replied_user = await event.client(GetFullUserRequest(user_id)) | |
| return replied_user, None | |
| except Exception as e: | |
| return None, e | |
| try: | |
| user_object = await event.client.get_entity(int(input_str)) | |
| user_id = user_object.id | |
| replied_user = await event.client(GetFullUserRequest(user_id)) | |
| return replied_user, None | |
| except Exception as e: | |
| return None, e | |
| CMD_HELP.update( | |
| { | |
| "clone": ".clone <reply to user who you want to clone.\ | |
| \n**Use - clone the replied user account.\ | |
| \n\n.revert\ | |
| \nUse - Reverts back to your profile which you have set in heroku.\ | |
| " | |
| } | |
| ) | |