def _message(func): try: if can_disable: self._dispatcher.add_handler( DisableAbleMessageHandler(pattern, func, friendly=friendly, run_async=run_async), group) else: self._dispatcher.add_handler( MessageHandler(pattern, func, run_async=run_async), group) log.debug( f"[KIGMSG] Loaded filter pattern {pattern} for function {func.__name__} in group {group}" ) except TypeError: if can_disable: self._dispatcher.add_handler( DisableAbleMessageHandler(pattern, func, friendly=friendly, run_async=run_async)) else: self._dispatcher.add_handler( MessageHandler(pattern, func, run_async=run_async)) log.debug( f"[KIGMSG] Loaded filter pattern {pattern} for function {func.__name__}" ) return func
def __gdpr__(user_id): sql.rm_afk(user_id) __help__ = """ - /afk <reason>: mark yourself as AFK(away from keyboard). - brb <reason>: same as the afk command - but not a command. When marked as AFK, any mentions will be replied to with a message to say you're not available! """ AFK_HANDLER = DisableAbleCommandHandler("afk", afk) AFK_REGEX_HANDLER = DisableAbleRegexHandler(r"(?i)brb", afk, friendly="afk") NO_AFK_HANDLER = DisableAbleMessageHandler(Filters.all & Filters.group, no_longer_afk, friendly="afk") AFK_REPLY_HANDLER = DisableAbleMessageHandler( (Filters.entity(MessageEntity.MENTION) | Filters.entity(MessageEntity.TEXT_MENTION)) & Filters.group, reply_afk, friendly="afk") dispatcher.add_handler(AFK_HANDLER, AFK_GROUP) dispatcher.add_handler(AFK_REGEX_HANDLER, AFK_GROUP) dispatcher.add_handler(NO_AFK_HANDLER, AFK_GROUP) dispatcher.add_handler(AFK_REPLY_HANDLER, AFK_REPLY_GROUP) __mod_name__ = "AFK" __command_list__ = ["afk"] __handlers__ = [(AFK_HANDLER, AFK_GROUP), (AFK_REGEX_HANDLER, AFK_GROUP),
return time = humanize.naturaldelta(datetime.now() - user.time) if not user.reason: res = "{} is AFK.\nLast seen {} ago.".format(fst_name, time) update.effective_message.reply_text(res) else: res = "{} is AFK.\nReason: <code>{}</code>\nLast seen {} ago.".format( html.escape(fst_name), html.escape(user.reason), time) update.effective_message.reply_text(res, parse_mode="html") AFK_HANDLER = DisableAbleCommandHandler("afk", afk) AFK_REGEX_HANDLER = DisableAbleMessageHandler(Filters.regex(r"^(?i)brb(.*)$"), afk, friendly="afk") NO_AFK_HANDLER = MessageHandler(Filters.all & Filters.group, no_longer_afk) AFK_REPLY_HANDLER = MessageHandler(Filters.all & Filters.group, reply_afk) dispatcher.add_handler(AFK_HANDLER, AFK_GROUP) dispatcher.add_handler(AFK_REGEX_HANDLER, AFK_GROUP) dispatcher.add_handler(NO_AFK_HANDLER, AFK_GROUP) dispatcher.add_handler(AFK_REPLY_HANDLER, AFK_REPLY_GROUP) __mod_name__ = "AFK" __command_list__ = ["afk"] __handlers__ = [ (AFK_HANDLER, AFK_GROUP), (AFK_REGEX_HANDLER, AFK_GROUP), (NO_AFK_HANDLER, AFK_GROUP),
text = re.sub(repl, repl_with, to_fix, count=1).strip() except sre_constants.error: LOGGER.warning(update.effective_message.text) LOGGER.exception("SRE constant error") update.effective_message.reply_text("Do you even sed? Apparently not.") return # empty string errors -_- if len(text) >= telegram.MAX_MESSAGE_LENGTH: update.effective_message.reply_text("The result of the sed command was too long for \ telegram!") elif text: update.effective_message.reply_to_message.reply_text(text) def __help__(update: Update) -> str: return "\n - s/<text1>/<text2>(/<flag>): Reply to a message with this to perform a sed operation on that message, replacing all \ occurrences of 'text1' with 'text2'. Flags are optional, and currently include 'i' for ignore case, 'g' for global, \ or nothing. Delimiters include `/`, `_`, `|`, and `:`. Text grouping is supported. The resulting message cannot be \ larger than {}.\n\n" \ "*Reminder:* Sed uses some special characters to make matching easier, such as these: `+*.?\\`" \ "If you want to use these characters, make sure you escape them!\n" \ "eg: \\?.".format(telegram.MAX_MESSAGE_LENGTH) __mod_name__ = "Sed/Regex" SED_HANDLER = DisableAbleMessageHandler(Filters.regex(r's([{}]).*?\1.*'.format("".join(DELIMITERS))), sed, friendly="sed", run_async=True) dispatcher.add_handler(SED_HANDLER)
html.escape(fst_name), html.escape(reason) ) update.effective_message.reply_text(res, parse_mode="html") def __gdpr__(user_id): sql.rm_afk(user_id) from tg_bot.modules.language import gs def get_help(chat): return gs(chat, "afk_help") AFK_HANDLER = DisableAbleCommandHandler("afk", afk, run_async=True) AFK_REGEX_HANDLER = DisableAbleMessageHandler( Filters.regex("(?i)brb"), afk, friendly="afk", run_async=True ) NO_AFK_HANDLER = DisableAbleMessageHandler( Filters.all & Filters.chat_type.groups, no_longer_afk, friendly="afk", run_async=True, ) AFK_REPLY_HANDLER = DisableAbleMessageHandler( (Filters.entity(MessageEntity.MENTION) | Filters.entity(MessageEntity.TEXT_MENTION)) & Filters.chat_type.groups, reply_afk, friendly="afk", run_async=True, )
" - +: Increase someones reputation.\n" \ " - -: Decrease someones reputation." def __chat_settings__(chat_id, user_id): return "Reputations is enabled in this chat, change with /reputation: `{}`".format( settings.chat_should_reputate(chat_id)) def __user_settings__(user_id): return "Your current reputations setting is `{}`.\nChange this with /reputation in PM.".format( settings.user_should_reputate(user_id)) INCREASE_MESSAGE_HANDLER = DisableAbleMessageHandler(Filters.regex(r"^\+$"), increase, friendly="increase", run_async=True) dispatcher.add_handler(INCREASE_MESSAGE_HANDLER) DECREASE_MESSAGE_HANDLER = DisableAbleMessageHandler(Filters.regex(r"^\-$"), decrease, friendly="decrease", run_async=True) dispatcher.add_handler(DECREASE_MESSAGE_HANDLER) INCREASE_MESSAGE_HANDLER2 = DisableAbleMessageHandler(Filters.regex(r"^\👍$"), increase, friendly="increase", run_async=True) dispatcher.add_handler(INCREASE_MESSAGE_HANDLER2) DECREASE_MESSAGE_HANDLER2 = DisableAbleMessageHandler(Filters.regex(r"^\👎$"),
Saber will reply random strings accordingly when these words are used! All regex filters can be disabled incase u don't want... like: `/disable goodnight`. """ __mod_name__ = "Memes" PAT_HANDLER = DisableAbleCommandHandler("pat", pat) SHOUT_HANDLER = DisableAbleCommandHandler("shout", shout) DARE_HANDLER = DisableAbleCommandHandler("dare", dare) TRUTH_HANDLER = DisableAbleCommandHandler("truth", truth) SANITIZE_HANDLER = DisableAbleCommandHandler("sanitize", sanitize) SHRUG_HANDLER = DisableAbleCommandHandler("shrug", shrug) DECIDE_HANDLER = DisableAbleMessageHandler(Filters.regex(r"(?i)^saber\?"), decide, friendly="decide") ABUSE_HANDLER = DisableAbleCommandHandler("abuse", abuse, pass_args=True) RUNS_HANDLER = DisableAbleCommandHandler("runs", runs, pass_args=True) SLAP_HANDLER = DisableAbleCommandHandler("slap", slap) HUG_HANDLER = DisableAbleCommandHandler("hug", hug) GBUN_HANDLER = CommandHandler("gbun", gbun) GBAM_HANDLER = CommandHandler("gbam", gbam) TABLE_HANDLER = DisableAbleCommandHandler("table", table) CRI_HANDLER = DisableAbleCommandHandler("cri", cri) PASTA_HANDLER = DisableAbleCommandHandler("pasta", copypasta) CLAP_HANDLER = DisableAbleCommandHandler("clap", clapmoji) OWO_HANDLER = DisableAbleCommandHandler("owo", owo) STRECH_HANDLER = DisableAbleCommandHandler("stretch", stretch) RECITE_HANDLER = DisableAbleCommandHandler("recite", recite) DICE_HANDLER = DisableAbleCommandHandler("roll", dice)
return # empty string errors -_- if len(text) >= telegram.MAX_MESSAGE_LENGTH: update.effective_message.reply_text( "The result of the sed command was too long for \ telegram!") elif text: update.effective_message.reply_to_message.reply_text(text) __help__ = """ - s/<text1>/<text2>(/<flag>): Reply to a message with this to perform a sed operation on that message, replacing all \ occurrences of 'text1' with 'text2'. Flags are optional, and currently include 'i' for ignore case, 'g' for global, \ or nothing. Delimiters include `/`, `_`, `|`, and `:`. Text grouping is supported. The resulting message cannot be \ larger than {}. *Reminder:* Sed uses some special characters to make matching easier, such as these: `+*.?\\` If you want to use these characters, make sure you escape them! eg: \\?. """.format(telegram.MAX_MESSAGE_LENGTH) __mod_name__ = "Sed/Regex" SED_HANDLER = DisableAbleMessageHandler(Filters.regex(r"s([{}]).*?\1.*".format( "".join(DELIMITERS))), sed, friendly="sed") dispatcher.add_handler(SED_HANDLER)
message.reply_text(res) def __gdpr__(user_id): sql.rm_afk(user_id) def __help__(update: Update) -> str: return get_string("afk", "HELP", lang.get_lang(update.effective_chat.id)) __mod_name__ = "AFK" # MODULE_NAME AFK_HANDLER = DisableAbleCommandHandler("afk", afk, run_async=True) AFK_MESSAGE_HANDLER = DisableAbleMessageHandler(Filters.regex("(?i)brb"), afk, friendly="afk", run_async=True) NO_AFK_HANDLER = MessageHandler(Filters.all & Filters.group, no_longer_afk, run_async=True) AFK_REPLY_HANDLER = MessageHandler( Filters.entity(MessageEntity.MENTION) | Filters.entity(MessageEntity.TEXT_MENTION), reply_afk, run_async=True) dispatcher.add_handler(AFK_HANDLER, AFK_GROUP) dispatcher.add_handler(AFK_MESSAGE_HANDLER, AFK_GROUP) dispatcher.add_handler(NO_AFK_HANDLER, AFK_GROUP) dispatcher.add_handler(AFK_REPLY_HANDLER, AFK_REPLY_GROUP)