def set_sticker(update, context): msg = update.effective_message chat = update.effective_chat user = update.effective_user if user_can_changeinfo(chat, user, context.bot.id) is False: return msg.reply_text("You're missing rights to change chat info!") if msg.reply_to_message: if not msg.reply_to_message.sticker: return msg.reply_text( "You need to reply to some sticker to set chat sticker set!" ) stkr = msg.reply_to_message.sticker.set_name try: context.bot.set_chat_sticker_set(chat.id, stkr) msg.reply_text(f"Successfully set new group stickers in {chat.title}!") except BadRequest as excp: if excp.message == "Participants_too_few": return msg.reply_text( "Sorry, due to telegram restrictions chat needs to have minimum 100 members before they can have group stickers!" ) msg.reply_text(f"Error! {excp.message}.") else: msg.reply_text("You need to reply to some sticker to set chat sticker set!")
def setchatpic(update, context): chat = update.effective_chat msg = update.effective_message user = update.effective_user if user_can_changeinfo(chat, user, context.bot.id) is False: msg.reply_text("You are missing right to change group info!") return if msg.reply_to_message: if msg.reply_to_message.photo: pic_id = msg.reply_to_message.photo[-1].file_id elif msg.reply_to_message.document: pic_id = msg.reply_to_message.document.file_id else: msg.reply_text("You can only set some photo as chat pic!") return dlmsg = msg.reply_text("Just a sec...") tpic = context.bot.get_file(pic_id) tpic.download("gpic.png") try: with open("gpic.png", "rb") as chatp: context.bot.set_chat_photo(int(chat.id), photo=chatp) msg.reply_text("Successfully set new chatpic!") except BadRequest as excp: msg.reply_text(f"Error! {excp.message}") finally: dlmsg.delete() if os.path.isfile("gpic.png"): os.remove("gpic.png") else: msg.reply_text("Reply to some photo or file to set new chat pic!")
def clear(update, context): args = context.args chat = update.effective_chat # type: Optional[Chat] user = update.effective_user # type: Optional[User] msg = update.effective_message conn = connected(context.bot, update, chat, user.id) note_name, text, data_type, content, buttons = get_note_type(msg) if user_can_changeinfo(chat, user, context.bot.id) is False: msg.reply_text("You don't have enough rights to Remove Notes !") return "" if not conn == False: chat_id = conn chat_name = dispatcher.bot.getChat(conn).title else: chat_id = update.effective_chat.id if chat.type == "private": chat_name = "local notes" else: chat_name = chat.title if len(args) >= 1: notename = args[0].lower() if sql.rm_note(chat_id, notename): update.effective_message.reply_text( "Successfully deleted '`{note_name}`' from {chat_name}!". format(note_name=note_name, chat_name=chat_name), parse_mode=ParseMode.MARKDOWN, ) else: update.effective_message.reply_text( "There is no such notes saved in {chat_name}!".format( chat_name=chat_name))
def rmchatpic(update, context): chat = update.effective_chat msg = update.effective_message user = update.effective_user if user_can_changeinfo(chat, user, context.bot.id) is False: msg.reply_text("You don't have enough rights to delete group photo") return try: context.bot.delete_chat_photo(int(chat.id)) msg.reply_text("Successfully deleted chat's profile photo!") except BadRequest as excp: msg.reply_text(f"Error! {excp.message}.") return
def stop_filter(update, context): chat = update.effective_chat user = update.effective_user args = update.effective_message.text.split msg = update.effective_message args = msg.text.split(None, 1) conn = connected(context.bot, update, chat, user.id) if not conn == False: chat_id = conn chat_name = dispatcher.bot.getChat(conn).title else: chat_id = update.effective_chat.id if chat.type == "private": chat_name = "Local filters" else: chat_name = chat.title if len(args) < 2: send_message(update.effective_message, "What should i stop?") return chat_filters = sql.get_chat_triggers(chat_id) if user_can_changeinfo(chat, user, context.bot.id) is False: msg.reply_text("You don't have enough rights to Remove Filters !") return "" if not chat_filters: send_message(update.effective_message, "No filters active here!") return for keyword in chat_filters: if keyword == args[1]: sql.remove_filter(chat_id, args[1]) send_message( update.effective_message, "Okay, I'll stop replying to that filter in *{}*.".format( chat_name), parse_mode=telegram.ParseMode.MARKDOWN, ) raise DispatcherHandlerStop send_message( update.effective_message, "That's not a filter - Click: /filters to get currently active filters.", )
def save(update, context): chat = update.effective_chat # type: Optional[Chat] user = update.effective_user # type: Optional[User] conn = connected(context.bot, update, chat, user.id) if not conn == False: chat_id = conn chat_name = dispatcher.bot.getChat(conn).title else: chat_id = update.effective_chat.id if chat.type == "private": chat_name = "local notes" else: chat_name = chat.title msg = update.effective_message note_name, text, data_type, content, buttons = get_note_type(msg) note_name = note_name.lower() if user_can_changeinfo(chat, user, context.bot.id) is False: msg.reply_text("You don't have enough rights to Add Notes !") return "" if data_type is None: msg.reply_text("Bruh! there's no note") return if len(text.strip()) == 0: text = note_name sql.add_note_to_db(chat_id, note_name, text, data_type, buttons=buttons, file=content) msg.reply_text( "Saved '`{note_name}`' in *{chat_name}*.\nGet it with `/get {note_name}`, or `#{note_name}`!" .format(note_name=note_name, chat_name=chat_name), parse_mode=ParseMode.MARKDOWN, )
def set_desc(update, context): msg = update.effective_message chat = update.effective_chat user = update.effective_user if user_can_changeinfo(chat, user, context.bot.id) is False: return msg.reply_text("You're missing rights to change chat info!") tesc = msg.text.split(None, 1) if len(tesc) >= 2: desc = tesc[1] else: return msg.reply_text("Setting empty description won't do anything!") try: if len(desc) > 255: return msg.reply_text("Description must needs to be under 255 characters!") context.bot.set_chat_description(chat.id, desc) msg.reply_text(f"Successfully updated chat description in {chat.title}!") except BadRequest as excp: msg.reply_text(f"Error! {excp.message}.")
def setchat_title(update, context): chat = update.effective_chat msg = update.effective_message user = update.effective_user args = context.args if user_can_changeinfo(chat, user, context.bot.id) is False: msg.reply_text("You don't have enough rights to change chat info!") return title = " ".join(args) if not title: msg.reply_text("Enter some text to set new title in your chat!") return try: context.bot.set_chat_title(int(chat.id), str(title)) msg.reply_text( f"Successfully set <b>{title}</b> as new chat title!", parse_mode=ParseMode.HTML, ) except BadRequest as excp: msg.reply_text(f"Error! {excp.message}.") return
def filters(update, context): chat = update.effective_chat user = update.effective_user msg = update.effective_message args = msg.text.split( None, 1) # use python's maxsplit to separate Cmd, keyword, and reply_text conn = connected(context.bot, update, chat, user.id) if not conn == False: chat_id = conn chat_name = dispatcher.bot.getChat(conn).title else: chat_id = update.effective_chat.id if chat.type == "private": chat_name = "local filters" else: chat_name = chat.title if user_can_changeinfo(chat, user, context.bot.id) is False: msg.reply_text("You don't have enough rights to Add Filters !") return "" if not msg.reply_to_message and len(args) < 2: send_message( update.effective_message, "Please provide keyboard keyword for this filter to reply with!", ) return if msg.reply_to_message: if len(args) < 2: send_message( update.effective_message, "Please provide keyword for this filter to reply with!", ) return else: keyword = args[1] else: extracted = split_quotes(args[1]) if len(extracted) < 1: return # set trigger -> lower, so as to avoid adding duplicate filters with different cases keyword = extracted[0].lower() # Add the filter # Note: perhaps handlers can be removed somehow using sql.get_chat_filters for handler in dispatcher.handlers.get(HANDLER_GROUP, []): if handler.filters == (keyword, chat_id): dispatcher.remove_handler(handler, HANDLER_GROUP) text, file_type, file_id = get_filter_type(msg) if not msg.reply_to_message and len(extracted) >= 2: offset = len(extracted[1]) - len( msg.text) # set correct offset relative to command + notename text, buttons = button_markdown_parser(extracted[1], entities=msg.parse_entities(), offset=offset) text = text.strip() if not text: send_message( update.effective_message, "There is no note message - You can't JUST have buttons, you need a message to go with it!", ) return elif msg.reply_to_message and len(args) >= 2: if msg.reply_to_message.text: text_to_parsing = msg.reply_to_message.text elif msg.reply_to_message.caption: text_to_parsing = msg.reply_to_message.caption else: text_to_parsing = "" offset = len(text_to_parsing ) # set correct offset relative to command + notename text, buttons = button_markdown_parser(text_to_parsing, entities=msg.parse_entities(), offset=offset) text = text.strip() elif not text and not file_type: send_message( update.effective_message, "Please provide keyword for this filter reply with!", ) return elif msg.reply_to_message: if msg.reply_to_message.text: text_to_parsing = msg.reply_to_message.text elif msg.reply_to_message.caption: text_to_parsing = msg.reply_to_message.caption else: text_to_parsing = "" offset = len(text_to_parsing ) # set correct offset relative to command + notename text, buttons = button_markdown_parser(text_to_parsing, entities=msg.parse_entities(), offset=offset) text = text.strip() if (msg.reply_to_message.text or msg.reply_to_message.caption) and not text: send_message( update.effective_message, "There is no note message - You can't JUST have buttons, you need a message to go with it!", ) return else: send_message(update.effective_message, "Invalid filter!") return add = addnew_filter(update, chat_id, keyword, text, file_type, file_id, buttons) # This is an old method # sql.add_filter(chat_id, keyword, content, is_sticker, is_document, is_image, is_audio, is_voice, is_video, buttons) if add == True: send_message( update.effective_message, "Saved filter '{}' in *{}*!".format(keyword, chat_name), parse_mode=telegram.ParseMode.MARKDOWN, ) raise DispatcherHandlerStop