def addSudo(update, context): reply_message = None message_ = None reply_message = update.message.reply_to_message message_ = update.message.text.split(' ') if len(message_) == 2: user_id = int(message_[1]) if user_id in SUDO_USERS: msg = 'Already Sudo' elif DB_URI is not None: msg = DbManger().db_addsudo(user_id) else: with open('sudo_users.txt', 'a') as file: file.write(f'{user_id}\n') SUDO_USERS.add(user_id) msg = 'Promoted as Sudo' elif reply_message is None: msg = "Give ID or Reply To message of whom you want to Promote" else: # Trying to authorize someone by replying user_id = reply_message.from_user.id if user_id in SUDO_USERS: msg = 'Already Sudo' elif DB_URI is not None: msg = DbManger().db_addsudo(user_id) else: with open('sudo_users.txt', 'a') as file: file.write(f'{user_id}\n') SUDO_USERS.add(user_id) msg = 'Promoted as Sudo' sendMessage(msg, context.bot, update)
def authorize(update, context): reply_message = None message_ = None reply_message = update.message.reply_to_message message_ = update.message.text.split(' ') if len(message_) == 2: chat_id = int(message_[1]) if chat_id not in AUTHORIZED_CHATS: msg = DbManger().db_auth(chat_id) else: msg = '<b>Usᴇʀ Aʟʀᴇᴀᴅʏ Aᴜᴛʜᴏʀɪᴢᴇᴅ!</b>' else: if reply_message is None: # Trying to authorize a chat chat_id = update.effective_chat.id if chat_id not in AUTHORIZED_CHATS: msg = DbManger().db_auth(chat_id) else: msg = '<b>Aʟʀᴇᴀᴅʏ Aᴜᴛʜᴏʀɪᴢᴇᴅ Cʜᴀᴛ!</b>' else: # Trying to authorize someone in specific user_id = reply_message.from_user.id if user_id not in AUTHORIZED_CHATS: msg = DbManger().db_auth(user_id) else: msg = '<b>Usᴇʀ Aʟʀᴇᴀᴅʏ Aᴜᴛʜᴏʀɪᴢᴇᴅ!</b>' sendMessage(msg, context.bot, update)
def authorize(update, context): reply_message = None message_ = None reply_message = update.message.reply_to_message message_ = update.message.text.split(' ') if len(message_) == 2: chat_id = int(message_[1]) if chat_id not in AUTHORIZED_CHATS: msg = DbManger().db_auth(chat_id) else: msg = '𝚄𝚜𝚎𝚛 𝚊𝚕𝚛𝚎𝚊𝚍𝚢 𝚊𝚞𝚝𝚑𝚘𝚛𝚒𝚣𝚎𝚍' else: if reply_message is None: # Trying to authorize a chat chat_id = update.effective_chat.id if chat_id not in AUTHORIZED_CHATS: msg = DbManger().db_auth(chat_id) else: msg = '𝙰𝚕𝚛𝚎𝚊𝚍𝚢 𝚊𝚞𝚝𝚑𝚘𝚛𝚒𝚣𝚎𝚍 𝚌𝚑𝚊𝚝' else: # Trying to authorize someone in specific user_id = reply_message.from_user.id if user_id not in AUTHORIZED_CHATS: msg = DbManger().db_auth(user_id) else: msg = 'User already authorized' sendMessage(msg, context.bot, update)
def unauthorize(update, context): reply_message = None message_ = None reply_message = update.message.reply_to_message message_ = update.message.text.split(' ') if len(message_) == 2: chat_id = int(message_[1]) if chat_id in AUTHORIZED_CHATS: msg = DbManger().db_unauth(chat_id) else: msg = 'User already unauthorized' else: if reply_message is None: # Trying to unauthorize a chat chat_id = update.effective_chat.id if chat_id in AUTHORIZED_CHATS: msg = DbManger().db_unauth(chat_id) else: msg = 'Already unauthorized chat' else: # Trying to authorize someone in specific user_id = reply_message.from_user.id if user_id in AUTHORIZED_CHATS: msg = DbManger().db_unauth(user_id) else: msg = 'User already unauthorized' sendMessage(msg, context.bot, update)
def removeSudo(update, context): reply_message = None message_ = None reply_message = update.message.reply_to_message message_ = update.message.text.split(' ') if len(message_) == 2: user_id = int(message_[1]) if user_id in SUDO_USERS: if DB_URI is not None: msg = DbManger().db_rmsudo(user_id) else: SUDO_USERS.remove(user_id) msg = 'Demoted' else: msg = 'Not a Sudo' elif reply_message is None: msg = "Give ID or Reply To message of whom you want to remove from Sudo" else: user_id = reply_message.from_user.id if user_id in SUDO_USERS: if DB_URI is not None: msg = DbManger().db_rmsudo(user_id) else: SUDO_USERS.remove(user_id) msg = 'Demoted' else: msg = 'Not a Sudo' if DB_URI is None: with open('sudo_users.txt', 'a') as file: file.truncate(0) for i in SUDO_USERS: file.write(f'{i}\n') sendMessage(msg, context.bot, update)
def removeSudo(update, context): reply_message = None message_ = None reply_message = update.message.reply_to_message message_ = update.message.text.split(' ') if len(message_) == 2: chat_id = int(message_[1]) msg = DbManger().db_rmsudo( chat_id) if chat_id in SUDO_USERS else 'Not a Sudo' elif reply_message is None: msg = "Give ID or Reply To message of whom you want to remove from Sudo" else: user_id = reply_message.from_user.id msg = DbManger().db_rmsudo( user_id) if user_id in SUDO_USERS else 'Not a Sudo' sendMessage(msg, context.bot, update)
def authorize(update, context): reply_message = None message_ = None reply_message = update.message.reply_to_message message_ = update.message.text.split(' ') if len(message_) == 2: user_id = int(message_[1]) if user_id not in AUTHORIZED_CHATS: if DB_URI is not None: msg = DbManger().db_auth(user_id) else: with open('authorized_chats.txt', 'a') as file: file.write(f'{user_id}\n') AUTHORIZED_CHATS.add(user_id) msg = '✅ User Authorized' else: msg = '✅ User Already Authorized' else: if reply_message is None: # Trying to authorize a chat chat_id = update.effective_chat.id if chat_id not in AUTHORIZED_CHATS: if DB_URI is not None: msg = DbManger().db_auth(chat_id) else: with open('authorized_chats.txt', 'a') as file: file.write(f'{chat_id}\n') AUTHORIZED_CHATS.add(chat_id) msg = '✅ Chat Authorized' else: msg = '✅ Chat Already Authorized' else: # Trying to authorize someone by replying user_id = reply_message.from_user.id if user_id not in AUTHORIZED_CHATS: if DB_URI is not None: msg = DbManger().db_auth(user_id) else: with open('authorized_chats.txt', 'a') as file: file.write(f'{user_id}\n') AUTHORIZED_CHATS.add(user_id) msg = '✅ User Authorized' else: msg = '✅ User Already Authorized' sendMessage(msg, context.bot, update)
def rss_monitor(context): with rss_dict_lock: if len(rss_dict) == 0: rss_job.enabled = False return rss_saver = rss_dict for name, data in rss_saver.items(): try: rss_d = feedparse(data[0]) last_link = rss_d.entries[0]['link'] last_title = rss_d.entries[0]['title'] if data[1] == last_link or data[2] == last_title: continue feed_count = 0 while True: try: if data[1] == rss_d.entries[feed_count]['link'] or data[ 2] == rss_d.entries[feed_count]['title']: break except IndexError: LOGGER.info( f"Reached Max index no. {feed_count} for this feed: {name}. \ Maybe you need to add less RSS_DELAY to not miss some torrents" ) break parse = True for list in data[3]: if not any(x in str(rss_d.entries[feed_count] ['title']).lower() for x in list): parse = False feed_count += 1 break if not parse: continue try: url = rss_d.entries[feed_count]['links'][1]['href'] except IndexError: url = rss_d.entries[feed_count]['link'] if RSS_COMMAND is not None: feed_msg = f"{RSS_COMMAND} {url}" else: feed_msg = f"<b>Name: </b><code>{rss_d.entries[feed_count]['title']}</code>\n\n" feed_msg += f"<b>Link: </b><code>{url}</code>" sendRss(feed_msg, context.bot) feed_count += 1 sleep(5) DbManger().rss_update(name, str(last_link), str(last_title)) with rss_dict_lock: rss_dict[name] = [ data[0], str(last_link), str(last_title), data[3] ] LOGGER.info(f"Feed Name: {name}") LOGGER.info(f"Last item: {last_link}") except Exception as e: LOGGER.error(f"{e} Feed Name: {name} - Feed Link: {data[0]}") continue
def unauthorize(update, context): reply_message = None message_ = None reply_message = update.message.reply_to_message message_ = update.message.text.split(' ') if len(message_) == 2: user_id = int(message_[1]) if user_id in AUTHORIZED_CHATS: if DB_URI is not None: msg = DbManger().db_unauth(user_id) else: AUTHORIZED_CHATS.remove(user_id) msg = '❎ User Unauthorized' else: msg = '❎ User Already Unauthorized' else: if reply_message is None: # Trying to unauthorize a chat chat_id = update.effective_chat.id if chat_id in AUTHORIZED_CHATS: if DB_URI is not None: msg = DbManger().db_unauth(chat_id) else: AUTHORIZED_CHATS.remove(chat_id) msg = '❎ Chat Unauthorized' else: msg = '❎ Chat Already Unauthorized' else: # Trying to authorize someone by replying user_id = reply_message.from_user.id if user_id in AUTHORIZED_CHATS: if DB_URI is not None: msg = DbManger().db_unauth(user_id) else: AUTHORIZED_CHATS.remove(user_id) msg = '❎ User Unauthorized' else: msg = '❎ User Already Unauthorized' with open('authorized_chats.txt', 'a') as file: file.truncate(0) for i in AUTHORIZED_CHATS: file.write(f'{i}\n') sendMessage(msg, context.bot, update)
def rss_unsuball(update, context): if len(rss_dict) > 0: DbManger().rss_delete_all() with rss_dict_lock: rss_dict.clear() rss_job.enabled = False sendMessage("All subscriptions deleted.", context.bot, update) LOGGER.info("All Rss Subscriptions has been removed") else: sendMessage("No subscriptions to remove!", context.bot, update)
def setLeechType(update, context): query = update.callback_query message = query.message user_id = query.from_user.id data = query.data data = data.split(" ") if user_id != int(data[1]): query.answer(text="Not Yours!", show_alert=True) elif data[2] == "doc": if user_id in AS_MEDIA_USERS: AS_MEDIA_USERS.remove(user_id) AS_DOC_USERS.add(user_id) if DB_URI is not None: DbManger().user_doc(user_id) query.answer(text="Your File Will Deliver As Document!", show_alert=True) editLeechType(message, query) elif data[2] == "med": if user_id in AS_DOC_USERS: AS_DOC_USERS.remove(user_id) AS_MEDIA_USERS.add(user_id) if DB_URI is not None: DbManger().user_media(user_id) query.answer(text="Your File Will Deliver As Media!", show_alert=True) editLeechType(message, query) elif data[2] == "thumb": path = f"Thumbnails/{user_id}.jpg" if ospath.lexists(path): osremove(path) if DB_URI is not None: DbManger().user_rm_thumb(user_id, path) query.answer(text="Thumbnail Removed!", show_alert=True) editLeechType(message, query) else: query.answer(text="Old Settings", show_alert=True) elif data[2] == "close": try: query.message.delete() query.message.reply_to_message.delete() except: pass
def addSudo(update, context): reply_message = None message_ = None reply_message = update.message.reply_to_message message_ = update.message.text.split(' ') if len(message_) == 2: chat_id = int(message_[1]) if chat_id not in SUDO_USERS: msg = DbManger().db_addsudo(chat_id) else: msg = 'Already Sudo' elif reply_message is None: msg = "Give ID or Reply To message of whom you want to Promote" else: # Trying to authorize someone in specific user_id = reply_message.from_user.id if user_id not in SUDO_USERS: msg = DbManger().db_addsudo(user_id) else: msg = 'Already Sudo' sendMessage(msg, context.bot, update)
def removeSudo(update, context): reply_message = None message_ = None reply_message = update.message.reply_to_message message_ = update.message.text.split(' ') if len(message_) == 2: chat_id = int(message_[1]) if chat_id in SUDO_USERS: msg = DbManger().db_rmsudo(chat_id) else: msg = 'Not a Sudo' else: if reply_message is None: msg = "𝙶𝚒𝚟𝚎 𝙸𝙳 𝚘𝚛 𝚁𝚎𝚙𝚕𝚢 𝚃𝚘 𝚖𝚎𝚜𝚜𝚊𝚐𝚎 𝚘𝚏 𝚠𝚑𝚘𝚖 𝚢𝚘𝚞 𝚠𝚊𝚗𝚝 𝚝𝚘 𝚛𝚎𝚖𝚘𝚟𝚎 𝚏𝚛𝚘𝚖 𝚂𝚞𝚍𝚘" else: user_id = reply_message.from_user.id if user_id in SUDO_USERS: msg = DbManger().db_rmsudo(user_id) else: msg = '𝙽𝚘𝚝 𝚊 𝚂𝚞𝚍𝚘' sendMessage(msg, context.bot, update)
def removeSudo(update, context): reply_message = None message_ = None reply_message = update.message.reply_to_message message_ = update.message.text.split(' ') if len(message_) == 2: chat_id = int(message_[1]) if chat_id in SUDO_USERS: msg = DbManger().db_rmsudo(chat_id) else: msg = '<b>Nᴏᴛ ᴀ Sᴜᴅᴏ!</b>' else: if reply_message is None: msg = "<b>Gɪᴠᴇ ID Oꜰ Usᴇʀ Oʀ Rᴇᴘʟʏ Tᴏ Mᴇssᴀɢᴇ Oꜰ Usᴇʀ Wʜᴏᴍ Yᴏᴜ Wᴀɴᴛ Tᴏ Rᴇᴍᴏᴠᴇ Fʀᴏᴍ Sᴜᴅᴏ</b>" else: user_id = reply_message.from_user.id if user_id in SUDO_USERS: msg = DbManger().db_rmsudo(user_id) else: msg = '<b>Nᴏᴛ ᴀ Sᴜᴅᴏ!</b>' sendMessage(msg, context.bot, update)
def addSudo(update, context): reply_message = None message_ = None reply_message = update.message.reply_to_message message_ = update.message.text.split(' ') if len(message_) == 2: chat_id = int(message_[1]) if chat_id not in SUDO_USERS: msg = DbManger().db_addsudo(chat_id) else: msg = '𝙰𝚕𝚛𝚎𝚊𝚍𝚢 𝚂𝚞𝚍𝚘' else: if reply_message is None: msg = "𝙶𝚒𝚟𝚎 𝙸𝙳 𝚘𝚛 𝚁𝚎𝚙𝚕𝚢 𝚃𝚘 𝚖𝚎𝚜𝚜𝚊𝚐𝚎 𝚘𝚏 𝚠𝚑𝚘𝚖 𝚢𝚘𝚞 𝚠𝚊𝚗𝚝 𝚝𝚘 𝙿𝚛𝚘𝚖𝚘𝚝𝚎" else: # Trying to authorize someone in specific user_id = reply_message.from_user.id if user_id not in SUDO_USERS: msg = DbManger().db_addsudo(user_id) else: msg = '𝙰𝚕𝚛𝚎𝚊𝚍𝚢 𝚂𝚞𝚍𝚘' sendMessage(msg, context.bot, update)
def addSudo(update, context): reply_message = None message_ = None reply_message = update.message.reply_to_message message_ = update.message.text.split(' ') if len(message_) == 2: chat_id = int(message_[1]) if chat_id not in SUDO_USERS: msg = DbManger().db_addsudo(chat_id) else: msg = '<b>Aʟʀᴇᴀᴅʏ Sᴜᴅᴏ!</b>' else: if reply_message is None: msg = "<b>Gɪᴠᴇ ID Oꜰ Usᴇʀ Oʀ Rᴇᴘʟʏ Tᴏ Mᴇssᴀɢᴇ Oꜰ Usᴇʀ Wʜᴏᴍ Yᴏᴜ Wᴀɴᴛ Tᴏ Pʀᴏᴍᴏᴛᴇ</b>" else: # Trying to authorize someone in specific user_id = reply_message.from_user.id if user_id not in SUDO_USERS: msg = DbManger().db_addsudo(user_id) else: msg = '<b>Aʟʀᴇᴀᴅʏ Sᴜᴅᴏ!</b>' sendMessage(msg, context.bot, update)
def rss_unsub(update, context): try: args = update.message.text.split(" ") title = str(args[1]) exists = rss_dict.get(title) if exists is None: LOGGER.error("Rss link not exists! Nothing removed!") sendMessage("Rss link not exists! Nothing removed!", context.bot, update) else: DbManger().rss_delete(title) with rss_dict_lock: del rss_dict[title] sendMessage(f"Rss link with Title: {title} removed!", context.bot, update) LOGGER.info(f"Rss link with Title: {title} removed!") except IndexError: sendMessage( f"Use this format to remove feed url:\n/{BotCommands.RssUnSubCommand} Title", context.bot, update)
def setThumb(update, context): user_id = update.message.from_user.id reply_to = update.message.reply_to_message if reply_to is not None and reply_to.photo: path = "Thumbnails/" if not ospath.isdir(path): mkdir(path) photo_msg = app.get_messages( update.message.chat.id, reply_to_message_ids=update.message.message_id) photo_dir = app.download_media(photo_msg, file_name=path) des_dir = ospath.join(path, str(user_id) + ".jpg") Image.open(photo_dir).convert("RGB").save(des_dir, "JPEG") osremove(photo_dir) if DB_URI is not None: DbManger().user_save_thumb(user_id, des_dir) msg = f"Custom thumbnail saved for <a href='tg://user?id={user_id}'>{update.message.from_user.full_name}</a>." sendMessage(msg, context.bot, update) else: sendMessage("Reply to a photo to save custom thumbnail.", context.bot, update)
def rss_sub(update, context): try: args = update.message.text.split(" ", 3) title = str(args[1]) feed_link = str(args[2]) f_lists = [] try: filters = str(args[3]).lower() if filters.startswith('f: '): filters = filters.split('f: ', 1)[1] filters_list = filters.split('|') for x in filters_list: y = x.split(' or ') f_lists.append(y) else: filters = None except: filters = None exists = rss_dict.get(title) if exists is not None: LOGGER.error( "This title already subscribed! Choose another title!") return sendMessage( "This title already subscribed! Choose another title!", context.bot, update) try: rss_d = feedparse(feed_link) sub_msg = "<b>Subscribed!</b>" sub_msg += f"\n\n<b>Title: </b><code>{title}</code>\n<b>Feed Url: </b>{feed_link}" sub_msg += f"\n\n<b>latest record for </b>{rss_d.feed.title}:" sub_msg += f"\n\n<b>Name: </b><code>{rss_d.entries[0]['title']}</code>" try: link = rss_d.entries[0]['links'][1]['href'] except IndexError: link = rss_d.entries[0]['link'] sub_msg += f"\n\n<b>Link: </b><code>{link}</code>" sub_msg += f"\n\n<b>Filters: </b><code>{filters}</code>" last_link = str(rss_d.entries[0]['link']) last_title = str(rss_d.entries[0]['title']) DbManger().rss_add(title, feed_link, last_link, last_title, filters) with rss_dict_lock: if len(rss_dict) == 0: rss_job.enabled = True rss_dict[title] = [feed_link, last_link, last_title, f_lists] sendMessage(sub_msg, context.bot, update) LOGGER.info(f"Rss Feed Added: {title} - {feed_link} - {filters}") except (IndexError, AttributeError) as e: LOGGER.error(str(e)) msg = "The link doesn't seem to be a RSS feed or it's region-blocked!" sendMessage(msg, context.bot, update) except Exception as e: LOGGER.error(str(e)) sendMessage(str(e), context.bot, update) except IndexError: msg = f"Use this format to add feed url:\n/{BotCommands.RssSubCommand} Title https://www.rss-url.com" msg += " f: 1080 or 720 or 144p|mkv or mp4|hevc (optional)\n\nThis filter will parse links that it's titles" msg += " contains `(1080 or 720 or 144p) and (mkv or mp4) and hevc` words. You can add whatever you want.\n\n" msg += "Another example: f: 1080 or 720p|.web. or .webrip.|hvec or x264 .. This will parse titles that contains" msg += " ( 1080 or 720p) and (.web. or .webrip.) and (hvec or x264). I have added space before and after 1080" msg += " to avoid wrong matching. If this `10805695` number in title it will match 1080 if added 1080 without" msg += " spaces after it." msg += "\n\nFilters Notes:\n\n1. | means and.\n\n2. Add `or` between similar keys, you can add it" msg += " between qualities or between extensions, so don't add filter like this f: 1080|mp4 or 720|web" msg += " because this will parse 1080 and (mp4 or 720) and web ... not (1080 and mp4) or (720 and web)." msg += "\n\n3. You can add `or` and `|` as much as you want." msg += "\n\n4. Take look on title if it has static special character after or before the qualities or extensions" msg += " or whatever and use them in filter to avoid wrong match" sendMessage(msg, context.bot, update)