def glitch_image(bot: BOT, message: Message): if not message.reply_to_message: message.edit("`.glitch` needs to be a reply.") sleep(2) elif message.reply_to_message: try: glitch_amount = int(message.command[1]) except (IndexError, ValueError): glitch_amount = 1 glitch_this = message.reply_to_message.download() glitch_ext = glitch_this.split(".")[-1].lower() if glitch_ext in ('jpg', 'jpeg'): for _ in range(glitch_amount): glitched = glitchart.jpeg(photo=glitch_this, inplace=True) bot.send_photo(chat_id=message.chat.id, photo=glitched, caption=f"{glitch_amount} iterations" if glitch_amount > 1 else "", reply_to_message_id=ReplyCheck(message)) message.delete() rmtree('downloads')
def make_poll(bot: BOT, message: Message): cmd = message.command if message.chat.type == 'private': message.edit("Polls are not supported in private chats") sleep(2) message.delete() return if len(cmd) == 1: message.edit("I need a question") sleep(2) message.delete() elif len(cmd) > 1: poll = message.text[6:].split('\n') if len(poll[1:]) < 2: message.edit("I need at least two answers") elif len(poll[1:]) > 10: message.edit("A poll can only have 10 answers") else: sent_poll = BOT.send_poll( chat_id=message.chat.id, question=poll[0], options=poll[1:], reply_to_message_id=ReplyCheck(message)) message.edit("Poll created") LogMessage( POLL_LOG.format( sent_poll, str(sent_poll.chat.id).replace("-100", ""))) message.delete()
def get_members(bot: BOT, message: Message): if message.chat.type == 'private': message.delete() else: total = 0 admins = 0 members = 0 bots = 0 deleted = 0 for member in BOT.iter_chat_members(message.chat.id): total += 1 if member.user.is_bot: bots += 1 elif member.user.is_deleted: deleted += 1 elif member.status in ['creator', 'administrator']: admins += 1 elif not member.user.is_deleted and not member.user.is_bot: members += 1 member_count_text = MEMBER_INFO.format(message.chat.title, total, admins, members, bots, deleted) message.edit(member_count_text) LogMessage(member_count_text)
def PrivateCheck(message: Message): if message.chat.type == 'private': message.edit("Welcome messages are not supported in Private Chats.") sleep(2) message.delete() return None return True
def mock_people(bot: BOT, message: Message): cmd = message.command if len(cmd) > 1: mock_text = " ".join(cmd[1:]) elif message.reply_to_message and len(cmd) == 1: mock_text = message.reply_to_message.text elif not message.reply_to_message and len(cmd) == 1: message.edit("I need something to mock") sleep(2) message.delete() return mock_results = BOT.get_inline_bot_results("stickerizerbot", "#7" + mock_text) try: BOT.send_inline_bot_result(chat_id=message.chat.id, query_id=mock_results.query_id, result_id=mock_results.results[0].id, reply_to_message_id=ReplyCheck(message), hide_via=True) except TimeoutError: message.edit("@StickerizerBot didn't respond in time.") sleep(2) message.delete()
def get_file(bot: BOT, message: Message): file_id = None if message.reply_to_message: rep = message.reply_to_message if rep.audio: file_id = rep.audio.file_id elif rep.document: file_id = rep.document.file_id elif rep.photo: file_id = rep.photo.sizes[-1].file_id elif rep.sticker: file_id = rep.sticker.file_id elif rep.video: file_id = rep.video.file_id elif rep.animation: file_id = rep.animation.file_id elif rep.voice: file_id = rep.voice.file_id elif rep.video_note: file_id = rep.video_note.file_id elif rep.contact: file_id = rep.contact.file_id elif rep.location: file_id = rep.location.file_id elif rep.venue: file_id = rep.venue.file_id if not file_id: message.edit("This chat's ID:\n`{}`".format(message.chat.id)) else: message.edit("File_ID:\n`{}`".format(file_id))
def google_sticker(bot: BOT, message: Message): cmd = message.command if len(cmd) > 1: ggl_text = " ".join(cmd[1:]) elif message.reply_to_message and len(cmd) == 1: ggl_text = message.reply_to_message.text elif not message.reply_to_message and len(cmd) == 1: message.edit("I need something to google") sleep(2) message.delete() return try: ggl_result = BOT.get_inline_bot_results("stickerizerbot", "#12" + ggl_text) BOT.send_inline_bot_result(chat_id=message.chat.id, query_id=ggl_result.query_id, result_id=ggl_result.results[0].id, reply_to_message_id=ReplyCheck(message), hide_via=False) except TimeoutError: message.edit("@StickerizerBot didn't respond in time.") sleep(2) message.delete()
def neardc(bot: BOT, message: Message): dc = BOT.send( functions.help.GetNearestDc()) message.edit( NearestDC.format( dc.country, dc.nearest_dc, dc.this_dc))
def format_blank(bot: BOT, message: Message): if message.reply_to_message: GiveReplyObj(message).edit( "" ) message.delete() else: message.edit( "" )
def format_blank(bot: BOT, message: Message): try: cmdstr = " ".join(message.command[1:]) except IndexError: message.edit("__I can't...__") sleep(2) message.delete() return message.edit(' '.join(format(ord(x), 'b') for x in cmdstr))
def format_blank(bot: BOT, message: Message): try: cmdstr = " ".join(message.command[1:]) except IndexError: message.edit("__I can't...__") sleep(2) message.delete() return message.edit(hashlib.sha384(cmdstr.encode('utf-8')).hexdigest())
def evaluation(bot: BOT, message: Message): try: cmdstr = " ".join(message.command[1:]) except IndexError: message.edit("__I can't paste nothing sadly...__") sleep(2) message.delete() return if cmdstr: message.edit(post(cmdstr)) ## Making the Paste and give out the Link for the Response
def flipacoin(bot: BOT, message: Message): Nummer = randint(1, 2) if Nummer == 1: message.edit("Heads!", disable_web_page_preview=True) else: message.edit("Tails!", disable_web_page_preview=True)
def unban(bot: BOT, message: Message): if ReplyCheck(message) is True and AdminCheck(message) is True: try: BOT.unban_chat_member( chat_id=message.chat.id, user_id=message.reply_to_message.from_user.id) message.edit(UNBANNED.format(message)) LogMessage(UNBANNED_LOG.format( message, str(message.chat.id).replace("-100", ""))) except UserAdminInvalid: message.edit("I can't unban this user")
def all_welcome(bot: BOT, message: Message): db = sqlite3.connect(PYRO_DB) c = db.cursor() c.execute(ALL_WELCOME) res = c.fetchall() if res: welcome_messages = "**All Welcome Messages:**\n" for welcome in res: welcome_messages += f"\n👉 **{welcome[0]}**\n{unescape(welcome[1])}\n" BOT.send_message('me', welcome_messages, disable_web_page_preview=True) message.edit("Welcome messages sent in Saved Messages.") sleep(2) message.delete()
def list_vids(bot: BOT, message: Message): db = sqlite3.connect(PYRO_DB) c = db.cursor() c.execute(LIST_NOTES) result = c.fetchall() res = [i[0] for i in result] notes = "**List of available Videnotes:**\n`.note [name]`\n" for note in sorted(res): notes += f"→ `{note}`\n" BOT.send_message("me", notes) message.edit("List of available Videonotes sent in Saved Mesages") sleep(2) message.delete()
def set_afk(bot: BOT, message: Message): afk_text = message.text.markdown[5:] checker = 1 db = sqlite3.connect(PYRO_DB) c = db.cursor() c.execute(REMOVE_AFKTEXT.format(message.chat.id)) db.commit() db = sqlite3.connect(PYRO_DB) c = db.cursor() c.execute(SET_AFKTEXT.format(escape(afk_text), checker)) message.edit(f"AFK message set:\n{afk_text[1:]}", disable_web_page_preview=True) db.commit()
def DFromUToTelegramProgress( current: int, total: int, msg: pyrogram.Message, text: str, start: float ) -> None: """ Use this method to update the progress of a download from/an upload to Telegram, this method is called every 512KB. Update message every ~4 seconds. client (:class:`Client <pyrogram.Client>`): The Client itself. current (``int``): Currently downloaded/uploaded bytes. total (``int``): File size in bytes. msg (:class:`Message <pyrogram.Message>`): The Message to update while downloading/uploading the file. text (``str``): Text to put into the update. start (``str``): Time when the operation started. Returns ``None``. """ # 1048576 is 1 MB in bytes now = time.time() diff = now - start if round(diff % 4.00) == 0 or current == total: percentage = current * 100 / total speed = current / diff elapsed_time = round(diff) * 1000 time_to_completion = round((total - current) / speed) * 1000 estimated_total_time = elapsed_time + time_to_completion elapsed_time = TimeFormatter(milliseconds=elapsed_time) estimated_total_time = TimeFormatter(milliseconds=estimated_total_time) # 0% = [░░░░░░░░░░░░░░░░░░░░] # 100% = [████████████████████] progress = "[{0}{1}] {2}%\n".format( "".join("█" for i in range(math.floor(percentage / 5))), "".join("░" for i in range(20 - math.floor(percentage / 5))), round(percentage, 2), ) tmp = progress + "{0}/{1}\n{2}/s {3}/{4}\n".format( SizeFormatter(b=current * 8, human_readable=True), SizeFormatter(b=total * 8, human_readable=True), SizeFormatter(b=speed * 8, human_readable=True), elapsed_time if elapsed_time != "" else "0 s", estimated_total_time if estimated_total_time != "" else "0 s", ) msg.edit(text=text + tmp)
def who_is(bot: BOT, message: Message): cmd = message.command if not message.reply_to_message and len(cmd) == 1: get_user = message.from_user.id elif message.reply_to_message and len(cmd) == 1: get_user = message.reply_to_message.from_user.id elif len(cmd) > 1: get_user = cmd[1] try: get_user = int(cmd[1]) except ValueError: pass try: user = BOT.get_users(get_user) except PeerIdInvalid: message.edit("I don't know that User.") sleep(2) message.delete() return desc = BOT.get_chat(get_user).description user_pic = BOT.get_user_profile_photos(user.id) common = GetCommon(user.id) if not user.photo: message.edit(WHOIS.format( full_name=FullName(user), user_id=user.id, first_name=user.first_name, last_name=user.last_name if user.last_name else "", username=user.username if user.username else "", last_online=LastOnline(user), common_groups=len(common.chats), bio=desc if desc else "`No bio set up.`"), disable_web_page_preview=True) elif user.photo: BOT.send_photo(message.chat.id, user_pic.photos[0].sizes[-1].file_id, WHOIS_PIC.format( full_name=FullName(user), user_id=user.id, first_name=user.first_name, last_name=user.last_name if user.last_name else "", username=user.username if user.username else "", last_online=LastOnline(user), profile_pics=user_pic.total_count, common_groups=len(common.chats), bio=desc if desc else "`No bio set up.`", profile_pic_update=ProfilePicUpdate(user_pic)), reply_to_message_id=ReplyCheck(message)) message.delete()
def get_welcome(bot: BOT, message: Message): if PrivateCheck(message): db = sqlite3.connect(PYRO_DB) c = db.cursor() c.execute(GET_WELCOME.format(message.chat.id)) res = c.fetchone() if res: message.edit("__This chats welcome message:__\n\n" + unescape(res[0]), disable_web_page_preview=True) else: message.edit("__There is no welcome message for this chat.__") sleep(3) message.delete()
def save_note(bot: BOT, message: Message): cmd = message.command try: cmd[1] except IndexError: message.edit("I need a name to save to...") sleep(2) message.delete() return note = BOT.send_video_note( chat_id='me', video_note=message.reply_to_message.download('./note.mp4')) note.delete() os.remove('./note.mp4') db = sqlite3.connect(PYRO_DB) c = db.cursor() try: c.execute(SAVE_NOTE.format(cmd[1], note.video_note.file_id)) except sqlite3.IntegrityError: message.edit(f'Videonote "`{cmd[1]}`" already saved.') return except AttributeError: message.edit( f"The video needs an aspect:ratio of 1:1, otherwise it can't be a videonote." ) sleep(3) message.delete() return db.commit() db.close() message.edit(f'Videnote saved as `{cmd[1]}`.') sleep(2) message.delete()
def get_admins(bot: BOT, message: Message): if message.chat.type == 'private': message.edit("There are no admins in private chats...") sleep(2) message.delete() else: all_admins = BOT.iter_chat_members(chat_id=message.chat.id, filter='administrators') creator = None admins = [] for admin in all_admins: if admin.status == 'creator': creator = admin elif admin.status == 'administrator': admins.append(admin) sorted_admins = sorted(admins, key=lambda usid: usid.user.id) AdminList = ADMINTITLE.format(message.chat.title) if creator: AdminList += ADMINCREATOR.format( str(creator.user.id).rjust(10), creator.user.first_name, creator.user.id) AdminList += "╔ **Admins**\n" for admin in sorted_admins: if admin is sorted_admins[-1]: if admin.user.is_bot: AdminList += ADMINLISTLASTBOT.format( str(admin.user.id).rjust(10), admin.user.first_name, admin.user.id) else: AdminList += ADMINLISTLAST.format( str(admin.user.id).rjust(10), admin.user.first_name, admin.user.id) else: if admin.user.is_bot: AdminList += ADMINLISTBOT.format( str(admin.user.id).rjust(10), admin.user.first_name, admin.user.id) else: AdminList += ADMINLIST.format( str(admin.user.id).rjust(10), admin.user.first_name, admin.user.id) message.edit(AdminList) LogMessage(AdminList)
def remove_welcome(bot: BOT, message: Message): if PrivateCheck(message): db = sqlite3.connect(PYRO_DB) c = db.cursor() c.execute(GET_WELCOME.format(message.chat.id)) res = c.fetchone() if res: c.exeute(REMOVE_WELCOME.format(message.chat.id)) db.commit() message.edit("__Removed welcome message:__\n\n" + unescape(res[0]), disable_web_page_preview=True) else: message.edit("There was no welcome message.") sleep(3) message.delete()
def kick_user(bot: BOT, message: Message): if ReplyCheck(message) is True and AdminCheck(message) is True: try: BOT.kick_chat_member( chat_id=message.chat.id, user_id=message.reply_to_message.from_user.id, until_date=0) BOT.unban_chat_member( chat_id=message.chat.id, user_id=message.reply_to_message.from_user.id) message.edit(KICKED.format(message)) LogMessage(KICKED_LOG.format( message, str(message.chat.id).replace("-100", ""))) except UserAdminInvalid: RestrictFailed(message)
def cc_gif(bot: BOT, message: Message): try: # delete if file still exists os.remove("animation.mp4") os.remove("animation.1.mp4") except FileNotFoundError: pass try: conv_url = message.command[1] except IndexError: message.edit("No URL to convert") return conv_ext = re.findall(r"\w+$", conv_url) try: message.edit("`Converting . . .`") process = ccapi.convert({ 'inputformat': conv_ext[0], 'outputformat': 'mp4', 'input': 'download', 'file': conv_url, 'filename': f'animation.{conv_ext[0]}', 'converteroptions': { 'command': CC_Convert } }) process.wait() message.edit("`Downloading . . .`") process.download() except cloudconvert.exceptions.APIError as e: message.edit(f"Error: {e}\n{conv_url}", disable_web_page_preview=True) return message.edit("`Uploading . . .`") try: BOT.send_animation(chat_id=message.chat.id, animation="animation.mp4") except errors.FileIdInvalid: BOT.send_animation(chat_id=message.chat.id, animation="animation.1.mp4") message.delete() try: os.remove("animation.mp4") os.remove("animation.1.mp4") except FileNotFoundError: pass
def evaluation(bot: BOT, message: Message): try: cmdstr = " ".join(message.command[1:]) except IndexError: message.edit("__I can't evaluate nothing...__") sleep(2) message.delete() return if cmdstr: expr = message.reply(RUNNING.format(cmdstr)) try: result = eval(cmdstr) except Exception as err: expr.edit(ERROR.format(cmdstr, err)) LogMessage( ERROR_LOG.format(cmdstr, message.chat.title or message.chat.first_name, str(message.chat.id).replace("-100", ""), str(expr.message_id), err)) else: if result is None: expr.edit(SUCCESS.format(cmdstr)) LogMessage( SUCCESS_LOG.format( cmdstr, message.chat.title or message.chat.first_name, str(message.chat.id).replace("-100", ""), str(expr.message_id))) elif len(RESULT.format(cmdstr, result)) > 4096: expr.edit(RESULT_FILE.format(cmdstr)) BOT.send_chat_action(message.chat.id, "upload_document") SendLong(expr, cmdstr, result) else: expr.edit(RESULT.format(cmdstr, result)) LogMessage( RESULT_LOG.format( cmdstr, message.chat.title or message.chat.first_name, str(message.chat.id).replace("-100", ""), str(expr.message_id)))
def ban_hammer(bot: BOT, message: Message): if ReplyCheck(message) is True and AdminCheck(message) is True: try: BOT.kick_chat_member( chat_id=message.chat.id, user_id=message.reply_to_message.from_user.id, until_date=Timer(message)) if len(message.command) > 1: message.edit(BANNED_TIME.format( message, TimerString(message))) else: message.edit(BANNED.format(message)) LogMessage(BANNED_LOG.format( message, str(message.chat.id).replace("-100", ""))) except UserAdminInvalid: RestrictFailed(message)
def pay_respect(bot: BOT, message: Message): try: cmdstr = " ".join(message.command[1:]) except IndexError: message.edit("__I can't replace nothing...__") sleep(2) message.delete() return replacelist = cmdstr.split(";") reply = GiveReplyObj(message) if message == reply: replacelist = cmdstr.split(";") replytext = rot(replacelist[0])(replacelist[1]) reply.edit(replytext) else: replytext = rot(int(cmdstr))(reply.text) reply.edit(replytext) message.delete()
def pay_respect(bot: BOT, message: Message): try: cmdstr = " ".join(message.command[1:]) except IndexError: message.edit("__I can't replace nothing...__") sleep(2) message.delete() return replacelist = cmdstr.split(";") reply = GiveReplyObj(message) try: reply.edit(reply.text.replace(replacelist[0], replacelist[1])) except IndexError: message.edit("__I can't replace nothing...__") sleep(2) message.delete() return message.delete()
def randomnumber(bot: BOT, message: Message): try: cmdstr = " ".join(message.command[1:]) except IndexError: message.edit("__I can't randomize nothing sadly...__") sleep(2) message.delete() return number = [int(s) for s in re.findall(r'\b\d+\b', cmdstr)] message.edit(ranint(number[0], number[1]), disable_web_page_preview=True)