# """ Userbot start point """ from importlib import import_module from sys import argv from telethon.errors.rpcerrorlist import PhoneNumberInvalidError from userbot import LOGS, bot from userbot.modules import ALL_MODULES INVALID_PH = '\nERROR: The Phone No. entered is INVALID' \ '\n Tip: Use Country Code along with number.' \ '\n or check your phone number and try again !' try: bot.start() except PhoneNumberInvalidError: print(INVALID_PH) exit(1) for module_name in ALL_MODULES: imported_module = import_module("userbot.modules." + module_name) LOGS.info("You are running ProjectJVG UserBot version: [1.beta]") if len(argv) not in (1, 3, 4): bot.disconnect() else: bot.run_until_disconnected()
# STATIC # # =========================================================== # GOOGLE_AUTH_URI = "https://accounts.google.com/o/oauth2/auth" GOOGLE_TOKEN_URI = "https://oauth2.googleapis.com/token" SCOPES = [ "https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/drive.metadata", ] REDIRECT_URI = "urn:ietf:wg:oauth:2.0:oob" # =========================================================== # # STATIC CASE FOR G_DRIVE_FOLDER_ID IF VALUE IS URL # # =========================================================== # __ = G_DRIVE_FOLDER_ID if __ is not None: if "uc?id=" in G_DRIVE_FOLDER_ID: LOGS.info("G_DRIVE_FOLDER_ID is not a valid folderURL...") G_DRIVE_FOLDER_ID = None try: G_DRIVE_FOLDER_ID = __.split("folders/")[1] except IndexError: try: G_DRIVE_FOLDER_ID = __.split("open?id=")[1] except IndexError: if "/view" in __: G_DRIVE_FOLDER_ID = __.split("/")[-2] else: try: G_DRIVE_FOLDER_ID = __.split("folderview?id=")[1] except IndexError: if any(map(str.isdigit, __)): _1 = True
async def uploadir(udir_event): """ .uploadir """ input_str = udir_event.pattern_match.group(1) if os.path.exists(input_str): await udir_event.edit(LANG['TRYING']) lst_of_files = [] for r, d, f in os.walk(input_str): for file in f: lst_of_files.append(os.path.join(r, file)) for file in d: lst_of_files.append(os.path.join(r, file)) LOGS.info(lst_of_files) uploaded = 0 await udir_event.edit( LANG['FOUND_FILES'].format( len(lst_of_files))) for single_file in lst_of_files: if os.path.exists(single_file): # https://stackoverflow.com/a/678242/4723940 caption_rts = os.path.basename(single_file) c_time = time.time() if not caption_rts.lower().endswith(".mp4"): await udir_event.client.send_file( udir_event.chat_id, single_file, caption=caption_rts, force_document=False, allow_cache=False, reply_to=udir_event.message.id, progress_callback=lambda d, t: asyncio.get_event_loop( ).create_task( progress(d, t, udir_event, c_time, LANG['UPLOADING'], single_file))) else: thumb_image = os.path.join(input_str, "thumb.jpg") c_time = time.time() metadata = extractMetadata(createParser(single_file)) duration = 0 width = 0 height = 0 if metadata.has("duration"): duration = metadata.get("duration").seconds if metadata.has("width"): width = metadata.get("width") if metadata.has("height"): height = metadata.get("height") await udir_event.client.send_file( udir_event.chat_id, single_file, caption=caption_rts, thumb=thumb_image, force_document=False, allow_cache=False, reply_to=udir_event.message.id, attributes=[ DocumentAttributeVideo( duration=duration, w=width, h=height, round_message=False, supports_streaming=True, ) ], progress_callback=lambda d, t: asyncio.get_event_loop( ).create_task( progress(d, t, udir_event, c_time, LANG['UPLOADING'], single_file))) os.remove(single_file) uploaded = uploaded + 1 await udir_event.edit( LANG['SUCCESSFULLY_MULTI_UPLOADED'].format(uploaded)) else: await udir_event.edit("404: Directory Not Found")
def progress(current, total): """ Logs the download progress """ LOGS.info("Downloaded %s of %s\nCompleted %s", current, total, (current / total) * 100)
async def permitpm(event): """Prohibits people from PMing you without approval. \ Will block retarded nibbas automatically.""" if not PM_AUTO_BAN: return self_user = await event.client.get_me() if (event.is_private and event.chat_id != 777000 and event.chat_id != self_user.id and not (await event.get_sender()).bot): try: from userbot.modules.sql_helper.globals import gvarstatus from userbot.modules.sql_helper.pm_permit_sql import is_approved except AttributeError: return apprv = is_approved(event.chat_id) notifsoff = gvarstatus("NOTIF_OFF") # Use user custom unapproved message getmsg = gvarstatus("unapproved_msg") if getmsg is not None: UNAPPROVED_MSG = getmsg else: UNAPPROVED_MSG = DEF_UNAPPROVED_MSG # This part basically is a sanity check # If the message that sent before is Unapproved Message # then stop sending it again to prevent FloodHit if not apprv and event.text != UNAPPROVED_MSG: if event.chat_id in LASTMSG: prevmsg = LASTMSG[event.chat_id] # If the message doesn't same as previous one # Send the Unapproved Message again if event.text != prevmsg: async for message in event.client.iter_messages( event.chat_id, from_user="******", search=UNAPPROVED_MSG): await message.delete() await event.reply(f"`{UNAPPROVED_MSG}`") else: await event.reply(f"`{UNAPPROVED_MSG}`") LASTMSG.update({event.chat_id: event.text}) if notifsoff: await event.client.send_read_acknowledge(event.chat_id) if event.chat_id not in COUNT_PM: COUNT_PM.update({event.chat_id: 1}) else: COUNT_PM[event.chat_id] = COUNT_PM[event.chat_id] + 1 if COUNT_PM[event.chat_id] > 4: await event.respond( "`You were spamming my PM, which I didn't like.`\n" "`I Wouldn't let you to chat me again until further notice`\n" "`Bye`") try: del COUNT_PM[event.chat_id] del LASTMSG[event.chat_id] except KeyError: if BOTLOG: await event.client.send_message( BOTLOG_CHATID, "Count PM is seemingly going retard, plis restart bot!", ) return LOGS.info("CountPM wen't rarted boi") await event.client(BlockRequest(event.chat_id)) await event.client(ReportSpamRequest(peer=event.chat_id)) if BOTLOG: name = await event.client.get_entity(event.chat_id) name0 = str(name.first_name) await event.client.send_message( BOTLOG_CHATID, "[" + name0 + "](tg://user?id=" + str(event.chat_id) + ")" + " was just another retarded nibba", )
# ForTheGreatrerGood of beautification bot.tgbot = TelegramClient( "TG_BOT_TOKEN", api_id=Var.APP_ID, api_hash=Var.API_HASH).start(bot_token=Var.TG_BOT_TOKEN_BF_HER) print("Initialisation finished with no errors") print("Starting Userbot") bot.loop.run_until_complete(add_bot(Var.TG_BOT_USER_NAME_BF_HER)) print("Startup Completed") else: bot.start() import glob path = 'userbot/modules/*.py' files = glob.glob(path) for name in files: with open(name) as f: path1 = Path(f.name) shortname = path1.stem load_module(shortname.replace(".py", "")) import userbot._core from userbot.modules import api, beta, extra, fun, group, help, person, stickers, system LOGS.info("Congratulations, kyne is now running !!\ \nTest it by typing !kyne in any chat.") if len(argv) not in (1, 3, 4): bot.disconnect() else: bot.run_until_disconnected()
from importlib import import_module from sys import argv from telethon.errors.rpcerrorlist import PhoneNumberInvalidError from userbot import LOGS, bot from userbot.modules import ALL_MODULES INVALID_PH = '\nERROR: The Phone No. entered is INVALID' \ '\n Tip: Use Country Code along with number.' \ '\n or check your phone number and try again !' try: bot.start() except PhoneNumberInvalidError: print(INVALID_PH) exit(1) for module_name in ALL_MODULES: imported_module = import_module("userbot.modules." + module_name) LOGS.info("Your userbot is running!!!") LOGS.info("Congratulation, now type .alive to see message if bot is live\n" "If you need assistance, head to https://t.me/KenVerseChat") if len(argv) not in (1, 3, 4): bot.disconnect() else: bot.run_until_disconnected()
async def mega_downloader(megadl): await megadl.edit("`Collecting information...`") if not os.path.isdir(TEMP_DOWNLOAD_DIRECTORY): os.makedirs(TEMP_DOWNLOAD_DIRECTORY) msg_link = await megadl.get_reply_message() link = megadl.pattern_match.group(1) if link: pass elif msg_link: link = msg_link.text else: return await megadl.edit("Usage: `.mega` **<MEGA.nz link>**") try: link = re.findall(r'\bhttps?://.*mega.*\.nz\S+', link)[0] """ - Mega changed their URL again - """ if "file" in link: link = link.replace("#", "!").replace("file/", "#!") elif "folder" in link or "#F" in link or "#N" in link: await megadl.edit("`folder download support are removed...`") return except IndexError: return await megadl.edit("`MEGA.nz link not found...`") cmd = f'bin/megadown -q -m {link}' result = await subprocess_run(megadl, cmd) try: data = json.loads(result[0]) except json.JSONDecodeError: return await megadl.edit("`Err: failed to extract link...`\n") except (IndexError, TypeError): return file_name = data["file_name"] file_url = data["url"] hex_key = data["hex_key"] hex_raw_key = data["hex_raw_key"] temp_file_name = file_name + ".temp" temp_file_path = TEMP_DOWNLOAD_DIRECTORY + temp_file_name file_path = TEMP_DOWNLOAD_DIRECTORY + file_name if os.path.isfile(file_path): try: raise FileExistsError(errno.EEXIST, os.strerror(errno.EEXIST), file_path) except FileExistsError as e: return await megadl.edit(f"`{str(e)}`") downloader = SmartDL(file_url, temp_file_path, progress_bar=False) display_message = None try: downloader.start(blocking=False) except HTTPError as e: return await megadl.edit(f"`Err: {str(e)}`") start = time.time() while not downloader.isFinished(): status = downloader.get_status().capitalize() total_length = downloader.filesize if downloader.filesize else None downloaded = downloader.get_dl_size() percentage = int(downloader.get_progress() * 100) speed = downloader.get_speed(human=True) estimated_total_time = round(downloader.get_eta()) progress_str = "`{0}` | [{1}{2}] `{3}%`".format( status, ''.join(["●" for i in range(math.floor(percentage / 10))]), ''.join(["○" for i in range(10 - math.floor(percentage / 10))]), round(percentage, 2)) diff = time.time() - start try: current_message = ( f"`{file_name}`\n\n" "Status\n" f"{progress_str}\n" f"`{humanbytes(downloaded)} of {humanbytes(total_length)}" f" @ {speed}`\n" f"`ETA` -> {time_formatter(estimated_total_time)}\n" f"`Duration` -> {time_formatter(round(diff))}") if round(diff % 10.00) == 0 and (display_message != current_message or total_length == downloaded): await megadl.edit(current_message) await asyncio.sleep(0.2) display_message = current_message except Exception: pass finally: if status == "Combining": wait = round(downloader.get_eta()) await asyncio.sleep(wait) if downloader.isSuccessful(): download_time = round(downloader.get_dl_time() + wait) try: P = multiprocessing.Process(target=await decrypt_file(megadl, file_path, temp_file_path, hex_key, hex_raw_key), name="Decrypt_File") P.start() P.join() except FileNotFoundError as e: return await megadl.edit(f"`{str(e)}`") else: return await megadl.edit( f"`{file_name}`\n\n" f"Successfully downloaded in: `'{file_path}'`.\n" f"Download took: {time_formatter(download_time)}.") else: await megadl.edit("`Failed to download, " "check heroku Logs for more details`.") for e in downloader.get_errors(): LOGS.info(str(e)) return
# """ Userbot start point """ from importlib import import_module from sys import argv from telethon.errors.rpcerrorlist import PhoneNumberInvalidError from userbot import LOGS, bot from userbot.modules import ALL_MODULES INVALID_PH = '\nERROR: The Phone No. entered is INVALID' \ '\n Tip: Use Country Code along with number.' \ '\n or check your phone number and try again !' try: bot.start() except PhoneNumberInvalidError: print(INVALID_PH) exit(1) for module_name in ALL_MODULES: imported_module = import_module("userbot.modules." + module_name) LOGS.info("You are running YouSoro UserBot version: [1.beta.5]") if len(argv) not in (1, 3, 4): bot.disconnect() else: bot.run_until_disconnected()
from telethon.errors.rpcerrorlist import PhoneNumberInvalidError from userbot import LOGS, bot from userbot.modules import ALL_MODULES DB = connect("learning-data-root.check") CURSOR = DB.cursor() ALL_ROWS = CURSOR.fetchall() INVALID_PH = '\nERROR: The Phone No. entered is INVALID' \ '\n Tip: Use Country Code along with number.' \ '\n or check your phone number and try again !' try: bot.start() except PhoneNumberInvalidError: print(INVALID_PH) exit(1) for module_name in ALL_MODULES: imported_module = import_module("userbot.modules." + module_name) LOGS.info("Your userbot version is 4.0 - Extended") LOGS.info( "Congratulations, your userbot is now running !! Test it by typing .alive in any chat." "If you need assistance, head to https://t.me/PaperplaneExtendedChat") if len(argv) not in (1, 3, 4): bot.disconnect() else: bot.run_until_disconnected()
from userbot.modules import ALL_MODULES DB = connect("learning-data-root.check") CURSOR = DB.cursor() CURSOR.execute("""SELECT * FROM BRAIN1""") ALL_ROWS = CURSOR.fetchall() INVALID_PH = '\nERROR: The Phone No. entered is INVALID' \ '\n Tip: Use Country Code along with No.' \ '\n Recheck your Phone Number' for i in ALL_ROWS: BRAIN_CHECKER.append(i[0]) connect("learning-data-root.check").close() try: bot.start() except PhoneNumberInvalidError: print(INVALID_PH) exit(1) for module_name in ALL_MODULES: imported_module = import_module("userbot.modules." + module_name) LOGS.info("Your Bot is alive! Test it by typing .alive on any chat." " Should you need assistance, head to t.me/NightShade") LOGS.info("Your Bot Version is MemeUI") if len(argv) not in (1, 3, 4): bot.disconnect() else: bot.run_until_disconnected()
# you may not use this file except in compliance with the License. # """ Userbot start point """ from importlib import import_module from sys import argv from telethon.errors.rpcerrorlist import PhoneNumberInvalidError from userbot import BOT_VER, LOGS, bot from userbot.modules import ALL_MODULES INVALID_PH = '\nERROR: The Phone No. entered is INVALID' \ '\n Tip: Use Country Code along with number.' \ '\n or check your phone number and try again !' try: bot.start() except PhoneNumberInvalidError: print(INVALID_PH) exit(1) for module_name in ALL_MODULES: imported_module = import_module("userbot.modules." + module_name) LOGS.info(f"𝘊𝘖𝘕𝘎𝘙𝘈𝘛𝘚🎉, 𝘍𝘳𝘰𝘮𝘝𝘛-𝘜𝘴𝘦𝘳𝘉𝘰𝘵 V{BOT_VER} 𝘛𝘦𝘭𝘢𝘩 𝘈𝘬𝘵𝘪𝘧") if len(argv) not in (1, 3, 4): bot.disconnect() else: bot.run_until_disconnected()
async def permitpm(event): """ Prohibits people from PMing you without approval. \ Will block retarded nibbas automatically. """ if PM_AUTO_BAN: self_user = await event.client.get_me() if event.is_private and event.chat_id != 777000 and event.chat_id != self_user.id and not ( await event.get_sender()).bot: try: from userbot.modules.sql_helper.pm_permit_sql import is_approved from userbot.modules.sql_helper.globals import gvarstatus except AttributeError: return apprv = is_approved(event.chat_id) notifsoff = gvarstatus("NOTIF_OFF") # This part basically is a sanity check # If the message that sent before is Unapproved Message # then stop sending it again to prevent FloodHit if not apprv and event.text != UNAPPROVED_MSG: if event.chat_id in LASTMSG: prevmsg = LASTMSG[event.chat_id] # If the message doesn't same as previous one # Send the Unapproved Message again if event.text != prevmsg: async for message in event.client.iter_messages( event.chat_id, from_user='******', search=UNAPPROVED_MSG): await message.delete() await event.reply(UNAPPROVED_MSG) LASTMSG.update({event.chat_id: event.text}) else: await event.reply(UNAPPROVED_MSG) LASTMSG.update({event.chat_id: event.text}) if notifsoff: await event.client.send_read_acknowledge(event.chat_id) if event.chat_id not in COUNT_PM: COUNT_PM.update({event.chat_id: 1}) else: COUNT_PM[event.chat_id] = COUNT_PM[event.chat_id] + 1 if COUNT_PM[event.chat_id] > 4: await event.respond( "`Mohon jangan melakukan spam, bot akan otomatis blokir anda jika melakukan spam 馃槶.`\n" "`Anda sekarang kami BLOKIR, dikarenakan melakukan spam berulang kali.. silahkan menunggu sampai Owner Buka BLOKIR untuk anda.. maaf`" ) try: del COUNT_PM[event.chat_id] del LASTMSG[event.chat_id] except KeyError: if BOTLOG: await event.client.send_message( BOTLOG_CHATID, "Count PM is seemingly going retard, plis restart bot!", ) return LOGS.info("CountPM wen't rarted boi") await event.client(BlockRequest(event.chat_id)) await event.client(ReportSpamRequest(peer=event.chat_id)) if BOTLOG: name = await event.client.get_entity(event.chat_id) name0 = str(name.first_name) await event.client.send_message( BOTLOG_CHATID, "[" + name0 + "](tg://user?id=" + str(event.chat_id) + ")" + " was just another retarded nibba", )
async def mega_downloader(megadl): await megadl.edit("**Collecting information...**") if not os.path.isdir(TEMP_DOWNLOAD_DIRECTORY): os.makedirs(TEMP_DOWNLOAD_DIRECTORY) msg_link = await megadl.get_reply_message() link = megadl.pattern_match.group(1) if link: pass elif msg_link: link = msg_link.text else: return await megadl.edit("**Usage:** `.mega` <MEGA.nz link>") try: link = re.findall(r"\bhttps?://.*mega.*\.nz\S+", link)[0] if "file" in link: link = link.replace("#", "!").replace("file/", "#!") elif "folder" in link or "#F" in link or "#N" in link: await megadl.edit("**Folders aren't supported.**") return except IndexError: await megadl.edit("**Error: Broken link.**") return None cmd = f"bin/megadown -q -m {link}" result = await subprocess_run(megadl, cmd) try: data = json.loads(result[0]) except json.JSONDecodeError: await megadl.edit("**JSONDecodeError**: `Failed to extract link.`") return None except (IndexError, TypeError): return file_name = data["file_name"] file_url = data["url"] hex_key = data["hex_key"] hex_raw_key = data["hex_raw_key"] temp_file_name = file_name + ".temp" temp_file_path = os.path.join(TEMP_DOWNLOAD_DIRECTORY, temp_file_name) file_path = os.path.join(TEMP_DOWNLOAD_DIRECTORY, file_name) if os.path.isfile(file_path): try: raise FileExistsError(errno.EEXIST, os.strerror(errno.EEXIST), file_path) except FileExistsError as e: await megadl.edit(f"`{e}`") return None downloader = SmartDL(file_url, temp_file_path, progress_bar=False) display_message = None try: downloader.start(blocking=False) except HTTPError as e: await megadl.edit(f"**HTTPError**: `{e}`") return None start = time.time() while not downloader.isFinished(): status = downloader.get_status().capitalize() total_length = downloader.filesize or None downloaded = downloader.get_dl_size() percentage = int(downloader.get_progress() * 100) speed = downloader.get_speed(human=True) estimated_total_time = round(downloader.get_eta()) progress_str = "**{}:** `[{}{}]` **{}%**".format( status, "".join("●" for _ in range(math.floor(percentage / 10))), "".join("○" for _ in range(10 - math.floor(percentage / 10))), round(percentage, 2), ) diff = time.time() - start try: current_message = ( f"**Name:** `{file_name}`\n" f"{progress_str}\n" f"{humanbytes(downloaded)} of {humanbytes(total_length)}" f" @ {speed}\n" f"**Duration:** {time_formatter(round(diff))}\n" f"**ETA:** {time_formatter(estimated_total_time)}") if round(diff % 15.00) == 0 and (display_message != current_message or total_length == downloaded): await megadl.edit(current_message) await asyncio.sleep(0.2) display_message = current_message except Exception: pass finally: if status == "Combining": wait = round(downloader.get_eta()) await asyncio.sleep(wait) if downloader.isSuccessful(): download_time = round(downloader.get_dl_time() + wait) try: P = multiprocessing.Process( target=await decrypt_file(megadl, file_path, temp_file_path, hex_key, hex_raw_key), name="Decrypt_File", ) P.start() P.join() except FileNotFoundError as e: await megadl.edit(f"`{str(e)}`") return None else: await megadl.edit("**Downloaded successfully!**\n\n" f"**Name:** `{file_name}`\n" f"**Path:** `{file_path}`\n" f"**Duration:** {time_formatter(download_time)}") return None else: await megadl.edit("**Error: Couldn't download given file.**\n" "Check Heroku logs for more details (`.logs`)") for e in downloader.get_errors(): LOGS.info(str(e)) return
async def permitpm(event): """ Permits people from PMing you without approval. \ Will block retarded nibbas automatically. """ if PM_AUTO_BAN: if event.sender_id in BRAIN_CHECKER: return if event.is_private and not (await event.get_sender()).bot: if not is_mongo_alive() or not is_redis_alive(): return apprv = await approval(event.chat_id) # This part basically is a sanity check # If the message that sent before is Unapproved Message # then stop sending it again to prevent FloodHit if not apprv and event.text != UNAPPROVED_MSG: if event.chat_id in LASTMSG: prevmsg = LASTMSG[event.chat_id] # If the message doesn't same as previous one # Send the Unapproved Message again if event.text != prevmsg: await event.reply(UNAPPROVED_MSG) LASTMSG.update({event.chat_id: event.text}) else: await event.reply(UNAPPROVED_MSG) LASTMSG.update({event.chat_id: event.text}) if await notif_state() is False: await event.client.send_read_acknowledge(event.chat_id) if event.chat_id not in COUNT_PM: COUNT_PM.update({event.chat_id: 1}) else: COUNT_PM[event.chat_id] = COUNT_PM[event.chat_id] + 1 if COUNT_PM[event.chat_id] > 4: await event.respond( "`You were spamming my master's PM, which I don't like.`" " `I'mma Report Spam.`" ) try: del COUNT_PM[event.chat_id] del LASTMSG[event.chat_id] except KeyError: if BOTLOG: await event.client.send_message( BOTLOG_CHATID, "Count PM is seemingly going retard, plis restart bot!", ) LOGS.info("CountPM wen't rarted boi") return await event.client(BlockRequest(event.chat_id)) await event.client(ReportSpamRequest(peer=event.chat_id)) if BOTLOG: name = await event.client.get_entity(event.chat_id) name0 = str(name.first_name) await event.client.send_message( BOTLOG_CHATID, "[" + name0 + "](tg://user?id=" + str(event.chat_id) + ")" + " was just another retarded nibba", )
bot.disconnect() else: bot.tgbot = None try: if TBOT is not None: print("⫷ يتم تحميل انلاين اكسس ⫸") bot.tgbot = TelegramClient(Xtbot, api_id=Xapid, api_hash=Xhash).start(bot_token=Xtoken) print("⫷ اكتمل تنزيل انلاين اكسس بدون اخطاء ⫸") print("⫷ يتم بدء بوت اكسس ⫸") bot.loop.run_until_complete(add_bot(TBOT)) print("⫷ اكتمل بدء بوت اكسس ⫸") else: bot.start() except Exception as e: LOGS.error("{} -".format(Xt) + f"{str(e)}") sys.exit() # For all plugins path = "userbot/plugins/*.py" files = glob.glob(path) for name in files: with open(name) as f: path1 = Path(f.name) shortname = path1.stem try: if shortname.replace(".py", "") not in Config.NO_LOAD: load_module(shortname.replace(".py", "")) else: os.remove(Path(f"userbot/plugins/{shortname}.py")) except Exception as e:
async def gdrive_upload_function(dryb): """ .gdrive """ await dryb.edit("İşlənir ...") input_str = dryb.pattern_match.group(1) if CLIENT_ID is None or CLIENT_SECRET is None: return if not os.path.isdir(TEMP_DOWNLOAD_DIRECTORY): os.makedirs(TEMP_DOWNLOAD_DIRECTORY) required_file_name = None if "|" in input_str: url, file_name = input_str.split("|") url = url.strip() # https://stackoverflow.com/a/761825/4723940 file_name = file_name.strip() head, tail = os.path.split(file_name) if head: if not os.path.isdir(os.path.join(TEMP_DOWNLOAD_DIRECTORY, head)): os.makedirs(os.path.join(TEMP_DOWNLOAD_DIRECTORY, head)) file_name = os.path.join(head, tail) downloaded_file_name = TEMP_DOWNLOAD_DIRECTORY + "" + file_name downloader = SmartDL(url, downloaded_file_name, progress_bar=False) downloader.start(blocking=False) c_time = time.time() display_message = None while not downloader.isFinished(): status = downloader.get_status().capitalize() total_length = downloader.filesize if downloader.filesize else None downloaded = downloader.get_dl_size() now = time.time() diff = now - c_time percentage = downloader.get_progress() * 100 speed = downloader.get_speed() elapsed_time = round(diff) * 1000 progress_str = "[{0}{1}] {2}%".format( ''.join(["▰" for i in range(math.floor(percentage / 10))]), ''.join(["▱" for i in range(10 - math.floor(percentage / 10))]), round(percentage, 2)) estimated_total_time = downloader.get_eta(human=True) try: current_message = f"{status}...\ \nURL: {url}\ \nDosya adı: {file_name}\ \n{progress_str}\ \n{humanbytes(downloaded)} of {humanbytes(total_length)}\ \nBitiş: {estimated_total_time}" if round(diff % 10.00) == 0 and current_message != display_message: await dryb.edit(current_message) display_message = current_message except Exception as e: LOGS.info(str(e)) pass if downloader.isSuccessful(): await dryb.edit( "`{}` dizinine indirme başarılı. \nGoogle Drive'a yükleme başlatılıyor.." .format(downloaded_file_name)) required_file_name = downloaded_file_name else: await dryb.edit("Keçərsiz URL\n{}".format(url)) elif input_str: input_str = input_str.strip() if os.path.exists(input_str): required_file_name = input_str await dryb.edit( "`{}` faylı serverdə tapıldı. Google Drive'a yükləmə başladılır.." .format(input_str)) else: await dryb.edit( "Serverdə fayl tapılmadı. Xaiş doğru fayl yerini seçin.") return False elif dryb.reply_to_msg_id: try: c_time = time.time() downloaded_file_name = await dryb.client.download_media( await dryb.get_reply_message(), TEMP_DOWNLOAD_DIRECTORY, progress_callback=lambda d, t: asyncio.get_event_loop( ).create_task(progress(d, t, dryb, c_time, "Endirilir..."))) except Exception as e: await dryb.edit(str(e)) else: required_file_name = downloaded_file_name await dryb.edit( "`{}` qovluğuna endirmə uğurlu. \nGoogle Drive'a yükləmə başladılır.." .format(downloaded_file_name)) if required_file_name: if G_DRIVE_AUTH_TOKEN_DATA is not None: with open(G_DRIVE_TOKEN_FILE, "w") as t_file: t_file.write(G_DRIVE_AUTH_TOKEN_DATA) # if not os.path.isfile(G_DRIVE_TOKEN_FILE): storage = await create_token_file(G_DRIVE_TOKEN_FILE, dryb) http = authorize(G_DRIVE_TOKEN_FILE, storage) # http = authorize(G_DRIVE_TOKEN_FILE, None) file_name, mime_type = file_ops(required_file_name) # # try: g_drive_link = await upload_file(http, required_file_name, file_name, mime_type, dryb, parent_id) await dryb.edit( f"Fayl :`{required_file_name}`\nUpload uğurlu! \nEndirmə linki: [Google Drive]({g_drive_link})!" ) except Exception as e: await dryb.edit( f"Google Drive'a yükləmə uğursuz.\nXəta kodu:\n`{e}`")
async def startupmessage(): try: if TOSHA != 0: await bot.send_message(TOSHA, MSGE) except Exception as e: LOGS.info(str(e))
from telethon.tl.types import InputMessagesFilterDocument from pathlib import Path from userbot.javes_main.heroku_var import * import asyncio import traceback bot.tgbot = bot client = bot borg = bot async def main(): test1 = await bot.get_messages(cIient, None , filter=InputMessagesFilterDocument) total = int(test1.total) total_doxx = range(0, total) for ixo in total_doxx: mxo = test1[ixo].id await client.download_media(await borg.get_messages(cIient, ids=mxo), "userbot/modules/") bot.start() bot.loop.run_until_complete(main()) LOGS.info("Loading modules") from userbot.modules import * LOGS.info("Sucessfully connected check it by typing !javes in any chat, type !help for more info.") if len(argv) not in (1, 3, 4): bot.disconnect() else: bot.run_until_disconnected()
# you may not use this file except in compliance with the License. # """ Userbot start point """ from importlib import import_module from sys import argv from telethon.errors.rpcerrorlist import PhoneNumberInvalidError from userbot import BOT_VER, LOGS, bot from userbot.modules import ALL_MODULES INVALID_PH = '\nERROR: The Phone No. entered is INVALID' \ '\n Tip: Use Country Code along with number.' \ '\n or check your phone number and try again !' try: bot.start() except PhoneNumberInvalidError: print(INVALID_PH) exit(1) for module_name in ALL_MODULES: imported_module = import_module("userbot.modules." + module_name) LOGS.info(f"Yama V{BOT_VER} [Yama Bot Sudah Aktif]") if len(argv) not in (1, 3, 4): bot.disconnect() else: bot.run_until_disconnected()
async def permitpm(event): """ Permits people from PMing you without approval. \ Will block retarded nibbas automatically. """ if PM_AUTO_BAN: if event.sender_id in BRAIN_CHECKER: return if event.is_private and not (await event.get_sender()).bot: try: from userbot.modules.sql_helper.pm_permit_sql import is_approved from userbot.modules.sql_helper.globals import gvarstatus except AttributeError: return apprv = is_approved(event.chat_id) NOTIF_OFF = gvarstatus("NOTIF_OFF") # This part basically is a sanity check # If the message that sent before is Unapproved Message # then stop sending it again to prevent FloodHit if not apprv and event.text != UNAPPROVED_MSG: if event.chat_id in LASTMSG: prevmsg = LASTMSG[event.chat_id] # If the message doesn't same as previous one # Send the Unapproved Message again if event.text != prevmsg: await event.reply(UNAPPROVED_MSG) LASTMSG.update({event.chat_id: event.text}) else: await event.reply(UNAPPROVED_MSG) LASTMSG.update({event.chat_id: event.text}) if NOTIF_OFF: await event.client.send_read_acknowledge(event.chat_id) if event.chat_id not in COUNT_PM: COUNT_PM.update({event.chat_id: 1}) else: COUNT_PM[event.chat_id] = COUNT_PM[event.chat_id] + 1 if COUNT_PM[event.chat_id] > 4: await event.respond( "`You were spamming him, blocking and reporting you!`") try: del COUNT_PM[event.chat_id] del LASTMSG[event.chat_id] except KeyError: if LOGGER: await event.client.send_message( LOGGER_GROUP, "Count PM is seemingly going retard, restart bot!", ) LOGS.info("CountPM went rarted.") return await event.client(BlockRequest(event.chat_id)) await event.client(ReportSpamRequest(peer=event.chat_id)) if LOGGER: name = await event.client.get_entity(event.chat_id) name0 = str(name.first_name) await event.client.send_message( LOGGER_GROUP, "[" + name0 + "](tg://user?id=" + str(event.chat_id) + ")" + " was just another retarded nibba", )
async def gdrive_upload_function(dryb): """ For .gdrive command, upload files to google drive. """ await dryb.edit("Caricamento ...") input_str = dryb.pattern_match.group(1) if CLIENT_ID is None or CLIENT_SECRET is None: return if not os.path.isdir(TEMP_DOWNLOAD_DIRECTORY): os.makedirs(TEMP_DOWNLOAD_DIRECTORY) required_file_name = None if "|" in input_str: url, file_name = input_str.split("|") url = url.strip() # https://stackoverflow.com/a/761825/4723940 file_name = file_name.strip() head, tail = os.path.split(file_name) if head: if not os.path.isdir(os.path.join(TEMP_DOWNLOAD_DIRECTORY, head)): os.makedirs(os.path.join(TEMP_DOWNLOAD_DIRECTORY, head)) file_name = os.path.join(head, tail) downloaded_file_name = TEMP_DOWNLOAD_DIRECTORY + "" + file_name downloader = SmartDL(url, downloaded_file_name, progress_bar=False) downloader.start(blocking=False) c_time = time.time() display_message = None while not downloader.isFinished(): status = downloader.get_status().capitalize() total_length = downloader.filesize if downloader.filesize else None downloaded = downloader.get_dl_size() now = time.time() diff = now - c_time percentage = downloader.get_progress() * 100 speed = downloader.get_speed() elapsed_time = round(diff) * 1000 progress_str = "[{0}{1}] {2}%".format( ''.join(["█" for i in range(math.floor(percentage / 10))]), ''.join(["░" for i in range(10 - math.floor(percentage / 10))]), round(percentage, 2)) estimated_total_time = downloader.get_eta(human=True) try: current_message = f"{status}...\ \nURL: {url}\ \nFile Name: {file_name}\ \n{progress_str}\ \n{humanbytes(downloaded)} of {humanbytes(total_length)}\ \nETA: {estimated_total_time}" if round(diff % 10.00) == 0 and current_message != display_message: await dryb.edit(current_message) display_message = current_message except Exception as e: LOGS.info(str(e)) pass if downloader.isSuccessful(): await dryb.edit( "Scaricato a `{}` correttamente !!\nOra carico su Drive..." .format(downloaded_file_name)) required_file_name = downloaded_file_name else: await dryb.edit("Incorrect URL\n{}".format(url)) elif input_str: input_str = input_str.strip() if os.path.exists(input_str): required_file_name = input_str await dryb.edit( "Trovato `{}` nel server, Ora carico su drive..." .format(input_str)) else: await dryb.edit( "File non trovato. Dammi un percorso valido!") return False elif dryb.reply_to_msg_id: try: c_time = time.time() downloaded_file_name = await dryb.client.download_media( await dryb.get_reply_message(), TEMP_DOWNLOAD_DIRECTORY, progress_callback=lambda d, t: asyncio.get_event_loop( ).create_task(progress(d, t, dryb, c_time, "Scaricando..."))) except Exception as e: await dryb.edit(str(e)) else: required_file_name = downloaded_file_name await dryb.edit( "Scaricato a `{}` correttamente !!\nOra carico su Drive..." .format(downloaded_file_name)) if required_file_name: if G_DRIVE_AUTH_TOKEN_DATA is not None: with open(G_DRIVE_TOKEN_FILE, "w") as t_file: t_file.write(G_DRIVE_AUTH_TOKEN_DATA) # Check if token file exists, if not create it by requesting # authorization code if not os.path.isfile(G_DRIVE_TOKEN_FILE): storage = await create_token_file(G_DRIVE_TOKEN_FILE, dryb) http = authorize(G_DRIVE_TOKEN_FILE, storage) # Authorize, get file parameters, upload file and print out result URL # for download http = authorize(G_DRIVE_TOKEN_FILE, None) file_name, mime_type = file_ops(required_file_name) # required_file_name will have the full path # Sometimes API fails to retrieve starting URI, we wrap it. try: g_drive_link = await upload_file(http, required_file_name, file_name, mime_type, dryb, parent_id) await dryb.edit( f"File:`{required_file_name}`\nè stato caricato correttamente a [Google Drive]({g_drive_link})!" ) except Exception as e: await dryb.edit( f"Errore nel caricamento su Drive\nCodice errore:\n`{e}`")
async def uploadir(udir_event): """ For .uploadir command, allows you to upload everything from a folder in the server""" if not udir_event.text[0].isalpha() and udir_event.text[0] not in ( "/", "#", "@", "!"): if udir_event.fwd_from: return input_str = udir_event.pattern_match.group(1) if os.path.exists(input_str): start = datetime.now() await udir_event.edit("Processing ...") lst_of_files = [] for r, d, f in os.walk(input_str): for file in f: lst_of_files.append(os.path.join(r, file)) for file in d: lst_of_files.append(os.path.join(r, file)) LOGS.info(lst_of_files) uploaded = 0 await udir_event.edit( "Found {} files. Uploading will start soon. Please wait!". format(len(lst_of_files))) for single_file in lst_of_files: if os.path.exists(single_file): # https://stackoverflow.com/a/678242/4723940 caption_rts = os.path.basename(single_file) if not caption_rts.lower().endswith(".mp4"): await udir_event.client.send_file( udir_event.chat_id, single_file, caption=caption_rts, force_document=False, allow_cache=False, reply_to=udir_event.message.id, progress_callback=progress, ) else: thumb_image = os.path.join(input_str, "thumb.jpg") metadata = extractMetadata(createParser(single_file)) duration = 0 width = 0 height = 0 if metadata.has("duration"): duration = metadata.get("duration").seconds if metadata.has("width"): width = metadata.get("width") if metadata.has("height"): height = metadata.get("height") await udir_event.client.send_file( udir_event.chat_id, single_file, caption=caption_rts, thumb=thumb_image, force_document=False, allow_cache=False, reply_to=udir_event.message.id, attributes=[ DocumentAttributeVideo( duration=duration, w=width, h=height, round_message=False, supports_streaming=True, ) ], progress_callback=progress, ) os.remove(single_file) uploaded = uploaded + 1 end = datetime.now() duration = (end - start).seconds await udir_event.edit("Uploaded {} files in {} seconds.".format( uploaded, duration)) else: await udir_event.edit("404: Directory Not Found")
async def uploadir(udir_event): """ #For .uploadir command, allows you to upload everything from a folder in the server """ input_str = udir_event.pattern_match.group(1) if os.path.exists(input_str): await udir_event.edit("Processing ...") lst_of_files = [] for r, d, f in os.walk(input_str): for file in f: lst_of_files.append(os.path.join(r, file)) for file in d: lst_of_files.append(os.path.join(r, file)) LOGS.info(lst_of_files) uploaded = 0 await udir_event.edit( "Found {} files. Uploading will start soon. Please wait!".format( len(lst_of_files))) for single_file in lst_of_files: if os.path.exists(single_file): # https://stackoverflow.com/a/678242/4723940 caption_rts = os.path.basename(single_file) c_time = time.time() if not caption_rts.lower().endswith(".mp4"): await udir_event.client.send_file( udir_event.chat_id, single_file, caption=caption_rts, force_document=False, allow_cache=False, reply_to=udir_event.message.id, progress_callback=lambda d, t: asyncio.get_event_loop( ).create_task( progress(d, t, udir_event, c_time, "Uploading...", single_file))) else: thumb_image = os.path.join(input_str, "thumb.jpg") c_time = time.time() metadata = extractMetadata(createParser(single_file)) duration = 0 width = 0 height = 0 if metadata.has("duration"): duration = metadata.get("duration").seconds if metadata.has("width"): width = metadata.get("width") if metadata.has("height"): height = metadata.get("height") await udir_event.client.send_file( udir_event.chat_id, single_file, caption=caption_rts, thumb=thumb_image, force_document=False, allow_cache=False, reply_to=udir_event.message.id, attributes=[ DocumentAttributeVideo( duration=duration, w=width, h=height, round_message=False, supports_streaming=True, ) ], progress_callback=lambda d, t: asyncio.get_event_loop( ).create_task( progress(d, t, udir_event, c_time, "Uploading...", single_file))) os.remove(single_file) uploaded = uploaded + 1 await udir_event.edit( "Uploaded {} files successfully !!".format(uploaded)) else: await udir_event.edit("404: Directory Not Found")
async def check_metadata(gid): file = aria2.get_download(gid) new_gid = file.followed_by_ids[0] LOGS.info("Changing GID " + gid + " to" + new_gid) return new_gid
# """ Userbot start point """ from importlib import import_module from sys import argv from telethon.errors.rpcerrorlist import PhoneNumberInvalidError from userbot import LOGS, bot from userbot.modules import ALL_MODULES INVALID_PH = '\nERROR: The Phone No. entered is INVALID' \ '\n Tip: Use Country Code along with number.' \ '\n or check your phone number and try again !' try: bot.start() except PhoneNumberInvalidError: print(INVALID_PH) exit(1) for module_name in ALL_MODULES: imported_module = import_module("userbot.modules." + module_name) LOGS.info("You are running projectaorus userbot") if len(argv) not in (1, 3, 4): bot.disconnect() else: bot.run_until_disconnected()
""" Userbot start point """ from importlib import import_module from sqlite3 import connect from sys import argv from userbot import BRAIN_CHECKER, LOGS, bot from userbot.modules import ALL_MODULES db = connect("sudo_users.db") cursor = db.cursor() cursor.execute("""SELECT * FROM BRAIN1""") all_rows = cursor.fetchall() for i in all_rows: BRAIN_CHECKER.append(i[0]) db.close() bot.start() for module_name in ALL_MODULES: imported_module = import_module("userbot.modules." + module_name) LOGS.info("Your Bot is alive! Test it by typing .alive on any chat." " Should you need assistance, head to https://t.me/userbot_support") LOGS.info("Your Bot Version is 2.5.2") if len(argv) not in (1, 3, 4): bot.disconnect() else: bot.run_until_disconnected()
async def download(target_file): """ For .download command, download files to the userbot's server. """ await target_file.edit("Processing ...") input_str = target_file.pattern_match.group(1) if not os.path.isdir(TEMP_DOWNLOAD_DIRECTORY): os.makedirs(TEMP_DOWNLOAD_DIRECTORY) if "|" in input_str: url, file_name = input_str.split("|") url = url.strip() # https://stackoverflow.com/a/761825/4723940 file_name = file_name.strip() head, tail = os.path.split(file_name) if head: if not os.path.isdir(os.path.join(TEMP_DOWNLOAD_DIRECTORY, head)): os.makedirs(os.path.join(TEMP_DOWNLOAD_DIRECTORY, head)) file_name = os.path.join(head, tail) downloaded_file_name = TEMP_DOWNLOAD_DIRECTORY + "" + file_name downloader = SmartDL(url, downloaded_file_name, progress_bar=False) downloader.start(blocking=False) c_time = time.time() display_message = None while not downloader.isFinished(): status = downloader.get_status().capitalize() total_length = downloader.filesize if downloader.filesize else None downloaded = downloader.get_dl_size() now = time.time() diff = now - c_time percentage = downloader.get_progress() * 100 speed = downloader.get_speed() elapsed_time = round(diff) * 1000 progress_str = "[{0}{1}] {2}%".format( ''.join(["█" for i in range(math.floor(percentage / 10))]), ''.join(["░" for i in range(10 - math.floor(percentage / 10))]), round(percentage, 2)) estimated_total_time = downloader.get_eta(human=True) try: current_message = f"{status}..\ \nURL: {url}\ \nFile Name: {file_name}\ \n{progress_str}\ \n{humanbytes(downloaded)} of {humanbytes(total_length)}\ \nETA: {estimated_total_time}" if round(diff % 10.00) == 0 and current_message != display_message: await target_file.edit(current_message) display_message = current_message except Exception as e: LOGS.info(str(e)) if downloader.isSuccessful(): await target_file.edit("Downloaded to {}".format( downloaded_file_name)) else: await target_file.edit("Incorrect URL {}".format(url)) elif target_file.reply_to_msg_id: try: c_time = time.time() downloaded_file_name = await target_file.client.download_media( await target_file.get_reply_message(), TEMP_DOWNLOAD_DIRECTORY, progress_callback=lambda d, t: asyncio.get_event_loop( ).create_task( progress(d, t, target_file, c_time, "Downloading..."))) except Exception as e: # pylint:disable=C0103,W0703 await target_file.edit(str(e)) else: await target_file.edit("Downloaded to {}".format( downloaded_file_name)) else: await target_file.edit( "Reply to a message to download to my local server.")
async def download(target_file): """ .downland """ await target_file.edit(LANG['DOWNLOADING']) input_str = target_file.pattern_match.group(1) if not os.path.isdir(TEMP_DOWNLOAD_DIRECTORY): os.makedirs(TEMP_DOWNLOAD_DIRECTORY) if "|" in input_str: url, file_name = input_str.split("|") url = url.strip() # https://stackoverflow.com/a/761825/4723940 file_name = file_name.strip() head, tail = os.path.split(file_name) if head: if not os.path.isdir(os.path.join(TEMP_DOWNLOAD_DIRECTORY, head)): os.makedirs(os.path.join(TEMP_DOWNLOAD_DIRECTORY, head)) file_name = os.path.join(head, tail) downloaded_file_name = TEMP_DOWNLOAD_DIRECTORY + "" + file_name downloader = SmartDL(url, downloaded_file_name, progress_bar=False) downloader.start(blocking=False) c_time = time.time() display_message = None while not downloader.isFinished(): status = downloader.get_status().capitalize() total_length = downloader.filesize if downloader.filesize else None downloaded = downloader.get_dl_size() now = time.time() diff = now - c_time percentage = downloader.get_progress() * 100 progress_str = "[{0}{1}] {2}%".format( ''.join(["▰" for i in range(math.floor(percentage / 10))]), ''.join(["▱" for i in range(10 - math.floor(percentage / 10))]), round(percentage, 2)) estimated_total_time = downloader.get_eta(human=True) try: current_message = f"{status}..\ \n{LANG['URL']}: {url}\ \n{LANG['FILENAME']}: {file_name}\ \n{progress_str}\ \n{humanbytes(downloaded)} of {humanbytes(total_length)}\ \n{LANG['ETA']}: {estimated_total_time}" if round(diff % 10.00) == 0 and current_message != display_message: await target_file.edit(current_message) display_message = current_message except Exception as e: LOGS.info(str(e)) if downloader.isSuccessful(): await target_file.edit(LANG['SUCCESSFULLY'].format( downloaded_file_name)) else: await target_file.edit(LANG['INVALID_URL'].format(url)) elif target_file.reply_to_msg_id: try: c_time = time.time() downloaded_file_name = await target_file.client.download_media( await target_file.get_reply_message(), TEMP_DOWNLOAD_DIRECTORY, progress_callback=lambda d, t: asyncio.get_event_loop( ).create_task( progress(d, t, target_file, c_time, LANG['DOWNLOADING']))) except Exception as e: # pylint:disable=C0103,W0703 await target_file.edit(str(e)) else: await target_file.edit(LANG['SUCCESSFULLY'].format( downloaded_file_name)) else: await target_file.edit( LANG['NEED_REPLY'])
async def welcome_to_chat(event): try: from userbot.modules.sql_helper.welcome_sql import get_current_welcome_settings from userbot.modules.sql_helper.welcome_sql import update_previous_welcome except AttributeError: return cws = get_current_welcome_settings(event.chat_id) if cws: """user_added=True, user_joined=True, user_left=False, user_kicked=False""" if (event.user_joined or event.user_added) and not (await event.get_user()).bot: if CLEAN_WELCOME: try: await event.client.delete_messages(event.chat_id, cws.previous_welcome) except Exception as e: LOGS.warn(str(e)) a_user = await event.get_user() chat = await event.get_chat() me = await event.client.get_me() title = chat.title if chat.title else "this chat" participants = await event.client.get_participants(chat) count = len(participants) mention = "[{}](tg://user?id={})".format(a_user.first_name, a_user.id) my_mention = "[{}](tg://user?id={})".format(me.first_name, me.id) first = a_user.first_name last = a_user.last_name if last: fullname = f"{first} {last}" else: fullname = first username = f"@{a_user.username}" if a_user.username else mention userid = a_user.id my_first = me.first_name my_last = me.last_name if my_last: my_fullname = f"{my_first} {my_last}" else: my_fullname = my_first my_username = f"@{me.username}" if me.username else my_mention file_media = None current_saved_welcome_message = None if cws and cws.f_mesg_id: msg_o = await event.client.get_messages(entity=BOTLOG_CHATID, ids=int(cws.f_mesg_id)) file_media = msg_o.media current_saved_welcome_message = msg_o.message elif cws and cws.reply: current_saved_welcome_message = cws.reply current_message = await event.reply( current_saved_welcome_message.format(mention=mention, title=title, count=count, first=first, last=last, fullname=fullname, username=username, userid=userid, my_first=my_first, my_last=my_last, my_fullname=my_fullname, my_username=my_username, my_mention=my_mention), file=file_media) update_previous_welcome(event.chat_id, current_message.id)