def zippy_share(link: str) -> str: reply = '' driver = get_webdriver() driver.get(link) left = driver.find_element_by_xpath('//div[contains(@class, "left")]') font = left.find_elements_by_xpath('.//font') name = font[2].text size = font[4].text button = driver.find_element_by_xpath('//a[contains(@id, "dlbutton")]') link = button.get_attribute('href') reply += '{}\n'.format( get_translation('directZippyLink', [name, size, link])) driver.quit() return reply
def type_afk_is_not_true(message): if TEMP_SETTINGS['IS_AFK']: TEMP_SETTINGS['IS_AFK'] = False reply(message, f'**{get_translation("afkEnd")}**') sleep(2) send_log( get_translation( 'afkMessages', ['`', '**', str(len(TEMP_SETTINGS['AFK_USERS'])), str(TEMP_SETTINGS['COUNT_MSG'])])) for i in TEMP_SETTINGS['AFK_USERS']: name = app.get_chat(i) name0 = str(name.first_name) send_log( get_translation( 'afkMentionUsers', ['**', name0, str(i), '`', str(TEMP_SETTINGS['AFK_USERS'][i])])) TEMP_SETTINGS['COUNT_MSG'] = 0 TEMP_SETTINGS['AFK_USERS'] = {} if 'AFK_REASON' in TEMP_SETTINGS: del TEMP_SETTINGS['AFK_REASON'] raise ContinuePropagation
def seden(message): seden = extract_args(message).lower() cmds = OrderedDict(sorted(HELP.items())) if len(seden) > 0: if seden in cmds: edit(message, str(cmds[seden])) else: edit(message, f'**{get_translation("sedenUsage")}**') else: edit(message, get_translation('sedenUsage2', ['**', '`'])) metin = f'{get_translation("sedenShowLoadedModules", ["**", "`", len(cmds)])}\n' for item in cmds: metin += f'• `{item}`\n' reply(message, metin)
def unmute_user(message): try: from sedenecem.sql import mute_sql as sql except BaseException: edit(message, f'`{get_translation("nonSqlMode")}`') return args = extract_args_arr(message) if len(args) > 1: return edit(message, f'`{get_translation("wrongCommand")}`') reply = message.reply_to_message edit(message, f'`{get_translation("unmuteProcess")}`') find_user = extract_user(message) if len(find_user) < 1: return edit(message, f'`{get_translation("banFailUser")}`') try: replied_user = reply.from_user if replied_user.is_self: return edit(message, f'`{get_translation("cannotMuteMyself")}`') except BaseException: pass for user in find_user: try: chat = message.chat sql.unmute(chat.id, user.id) chat.unban_member(user.id) edit( message, get_translation('unmuteResult', ['**', user.first_name, user.id, '`']), ) except Exception as e: edit(message, get_translation('banError', ['`', '**', e])) return
def ungmute_user(client, message): args = extract_args_arr(message) if len(args) > 1: return edit(message, f'`{get_translation("wrongCommand")}`') reply = message.reply_to_message edit(message, f'`{get_translation("unmuteProcess")}`') find_user = extract_user(message) if len(find_user) < 1: return edit(message, f'`{get_translation("banFailUser")}`') try: replied_user = reply.from_user if replied_user.is_self: return edit(message, f'`{get_translation("cannotUnmuteMyself")}`') except BaseException: pass for user in find_user: try: if not sql2.is_gmuted(user.id): return edit(message, f'`{get_translation("alreadyUnmuted")}`') sql2.ungmute(user.id) try: common_chats = client.get_common_chats(user.id) for i in common_chats: i.unban_member(user.id) except BaseException: pass edit( message, get_translation('unmuteResult', ['**', user.first_name, user.id, '`']), ) except Exception as e: edit(message, get_translation('banError', ['`', '**', e])) return
def ungban_user(client, message): args = extract_args(message) reply = message.reply_to_message edit(message, f'`{get_translation("unbanProcess")}`') if args: try: user = client.get_users(args) except Exception: edit(message, f'`{get_translation("banFailUser")}`') return elif reply: user_id = reply.from_user.id user = client.get_users(user_id) else: edit(message, f'`{get_translation("banFailUser")}`') return try: replied_user = reply.from_user if replied_user.is_self: return edit(message, f'`{get_translation("cannotUnbanMyself")}`') except BaseException: pass try: if not sql.is_gbanned(user.id): return edit(message, f'`{get_translation("alreadyUnbanned")}`') chat_id = message.chat.id sql.ungban(user.id) client.unban_chat_member(chat_id, user.id) edit( message, get_translation('unbanResult', ['**', user.first_name, user.id, '`'])) except Exception as e: edit(message, get_translation('banError', ['`', '**', e])) return
def upload_to_gdrive(self, filename): file_metadata = { "name": filename, "parents": [GDRIVE_FOLDER_ID], } media = MediaFileUpload(filename, resumable=True, chunksize=100 * 1024 * 1024) file = self.service.files().create(body=file_metadata, media_body=media, fields="id", supportsAllDrives=True) response = None start_time = time() while response is None: status, response = file.next_chunk() if status: if (curr_time := time()) - start_time > 5: start_time = curr_time edit( self.message, get_translation( "gdriveUp", [ "**", "`", filename, f"½{int(status.progress() * 100)}" ], ), ) else: edit( self.message, get_translation("gdriveUpComplete", ["**", "`", filename]), ) remove(filename)
def urbandictionary(message): match = extract_args(message) if len(match) < 1: edit(message, f'`{get_translation("wrongCommand")}`') return edit(message, f'`{get_translation("processing")}`') query = extract_args(message) try: define(query) except HTTPError: edit(message, get_translation('udResult', ['**', query])) return mean = define(query) deflen = sum(len(i) for i in mean[0]['def']) exalen = sum(len(i) for i in mean[0]['example']) meanlen = deflen + exalen if int(meanlen) >= 0: if int(meanlen) >= 4096: edit(message, f'`{get_translation("outputTooLarge")}`') file = open('urbandictionary.txt', 'w+') file.write('Query: ' + query + '\n\nMeaning: ' + mean[0]['def'] + '\n\n' + 'Örnek: \n' + mean[0]['example']) file.close() reply_doc(message, 'urbandictionary.txt', caption=f'`{get_translation("outputTooLarge")}`') if path.exists('urbandictionary.txt'): remove('urbandictionary.txt') message.delete() return edit( message, get_translation( 'sedenQueryUd', ['**', '`', query, mean[0]['def'], mean[0]['example']])) else: edit(message, get_translation('udNoResult', ['**', query]))
def mention_afk(mention): me = mel[0] if mention.mentioned or mention.reply_to_message and mention.reply_to_message.from_user and mention.reply_to_message.from_user.id == me.id: if TEMP_SETTINGS['IS_AFK']: if mention.from_user.id not in TEMP_SETTINGS['AFK_USERS']: if 'AFK_REASON' in TEMP_SETTINGS: reply( mention, get_translation( "afkMessage2", [ '**', me.first_name, me.id, '`', TEMP_SETTINGS['AFK_REASON']])) else: reply(mention, f"```{choice(AFKSTR)}```") TEMP_SETTINGS['AFK_USERS'].update({mention.from_user.id: 1}) TEMP_SETTINGS['COUNT_MSG'] = TEMP_SETTINGS['COUNT_MSG'] + 1 else: if TEMP_SETTINGS['AFK_USERS'][ mention.from_user.id] % randint( 2, 4) == 0: if 'AFK_REASON' in TEMP_SETTINGS: reply( mention, get_translation( "afkMessage2", [ '**', me.first_name, me.id, '`', TEMP_SETTINGS['AFK_REASON']])) else: reply(mention, f"```{choice(AFKSTR)}```") TEMP_SETTINGS['AFK_USERS'][ mention.from_user.id] = TEMP_SETTINGS['AFK_USERS'][ mention.from_user.id] + 1 TEMP_SETTINGS['COUNT_MSG'] = TEMP_SETTINGS['COUNT_MSG'] + 1 else: TEMP_SETTINGS['AFK_USERS'][ mention.from_user.id] = TEMP_SETTINGS['AFK_USERS'][ mention.from_user.id] + 1 TEMP_SETTINGS['COUNT_MSG'] = TEMP_SETTINGS['COUNT_MSG'] + 1 raise ContinuePropagation
def device(message): textx = message.reply_to_message codename = extract_args(message) if codename: pass elif textx: codename = textx.text else: edit(message, f'`{get_translation("deviceUsage")}`') return data = loads( get('https://raw.githubusercontent.com/androidtrackers/' 'certified-android-devices/master/by_device.json').text) results = data.get(codename) if results: reply = "{}\n".format(get_translation('deviceSearch', ['**', codename])) for item in results: reply += get_translation( 'deviceSearchResultChild', ['**', item['brand'], item['name'], item['model']]) else: reply = get_translation('deviceError', ['`', codename]) edit(message, reply)
def addcf(message): if not LYDIA_APIKEY: return edit(message, get_translation('lydiaMissingApi', ['**', '`']), preview=False) edit(message, f'`{get_translation("processing")}`') sleep(3) reply_msg = message.reply_to_message if reply_msg: session = lydia.create_session() if not reply_msg.from_user.id: return edit(message, f'`{get_translation("lydiaError")}`') ACC_LYDIA.update({(message.chat.id & reply_msg.from_user.id): session}) edit( message, get_translation( 'lydiaResult2', ['**', '`', str(reply_msg.from_user.id), str(message.chat.id)], ), ) else: edit(message, f'`{get_translation("lydiaError2")}`')
def add_filter(message): try: from sedenecem.sql.filters_sql import add_filter except BaseException: edit(message, f'`{get_translation("nonSqlMode")}`') return args = extract_args(message, markdown=True).split(' ', 1) if len(args) < 1 or len(args[0]) < 1: edit(message, f'`{get_translation("wrongCommand")}`') return keyword = args[0] string = args[1] if len(args) > 1 else '' msg = message.reply_to_message msg_id = None if len(string) < 1: if msg: if msg.text: string = msg.text.markdown else: string = None msg_o = forward(msg, LOG_ID) if not msg_o: edit(message, f'`{get_translation("filterError")}`') return msg_id = msg_o.id send_log( get_translation('filterLog', ['`', message.chat.id, keyword])) else: edit(message, f'`{get_translation("wrongCommand")}`') if add_filter(str(message.chat.id), keyword, string, msg_id): edit(message, get_translation('filterAdded', ['**', '`', keyword])) else: edit(message, get_translation('filterUpdated', ['**', '`', keyword]))
def unblockpm(client, message): if message.reply_to_message: reply = message.reply_to_message replied_user = reply.from_user if replied_user.is_self: edit(message, f'`{get_translation("cannotUnblockMyself")}`') return name0 = str(replied_user.first_name) uid = replied_user.id client.unblock_user(uid) edit(message, f'`{get_translation("pmUnblocked")}`') send_log(get_translation('pmUnblockedLog', [name0, replied_user.id])) else: edit(message, f'`{get_translation("pmUnblockedUsage")}`')
def ungmute_user(client, message): args = extract_args(message) reply = message.reply_to_message edit(message, f'`{get_translation("unmuteProcess")}`') if len(args): try: user = client.get_users(args) except Exception: edit(message, f'`{get_translation("banFailUser")}`') return elif reply: user_id = reply.from_user.id user = client.get_users(user_id) else: edit(message, f'`{get_translation("banFailUser")}`') return try: replied_user = reply.from_user if replied_user.is_self: return edit(message, f'`{get_translation("cannotUnmuteMyself")}`') except BaseException: pass try: if not sql2.is_gmuted(user.id): return edit(message, f'`{get_translation("alreadyUnmuted")}`') sql2.ungmute(user.id) edit( message, get_translation('unmuteResult', ['**', user.first_name, user.id, '`']), ) except Exception as e: edit(message, get_translation('banError', ['`', '**', e])) return
def twrp(message): textx = message.reply_to_message device = extract_args(message) if device: pass elif textx: device = textx.text.split(' ')[0] else: edit(message, f'`{get_translation("twrpUsage")}`') return url = get(f'https://dl.twrp.me/{device}/') if url.status_code == 404: reply = get_translation('twrpError', ['`', device]) edit(message, reply) return page = BeautifulSoup(url.content, 'html.parser') download = page.find('table').find('tr').find('a') dl_link = f"https://dl.twrp.me{download['href']}" dl_file = download.text size = page.find('span', {'class': 'filesize'}).text date = page.find('em').text.strip() reply = get_translation('twrpResult', ['**', '__', device, dl_file, dl_link, size, date]) edit(message, reply)
def translate(message): translator = Translator() reply = message.reply_to_message args = extract_args(message) if args: pass elif reply: if not reply.text: return edit(message, f'`{get_translation("trtUsage")}`') args = reply.text else: edit(message, f'`{get_translation("trtUsage")}`') return try: reply_text = translator.translate(deEmojify(args), dest=TRT_LANG) except ValueError: edit(message, f'`{get_translation("trtError")}`') return source_lan = LANGUAGES[reply_text.src.lower()] transl_lan = LANGUAGES[reply_text.dest.lower()] reply_text = '{}\n{}'.format( get_translation( 'transHeader', ['**', '`', source_lan.title(), transl_lan.title()]), reply_text.text, ) edit(message, reply_text) send_log( get_translation( 'trtLog', [source_lan.title(), transl_lan.title()]))
def mutechat(message): try: from sedenecem.sql.keep_read_sql import kread except BaseException: edit(message, f'`{get_translation("nonSqlMode")}`') return status = kread(str(message.chat.id)) if status: edit(message, f'`{get_translation("chatMuted")}`') else: edit(message, f'`{get_translation("chatAlreadyMuted")}`') sleep(2) message.delete() send_log(get_translation('chatLog', [message.chat.id]))
def ddgo(message): query = extract_args(message) if len(query) < 1: edit(message, f'`{get_translation("wrongCommand")}`') return req = get(f'https://duckduckgo.com/lite?q={query}', headers={ 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64)' 'AppleWebKit/537.36 (KHTML, like Gecko)' 'Chrome/81.0.4044.138 Safari/537.36', 'Content-Type': 'text/html' }) soup = BeautifulSoup(req.text, 'html.parser') res1 = soup.findAll('table', {'border': 0}) res1 = res1[-1].findAll('tr') edit(message, get_translation( 'sedenQuery', ['**', '`', query, do_ddsearch(query, res1)]), preview=False) send_log(get_translation('ddgoLog', [query]))
def save_snip(message): try: from sedenecem.sql.snips_sql import add_snip except AttributeError: edit(message, f'`{get_translation("nonSqlMode")}`') return args = extract_args(message, markdown=True).split(' ', 1) if len(args) < 1 or len(args[0]) < 1: edit(message, f'`{get_translation("wrongCommand")}`') return keyword = args[0] string = args[1] if len(args) > 1 else '' msg = message.reply_to_message msg_id = None if len(string) < 1: if msg: if msg.text: string = msg.text.markdown else: string = None msg_o = forward(msg, LOG_ID) if not msg_o: edit(message, f'`{get_translation("snipError")}`') return msg_id = msg_o.message_id send_log( get_translation('snipsLog', ['`', message.chat.id, keyword])) else: edit(message, f'`{get_translation("wrongCommand")}`') if add_snip(keyword, string, msg_id) is False: edit(message, get_translation('snipsUpdated', ['`', keyword])) else: edit(message, get_translation('snipsAdded', ['`', keyword]))
def eval(message): args = extract_args(message) if len(args) < 1: edit(message, f'`{get_translation("evalUsage")}`') return try: evaluation = safe_eval(args) if evaluation: if isinstance(evaluation, str): if len(evaluation) >= 4096: file = open('output.txt', 'w+') file.write(evaluation) file.close() reply_doc(message, 'output.txt', caption=f'`{get_translation("outputTooLarge")}`') remove('output.txt') return edit( message, get_translation('sedenQuery', ['**', '`', args, evaluation])) else: edit( message, get_translation( 'sedenQuery', ['**', '`', args, get_translation('sedenErrorResult')])) except Exception as err: edit(message, get_translation('sedenQuery', ['**', '`', args, str(err)])) send_log(get_translation('evalLog', [args]))
def drive_auth(message): global flow user_id = message.from_user.id args = extract_args(message).split() if len(args) == 0: creds = get(user_id) if creds is not None: creds.refresh(Http()) edit(message, f'`{get_translation("gdriveAuth")}`') set(user_id, creds) else: OAUTH_SCOPE = "https://www.googleapis.com/auth/drive" REDIRECT_URI = "http://localhost" flow = OAuth2WebServerFlow(DRIVE_CLIENT, DRIVE_SECRET, OAUTH_SCOPE, redirect_uri=REDIRECT_URI) auth_url = flow.step1_get_authorize_url() edit( message, f'{get_translation("gauthURL", ["**","`"])} [Google Drive Auth URL]({auth_url})', ) elif args[0] == "token": url = args[1] code = extract_code(url) if not code: return edit(message, f'`{get_translation("gauthTokenErr")}`') if flow: try: creds = flow.step2_exchange(code) set(user_id, creds) edit(message, f'`{get_translation("gauthTokenSuccess")}`') except FlowExchangeError: edit( message, f'`{get_translation("gauthTokenInvalid")}`', ) flow = None else: edit(message, f'`{get_translation("gauthFirstRun")}`') elif args[0] == "revoke": remove_(user_id) edit(message, f'`{get_translation("gauthTokenRevoke")}`') else: edit(message, get_translation("gdriveUsage"))
def rmblacklist(message): if not sql: edit(message, f'`{get_translation("nonSqlMode")}`') return text = extract_args(message) if len(text) < 1: edit(message, f'`{get_translation("blacklistText")}`') return to_unblacklist = list( set(trigger.strip() for trigger in text.split("\n") if trigger.strip())) successful = 0 for trigger in to_unblacklist: if sql.rm_from_blacklist(message.chat.id, trigger.lower()): successful += 1 edit(message, get_translation('blacklistRemoveSuccess', ['**', '`', text]))
def botver(message): if which('git'): from subprocess import PIPE, Popen degisiklik = Popen(['git', 'rev-list', '--all', '--count'], stdout=PIPE, stderr=PIPE, universal_newlines=True) sonuc, _ = degisiklik.communicate() edit(message, get_translation( 'sedenShowBotVersion', ['**', '`', 'Seden UserBot', CHANNEL, BOT_VERSION, sonuc]), preview=False) else: edit(message, f'`{get_translation("sedenGitNotFound")}`')
def tspam(message): tspam = extract_args(message) if len(tspam) < 1: edit(message, f'`{get_translation("spamWrong")}`') return message.delete() if not spam_allowed(): return for text in tspam.replace(' ', ''): reply(message, text) count = increment_spam_count() if not count: break send_log(get_translation('tspamLog'))
def barcode(message): input_str = extract_args(message) reply = message.reply_to_message if len(input_str) < 1: edit(message, get_translation('barcodeUsage', ['**', '`'])) return edit(message, f'`{get_translation("processing")}`') try: bar_code_mode_f = get('code128', input_str, writer=ImageWriter()) filename = bar_code_mode_f.save('code128') reply_doc(reply if reply else message, filename, delete_after_send=True) message.delete() except Exception as e: edit(message, str(e)) return
def restart(message, dyno=False): send_log(get_translation('restartLog')) def std_off(): try: app.stop() except Exception: pass def std_ret(): edit(message, f'`{get_translation("restart")}`') std_off() execl(executable, executable, *argv) if not HEROKU_KEY or not dyno: std_ret() return heroku = from_key(HEROKU_KEY) heroku_app = None heroku_applications = heroku.apps() if not HEROKU_APPNAME: edit( message, f'`{get_translation("updateHerokuVariables", ["HEROKU_APPNAME "])}`', ) std_ret() return for app in heroku_applications: if app.name == HEROKU_APPNAME: heroku_app = app break if heroku_app is None: edit( message, f'`{get_translation("updateHerokuVariables", ["HEROKU_APPNAME "])}`', ) std_ret() return edit(message, f'`{get_translation("restart")}`') std_off() dynos = heroku_app.dynos() dynos[0].restart()
def picspam(message): arr = extract_args_arr(message) if len(arr) < 2 or not arr[0].isdigit(): edit(message, f'`{get_translation("spamWrong")}`') return message.delete() if not spam_allowed(): return count = int(arr[0]) url = arr[1] for i in range(0, count): reply_img(message, url) limit = increment_spam_count() if not limit: break send_log(get_translation('picspamLog'))
def userid(message): reply = message.reply_to_message if reply: if not reply.forward_from: user_id = reply.from_user.id if reply.from_user.username: name = f'**@{reply.from_user.username}**' else: name = f'**[{reply.from_user.first_name}](tg://user?id={reply.from_user.id})**' else: user_id = reply.forward_from.id if reply.forward_from.username: name = f'**@{reply.forward_from.username}**' else: name = f'**[{reply.forward_from.first_name}](tg://user?id={reply.forward_from.id})**' edit(message, get_translation('useridResult', ['**', name, '`', user_id])) else: edit(message, f'`{get_translation("wrongCommand")}`')
def add_exist(conv, pack, pname, pnick): try: send_recv(conv, '/addsticker') except Exception as e: raise e status = send_recv(conv, pname) if limit in status.text: pack += 1 pname = f'trzworld{pack}' pnick = f"trz's world {pack}" edit(message, get_translation('packFull', ['`', '**', str(pack)])) return add_exist(conv, pack, pname, pnick) send_recv(conv, media, doc=True) send_recv(conv, emoji) send_recv(conv, '/done') return True
def userid(message): reply = message.reply_to_message if reply: if not reply.forward_from: user_id = reply.from_user.id if reply.from_user.username: name = '@' + reply.from_user.username else: name = '**' + reply.from_user.first_name + '**' else: user_id = reply.forward_from.id if reply.forward_from.username: name = "@" + reply.forward_from.username else: name = "*" + reply.forward_from.first_name + "*" edit(message, get_translation("useridResult", ['**', name, '`', user_id])) else: edit(message, f'`{get_translation("wrongCommand")}`')