def security(bot: Bot, update: Update, args: List[str]) -> str: chat = update.effective_chat # type: Optional[Chat] getcur, cur_value, cust_text = sql.welcome_security(chat.id) if len(args) >= 1: var = args[0].lower() if (var == "yes" or var == "y" or var == "on"): check = bot.getChatMember(chat.id, bot.id) if check.status == 'member' or check[ 'can_restrict_members'] == False: text = tld(chat.id, 'welcome_mute_bot_cant_mute') update.effective_message.reply_text(text, parse_mode="markdown") return "" sql.set_welcome_security(chat.id, True, str(cur_value), cust_text) update.effective_message.reply_text( tld(chat.id, 'welcome_mute_enabled')) elif (var == "no" or var == "n" or var == "off"): sql.set_welcome_security(chat.id, False, str(cur_value), cust_text) update.effective_message.reply_text( tld(chat.id, 'welcome_mute_disabled')) else: update.effective_message.reply_text(tld(chat.id, 'common_invalid_arg'), parse_mode=ParseMode.MARKDOWN) else: getcur, cur_value, cust_text = sql.welcome_security(chat.id) if getcur: getcur = "True" else: getcur = "False" if cur_value[:1] == "0": cur_value = "None" text = tld(chat.id, 'welcome_mute_curr_settings').format( getcur, cur_value, cust_text) update.effective_message.reply_text(text, parse_mode="markdown")
def security(bot: Bot, update: Update, args: List[str]) -> str: chat = update.effective_chat # type: Optional[Chat] getcur, cur_value, cust_text = sql.welcome_security(chat.id) if len(args) >= 1: var = args[0].lower() if (var == "yes" or var == "y" or var == "on"): check = bot.getChatMember(chat.id, bot.id) if check.status == 'member' or check[ 'can_restrict_members'] == False: text = "Bruh I'm not an admin" update.effective_message.reply_text(text, parse_mode="markdown") return "" sql.set_welcome_security(chat.id, True, str(cur_value), cust_text) update.effective_message.reply_text( "You'll see no bot here other than me") elif (var == "no" or var == "n" or var == "off"): sql.set_welcome_security(chat.id, False, str(cur_value), cust_text) update.effective_message.reply_text("Beep beep?") else: update.effective_message.reply_text( "Please type `on`/`yes` or `off`/`no`!", parse_mode=ParseMode.MARKDOWN) else: getcur, cur_value, cust_text = sql.welcome_security(chat.id) if getcur: getcur = "True" else: getcur = "False" if cur_value[:1] == "0": cur_value = "None" text = "Current setting is::\nWelcome security: `{}`\nMember will be muted for: `{}`\nCustom Text for Unmute button: `{}`".format( getcur, cur_value, cust_text) update.effective_message.reply_text(text, parse_mode="markdown")
def security(bot: Bot, update: Update, args: List[str]) -> str: chat = update.effective_chat # type: Optional[Chat] getcur, cur_value, cust_text = sql.welcome_security(chat.id) if len(args) >= 1: var = args[0].lower() if (var == "yes" or var == "y" or var == "on"): check = bot.getChatMember(chat.id, bot.id) if check.status == 'member' or check['can_restrict_members'] == False: text = "I can't limit people here! Make sure I'm an admin so I can mute someone!" update.effective_message.reply_text(text, parse_mode="markdown") return "" sql.set_welcome_security(chat.id, True, str(cur_value), cust_text) update.effective_message.reply_text("Welcomemute have been enabled! New members will be muted until they clicked the button!") elif (var == "no" or var == "n" or var == "off"): sql.set_welcome_security(chat.id, False, str(cur_value), cust_text) update.effective_message.reply_text("Welcomemute have been disabled! New members will not be muted anymore!") else: update.effective_message.reply_text("Please type `on`/`yes` or `off`/`no`!", parse_mode=ParseMode.MARKDOWN) else: getcur, cur_value, cust_text = sql.welcome_security(chat.id) if getcur: getcur = "True" else: getcur = "False" if cur_value[:1] == "0": cur_value = "None" text = "Current setting is::\nWelcome security: `{}`\nMember will be muted for: `{}`\nCustom Text for Unmute button: `{}`".format(getcur, cur_value, cust_text) update.effective_message.reply_text(text, parse_mode="markdown")
def security_mute(bot: Bot, update: Update, args: List[str]) -> str: chat = update.effective_chat # type: Optional[Chat] message = update.effective_message # type: Optional[Message] getcur, cur_value, cust_text = sql.welcome_security(chat.id) if len(args) >= 1: var = args[0] if var[:1] == "0": mutetime = "0" sql.set_welcome_security(chat.id, getcur, "0", cust_text) text = "Every new member will be mute forever until they press the welcome button!" else: mutetime = extract_time(message, var) if mutetime == "": return sql.set_welcome_security(chat.id, getcur, str(var), cust_text) text = "Every new member will be muted for {} until they press the welcome button!".format( var) update.effective_message.reply_text(text) else: if str(cur_value) == "0": update.effective_message.reply_text( "Current settings: New members will be mute forever until they press the button!" ) else: update.effective_message.reply_text( "Current settings: New members will be mute for {} until they press the button!" .format(cur_value))
def security_text_reset(bot: Bot, update: Update): chat = update.effective_chat # type: Optional[Chat] message = update.effective_message # type: Optional[Message] getcur, cur_value, cust_text = sql.welcome_security(chat.id) sql.set_welcome_security(chat.id, getcur, cur_value, "Click here to prove you're human!") update.effective_message.reply_text( " The text of security button has been reset to: `Click here to prove you're human!`", parse_mode="markdown")
def security_text_reset(bot: Bot, update: Update): chat = update.effective_chat # type: Optional[Chat] getcur, cur_value, cust_text = sql.welcome_security(chat.id) sql.set_welcome_security(chat.id, getcur, cur_value, tld(chat.id, 'welcome_mute_btn_default_text')) update.effective_message.reply_text(tld( chat.id, 'welcome_mute_btn_text_reset').format( tld(chat.id, 'welcome_mute_btn_default_text')), parse_mode="markdown")
def security_text(bot: Bot, update: Update, args: List[str]) -> str: chat = update.effective_chat # type: Optional[Chat] message = update.effective_message # type: Optional[Message] getcur, cur_value, cust_text = sql.welcome_security(chat.id) if len(args) >= 1: text = " ".join(args) sql.set_welcome_security(chat.id, getcur, cur_value, text) text = "The text of button have been changed to: `{}`".format(text) update.effective_message.reply_text(text, parse_mode="markdown") else: update.effective_message.reply_text("The current security button text is: `{}`".format(cust_text), parse_mode="markdown")
def security_text(bot: Bot, update: Update, args: List[str]) -> str: chat = update.effective_chat # type: Optional[Chat] message = update.effective_message # type: Optional[Message] getcur, cur_value, cust_text = sql.welcome_security(chat.id) if len(args) >= 1: text = " ".join(args) sql.set_welcome_security(chat.id, getcur, cur_value, text) text = tld(chat.id, 'welcome_mute_btn_text_changed').format(text) update.effective_message.reply_text(text, parse_mode="markdown") else: update.effective_message.reply_text(tld(chat.id, 'welcome_mute_btn_curr_text').format(cust_text), parse_mode="markdown")
def security(bot: Bot, update: Update, args: List[str]) -> str: chat = update.effective_chat # type: Optional[Chat] if len(args) >= 1: var = args[0] print(var) if (var == "no" or var == "off"): sql.set_welcome_security(chat.id, False) update.effective_message.reply_text("Disabled welcome security") elif(var == "soft"): sql.set_welcome_security(chat.id, "soft") update.effective_message.reply_text("I will restrict user's permission to send media for 24 hours") elif(var == "hard"): sql.set_welcome_security(chat.id, "hard") update.effective_message.reply_text("New users will be muted if they do not click on the button") else: update.effective_message.reply_text("Please enter `off`/`no`/`soft`/`hard`!", parse_mode=ParseMode.MARKDOWN) else: status = sql.welcome_security(chat.id) update.effective_message.reply_text(status)
def security_mute(bot: Bot, update: Update, args: List[str]) -> str: chat = update.effective_chat # type: Optional[Chat] message = update.effective_message # type: Optional[Message] getcur, cur_value, cust_text = sql.welcome_security(chat.id) if len(args) >= 1: var = args[0] if var[:1] == "0": mutetime = "0" sql.set_welcome_security(chat.id, getcur, "0", cust_text) text = tld(chat.id, 'welcome_mute_time_none') else: mutetime = extract_time(message, var) if mutetime == "": return sql.set_welcome_security(chat.id, getcur, str(var), cust_text) text = tld(chat.id, 'welcome_mute_time').format(var) update.effective_message.reply_text(text) else: if str(cur_value) == "0": update.effective_message.reply_text(tld(chat.id, 'welcome_mute_time_settings_none')) else: update.effective_message.reply_text(tld(chat.id, 'welcome_mute_time_settings').format(cur_value))
def new_member(bot: Bot, update: Update): chat = update.effective_chat # type: Optional[Chat] should_welc, cust_welcome, welc_type = sql.get_welc_pref(chat.id) if should_welc: sent = None new_members = update.effective_message.new_chat_members for new_mem in new_members: # Give the owner a special welcome if new_mem.id == OWNER_ID: bot.send_message(chat.id, "Ayyyy. My creator just joined the group") continue # Give the sudo a sweet welcome if new_mem.id == 594813047: bot.send_message(chat.id, "Yo,my phirend AVATAR just joined this group😎) continue # Give start information when add bot to group elif new_mem.id == bot.id: bot.send_message( MESSAGE_DUMP, "I have been added to {} with ID: <pre>{}</pre>".format(chat.title, chat.id), parse_mode=ParseMode.HTML ) bot.send_message(chat.id, "Thanks for adding me into your group!") else: # If welcome message is media, send with appropriate function if welc_type != sql.Types.TEXT and welc_type != sql.Types.BUTTON_TEXT: ENUM_FUNC_MAP[welc_type](chat.id, cust_welcome) return # else, move on first_name = new_mem.first_name or "PersonWithNoName" # edge case of empty name - occurs for some bugs. if cust_welcome: if new_mem.last_name: fullname = "{} {}".format(first_name, new_mem.last_name) else: fullname = first_name count = chat.get_members_count() mention = mention_markdown(new_mem.id, escape_markdown(first_name)) if new_mem.username: username = "******" + escape_markdown(new_mem.username) else: username = mention valid_format = escape_invalid_curly_brackets(cust_welcome, VALID_WELCOME_FORMATTERS) res = valid_format.format(first=escape_markdown(first_name), last=escape_markdown(new_mem.last_name or first_name), fullname=escape_markdown(fullname), username=username, mention=mention, count=count, chatname=escape_markdown(chat.title), id=new_mem.id) buttons = sql.get_welc_buttons(chat.id) keyb = build_keyboard(buttons) else: res = sql.DEFAULT_WELCOME.format(first=first_name) keyb = [] keyboard = InlineKeyboardMarkup(keyb) sent = send(update, res, keyboard, sql.DEFAULT_WELCOME.format(first=first_name)) # type: Optional[Message] #Federations Ban if welcome_fed(bot, update) == True: continue #Clean service welcome if sql.clean_service(chat.id) == True: bot.delete_message(chat.id, update.message.message_id) #If user ban protected don't apply security on him if is_user_ban_protected(chat, new_mem.id, chat.get_member(new_mem.id)): continue #Security soft mode if sql.welcome_security(chat.id) == "soft": bot.restrict_chat_member(chat.id, new_mem.id, can_send_messages=True, can_send_media_messages=False, can_send_other_messages=False, can_add_web_page_previews=False, until_date=(int(time.time() + 24 * 60 * 60))) #Add "I'm not bot button if enabled hard security" if sql.welcome_security(chat.id) == "hard": update.effective_message.reply_text("Hi {}, click on button below to prove you not a bot.".format(new_mem.first_name), reply_markup=InlineKeyboardMarkup([[InlineKeyboardButton(text="✅ Click here to talk ✅ ", callback_data="check_bot_({})".format(new_mem.id)) ]])) #Mute user bot.restrict_chat_member(chat.id, new_mem.id, can_send_messages=False, can_send_media_messages=False, can_send_other_messages=False, can_add_web_page_previews=False) prev_welc = sql.get_clean_pref(chat.id) if prev_welc: try: bot.delete_message(chat.id, prev_welc) except BadRequest as excp: pass if sent: sql.set_clean_welcome(chat.id, sent.message_id)
def welcome(bot: Bot, update: Update, args: List[str]): chat = update.effective_chat # type: Optional[Chat] # if no args, show current replies. if len(args) == 0 or args[0].lower() == "noformat": noformat = args and args[0].lower() == "noformat" pref, welcome_m, cust_content, welcome_type = sql.get_welc_pref( chat.id) prev_welc = sql.get_clean_pref(chat.id) if prev_welc: prev_welc = True else: prev_welc = False cleanserv = sql.clean_service(chat.id) getcur, cur_value, cust_text = sql.welcome_security(chat.id) if getcur: welcsec = "True " else: welcsec = "False " if cur_value[:1] == "0": welcsec += "(Muted forever until user clicked the button)" else: welcsec += "(Muting user for {})".format(cur_value) text = "This chat has it's welcome setting set to: `{}`\n".format(pref) text += "Deleting old welcome message: `{}`\n".format(prev_welc) text += "Deleting service message: `{}`\n".format(cleanserv) text += "Muting users when they joined: `{}`\n".format(welcsec) text += "Mute button text: `{}`\n".format(cust_text) text += "\n*The welcome message (not filling the {}) is:*" update.effective_message.reply_text(text, parse_mode=ParseMode.MARKDOWN) if welcome_type == sql.Types.BUTTON_TEXT or welcome_type == sql.Types.TEXT: buttons = sql.get_welc_buttons(chat.id) if noformat: welcome_m += revert_buttons(buttons) update.effective_message.reply_text(welcome_m) else: keyb = build_keyboard(buttons) keyboard = InlineKeyboardMarkup(keyb) send(update, welcome_m, keyboard, sql.DEFAULT_WELCOME) else: buttons = sql.get_welc_buttons(chat.id) if noformat: welcome_m += revert_buttons(buttons) ENUM_FUNC_MAP[welcome_type](chat.id, cust_content, caption=welcome_m) else: keyb = build_keyboard(buttons) keyboard = InlineKeyboardMarkup(keyb) ENUM_FUNC_MAP[welcome_type](chat.id, cust_content, caption=welcome_m, reply_markup=keyboard, parse_mode=ParseMode.MARKDOWN, disable_web_page_preview=True) elif len(args) >= 1: if args[0].lower() in ("on", "yes"): sql.set_welc_preference(str(chat.id), True) update.effective_message.reply_text( "New member will be greeted with warm welcome message now!") elif args[0].lower() in ("off", "no"): sql.set_welc_preference(str(chat.id), False) update.effective_message.reply_text( "I'm sulking, Not saying hello anymore :V") else: # idek what you're writing, say yes or no update.effective_message.reply_text( "Please choose 'on/yes' or 'off/no' only!")
def new_member(bot: Bot, update: Update): chat = update.effective_chat # type: Optional[Chat] should_welc, cust_welcome, cust_content, welc_type = sql.get_welc_pref( chat.id) cust_welcome = markdown_to_html(cust_welcome) if should_welc: sent = None new_members = update.effective_message.new_chat_members for new_mem in new_members: # Give start information when add bot to group if is_user_gbanned(new_mem.id): return if new_mem.id == bot.id: bot.send_message( MESSAGE_DUMP, "I have been added to {} with ID: <pre>{}</pre>".format( chat.title, chat.id), parse_mode=ParseMode.HTML) bot.send_message(chat.id, "Nope") else: # If welcome message is media, send with appropriate function if welc_type != sql.Types.TEXT and welc_type != sql.Types.BUTTON_TEXT: reply = update.message.message_id cleanserv = sql.clean_service(chat.id) # Clean service welcome if cleanserv: try: dispatcher.bot.delete_message( chat.id, update.message.message_id) except BadRequest: pass reply = False # Formatting text first_name = new_mem.first_name or "PersonWithNoName" # edge case of empty name - occurs for some bugs. if new_mem.last_name: fullname = "{} {}".format(first_name, new_mem.last_name) else: fullname = first_name count = chat.get_members_count() mention = mention_html(new_mem.id, first_name) if new_mem.username: username = "******" + escape(new_mem.username) else: username = mention formatted_text = cust_welcome.format( first=escape(first_name), last=escape(new_mem.last_name or first_name), fullname=escape(fullname), username=username, mention=mention, count=count, chatname=escape(chat.title), id=new_mem.id) # Build keyboard buttons = sql.get_welc_buttons(chat.id) keyb = build_keyboard(buttons) getsec, mutetime, custom_text = sql.welcome_security( chat.id) member = chat.get_member(new_mem.id) # If user ban protected don't apply security on him if is_user_ban_protected(chat, new_mem.id, chat.get_member(new_mem.id)): pass elif getsec: # If mute time is turned on if mutetime: if mutetime[:1] == "0": if member.can_send_messages is None or member.can_send_messages: try: bot.restrict_chat_member( chat.id, new_mem.id, can_send_messages=False) canrest = True except BadRequest: canrest = False else: canrest = False else: mutetime = extract_time( update.effective_message, mutetime) if member.can_send_messages is None or member.can_send_messages: try: bot.restrict_chat_member( chat.id, new_mem.id, until_date=mutetime, can_send_messages=False) canrest = True except BadRequest: canrest = False else: canrest = False # If security welcome is turned on if canrest: sql.add_to_userlist(chat.id, new_mem.id) keyb.append([ InlineKeyboardButton( text=str(custom_text), callback_data="check_bot_({})".format( new_mem.id)) ]) keyboard = InlineKeyboardMarkup(keyb) # Send message ENUM_FUNC_MAP[welc_type](chat.id, cust_content, caption=formatted_text, reply_markup=keyboard, parse_mode="markdown", reply_to_message_id=reply) return # else, move on first_name = new_mem.first_name or "PersonWithNoName" # edge case of empty name - occurs for some bugs. if cust_welcome: if new_mem.last_name: fullname = "{} {}".format(first_name, new_mem.last_name) else: fullname = first_name count = chat.get_members_count() mention = mention_html(new_mem.id, first_name) if new_mem.username: username = "******" + escape(new_mem.username) else: username = mention valid_format = escape_invalid_curly_brackets( cust_welcome, VALID_WELCOME_FORMATTERS) res = valid_format.format(first=escape(first_name), last=escape(new_mem.last_name or first_name), fullname=escape(fullname), username=username, mention=mention, count=count, chatname=escape(chat.title), id=new_mem.id) buttons = sql.get_welc_buttons(chat.id) keyb = build_keyboard(buttons) else: res = sql.DEFAULT_WELCOME.format(first=first_name) keyb = [] getsec, mutetime, custom_text = sql.welcome_security(chat.id) member = chat.get_member(new_mem.id) # If user ban protected don't apply security on him if is_user_ban_protected(chat, new_mem.id, chat.get_member(new_mem.id)): pass elif getsec: if mutetime: if mutetime[:1] == "0": if member.can_send_messages is None or member.can_send_messages: try: bot.restrict_chat_member( chat.id, new_mem.id, can_send_messages=False) canrest = True except BadRequest: canrest = False else: canrest = False else: mutetime = extract_time(update.effective_message, mutetime) if member.can_send_messages is None or member.can_send_messages: try: bot.restrict_chat_member( chat.id, new_mem.id, until_date=mutetime, can_send_messages=False) canrest = True except BadRequest: canrest = False else: canrest = False if canrest: sql.add_to_userlist(chat.id, new_mem.id) keyb.append([ InlineKeyboardButton( text=str(custom_text), callback_data="check_bot_({})".format( new_mem.id)) ]) keyboard = InlineKeyboardMarkup(keyb) sent = send(update, res, keyboard, sql.DEFAULT_WELCOME.format( first=first_name)) # type: Optional[Message] prev_welc = sql.get_clean_pref(chat.id) if prev_welc: try: bot.delete_message(chat.id, prev_welc) except BadRequest as excp: pass if sent: sql.set_clean_welcome(chat.id, sent.message_id)
def welcome(bot: Bot, update: Update, args: List[str]): chat = update.effective_chat # type: Optional[Chat] # if no args, show current replies. if len(args) == 0 or args[0].lower() == "noformat": noformat = args and args[0].lower() == "noformat" pref, welcome_m, cust_content, welcome_type = sql.get_welc_pref( chat.id) prev_welc = sql.get_clean_pref(chat.id) if prev_welc: prev_welc = True else: prev_welc = False cleanserv = sql.clean_service(chat.id) getcur, cur_value, cust_text = sql.welcome_security(chat.id) if getcur: welcsec = "True " else: welcsec = "False " if cur_value[:1] == "0": welcsec += tld(chat.id, 'welcome_mute_time_short_none') else: welcsec += tld(chat.id, 'welcome_mute_time_short').format(cur_value) text = tld(chat.id, 'welcome_settings').format(pref, prev_welc, cleanserv, welcsec, cust_text) update.effective_message.reply_text(text, parse_mode=ParseMode.MARKDOWN) if welcome_type == sql.Types.BUTTON_TEXT or welcome_type == sql.Types.TEXT: buttons = sql.get_welc_buttons(chat.id) if noformat: welcome_m += revert_buttons(buttons) update.effective_message.reply_text(welcome_m) else: keyb = build_keyboard(buttons) keyboard = InlineKeyboardMarkup(keyb) send(update, welcome_m, keyboard, sql.DEFAULT_WELCOME) else: buttons = sql.get_welc_buttons(chat.id) if noformat: welcome_m += revert_buttons(buttons) ENUM_FUNC_MAP[welcome_type](chat.id, cust_content, caption=welcome_m) else: keyb = build_keyboard(buttons) keyboard = InlineKeyboardMarkup(keyb) ENUM_FUNC_MAP[welcome_type](chat.id, cust_content, caption=welcome_m, reply_markup=keyboard, parse_mode=ParseMode.HTML, disable_web_page_preview=True) elif len(args) >= 1: if args[0].lower() in ("on", "yes"): sql.set_welc_preference(str(chat.id), True) update.effective_message.reply_text( tld(chat.id, 'welcome_greet_set_on')) elif args[0].lower() in ("off", "no"): sql.set_welc_preference(str(chat.id), False) update.effective_message.reply_text( tld(chat.id, 'welcome_greet_set_off')) else: # idek what you're writing, say yes or no update.effective_message.reply_text( tld(chat.id, 'common_invalid_arg'))