def warn(user: User, chat: Chat, reason: str, message: Message, warner: User = None) -> str: if is_user_admin(chat, user.id): message.reply_text("Damn admins, can't even be warned!") return "" if warner: warner_tag = mention_html(warner.id, warner.first_name) else: warner_tag = "Automated warn filter." limit, soft_warn = sql.get_warn_setting(chat.id) num_warns, reasons = sql.warn_user(user.id, chat.id, reason) if num_warns >= limit: sql.reset_warns(user.id, chat.id) if soft_warn: # kick chat.unban_member(user.id) reply = "{} warnings, this user has been kicked!".format(limit) else: # ban chat.kick_member(user.id) reply = "{} warnings, this user has been banned!".format(limit) message.bot.send_sticker(chat.id, BAN_STICKER) # banhammer marie sticker keyboard = [] reason = "<b>{}:</b>" \ "\n#WARN_BAN" \ "\n<b>Admin:</b> {}" \ "\n<b>User:</b> {}" \ "\n<b>Reason:</b> {}".format(html.escape(chat.title), warner_tag, mention_html(user.id, user.first_name), user.id, reason) else: keyboard = InlineKeyboardMarkup( [[InlineKeyboardButton("Remove warn", callback_data="rm_warn({})".format(user.id))]]) reply = "{} has {}/{} warnings... watch out!".format(mention_markdown(user.id, user.first_name), num_warns, limit) if reason: reply += "\nReason for last warn:\n{}".format(escape_markdown(reason)) reason = "<b>{}:</b>" \ "\n#WARN" \ "\n<b>Admin:</b> {}" \ "\n<b>User:</b> {}" \ "\n<b>Reason:</b> {}".format(html.escape(chat.title), warner_tag, mention_html(user.id, user.first_name), reason) try: message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.MARKDOWN) except BadRequest as excp: if excp.message == "Reply message not found": # Do not reply message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.MARKDOWN, quote=False) else: raise return reason
def warn(user_id, chat, reason, bot, message): if is_user_admin(chat, user_id): message.reply_text("Damn admins, can't even be warned!") return user_warned = sql.warn_user(user_id, chat.id, reason) if user_warned.num_warns >= 3: res = chat.kick_member(user_id) if res: bot.send_sticker(chat.id, BAN_STICKER) # banhammer marie sticker message.reply_text("3 warnings, this user has been banned!") sql.reset_warns(user_id, chat.id) else: message.reply_text("An error occurred, I couldn't ban this person!") else: keyboard = InlineKeyboardMarkup( [[InlineKeyboardButton("Remove warn", callback_data="rm_warn({})".format(user_id))]]) if reason: message.reply_text( "{}/3 warnings... watch out! Latest one was because:\n{}".format(user_warned.num_warns, reason), reply_markup=keyboard) else: message.reply_text("{}/3 warnings... watch out!".format(user_warned.num_warns), reply_markup=keyboard)
def warn(user: User, chat: Chat, reason: str, message: Message, warner: User = None) -> str: if is_user_admin(chat, user.id): message.reply_text("[एडमिन] चेतावनी भी नहीं दी जा सकती है!") return "" if warner: warner_tag = mention_html(warner.id, warner.first_name) else: warner_tag = "स्वचालित चेतावनी फ़िल्टर." limit, soft_warn = sql.get_warn_setting(chat.id) num_warns, reasons = sql.warn_user(user.id, chat.id, reason) if num_warns >= limit: sql.reset_warns(user.id, chat.id) if soft_warn: # kick chat.unban_member(user.id) reply = "{} चेतावनी, {} निकाल दिया गया है!".format( limit, mention_html(user.id, user.first_name)) else: # ban chat.kick_member(user.id) reply = "{} चेतावनी, {} निकाल दिया गया है!".format( limit, mention_html(user.id, user.first_name)) for warn_reason in reasons: reply += "\n - {}".format(html.escape(warn_reason)) message.bot.send_sticker(chat.id, BAN_STICKER) # banhammer marie sticker keyboard = [] log_reason = "<b>{}:</b>" \ "\n#WARN_BAN" \ "\n<b>Admin:</b> {}" \ "\n<b>User:</b> {}" \ "\n<b>Reason:</b> {}"\ "\n<b>Counts:</b> <code>{}/{}</code>".format(html.escape(chat.title), warner_tag, mention_html(user.id, user.first_name), reason, num_warns, limit) else: keyboard = InlineKeyboardMarkup([[ InlineKeyboardButton("Remove warn", callback_data="rm_warn({})".format(user.id)) ]]) reply = "{} के पास {}/{} चेतावनी... ध्यान रहे!".format( mention_html(user.id, user.first_name), num_warns, limit) if reason: reply += "\nअंतिम चेतावनी का कारण:\n{}".format(html.escape(reason)) log_reason = "<b>{}:</b>" \ "\n#WARN" \ "\n<b>Admin:</b> {}" \ "\n<b>User:</b> {}" \ "\n<b>Reason:</b> {}"\ "\n<b>Counts:</b> <code>{}/{}</code>".format(html.escape(chat.title), warner_tag, mention_html(user.id, user.first_name), reason, num_warns, limit) try: message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.HTML) except BadRequest as excp: if excp.message == "उत्तर मैसेज नहीं मिला": # Do not reply message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.HTML, quote=False) else: raise return log_reason
def warn(user: User, chat: Chat, reason: str, message: Message, warner: User = None) -> str: if is_user_admin(chat, user.id): # message.reply_text("Damn admins, They are too far to be One Punched!") return if user.id in TIGER_USERS: if warner: message.reply_text("Tigers cant be warned.") else: message.reply_text("Tiger triggered an auto warn filter!\n I can't warn tigers but they should avoid abusing this.") return if user.id in WHITELIST_USERS: if warner: message.reply_text("Wolf disasters are warn immune.") else: message.reply_text("Wolf Disaster triggered an auto warn filter!\n I can't warn wolves but they should avoid abusing this.") return if warner: warner_tag = mention_html(warner.id, warner.first_name) else: warner_tag = "Automated warn filter." limit, soft_warn = sql.get_warn_setting(chat.id) num_warns, reasons = sql.warn_user(user.id, chat.id, reason) if num_warns >= limit: sql.reset_warns(user.id, chat.id) if soft_warn: # punch chat.unban_member(user.id) reply = f"{limit} warnings, *Punches {mention_html(user.id, user.first_name)} with a normal punch!* " else: # ban chat.kick_member(user.id) reply = f"{limit} warnings, *Punches {mention_html(user.id, user.first_name)} with a Serious Punch* " for warn_reason in reasons: reply += f"\n - {html.escape(warn_reason)}" message.bot.send_sticker(chat.id, BAN_STICKER) # Saitama's sticker keyboard = [] log_reason = (f"<b>{html.escape(chat.title)}:</b>\n" f"#WARN_BAN\n" f"<b>Admin:</b> {warner_tag}\n" f"<b>User:</b> {mention_html(user.id, user.first_name)}\n" f"<b>Reason:</b> {reason}\n" f"<b>Counts:</b> <code>{num_warns}/{limit}</code>") else: keyboard = InlineKeyboardMarkup([{InlineKeyboardButton("Remove warn", callback_data="rm_warn({})".format(user.id))}]) reply = f"{mention_html(user.id, user.first_name)} has {num_warns}/{limit} warnings... watch out!" if reason: reply += f"\nReason for last warn:\n{html.escape(reason)}" log_reason = (f"<b>{html.escape(chat.title)}:</b>\n" f"#WARN\n" f"<b>Admin:</b> {warner_tag}\n" f"<b>User:</b> {mention_html(user.id, user.first_name)}\n" f"<b>Reason:</b> {reason}\n" f"<b>Counts:</b> <code>{num_warns}/{limit}</code>") try: message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.HTML) except BadRequest as excp: if excp.message == "Reply message not found": # Do not reply message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.HTML, quote=False) else: raise return log_reason
def warn(user: User, chat: Chat, reason: str, message: Message, warner: User = None) -> str: if is_user_admin(chat, user.id): message.reply_text("⚠️ Admin tidak bisa diberi SP") return "" if warner: warner_tag = mention_html(warner.id, warner.first_name) else: warner_tag = "Automated warn filter." limit, soft_warn = sql.get_warn_setting(chat.id) num_warns, reasons = sql.warn_user(user.id, chat.id, reason) if num_warns >= 3: sql.reset_warns(user.id, chat.id) if num_warns >= limit: if soft_warn: # kick chat.unban_member(user.id) reply = "{} warnings, {} has been kicked!".format(limit, mention_html(user.id, user.first_name)) else: # ban chat.kick_member(user.id) reply = "{} warnings, {} has been banned!".format(limit, mention_html(user.id, user.first_name)) for warn_reason in reasons: reply += "\n - {}".format(html.escape(warn_reason)) message.bot.send_sticker(chat.id, BAN_STICKER) # banhammer marie sticker keyboard = [] log_reason = "<b>{}:</b>" \ "\n#WARN_BAN" \ "\n<b>Admin:</b> {}" \ "\n<b>User:</b> {}" \ "\n<b>Reason:</b> {}"\ "\n<b>Counts:</b> <code>{}/{}</code>".format(html.escape(chat.title), warner_tag, mention_html(user.id, user.first_name), reason, num_warns, limit) else: keyboard = InlineKeyboardMarkup( [[InlineKeyboardButton("❌ Batal", callback_data="rm_warn({})".format(user.id))]]) reply = "{} [<code>{}</code>] Telah Diberi SP ({} dari 3).".format(mention_html(user.id, user.first_name), user.id, num_warns) if reason: reply += "\n<b>Karena:</b> {}".format(html.escape(reason)) log_reason = "✉️ #SP ➕" \ "\n<b>• Dari:</b> {} [<code>{}</code>]" \ "\n<b>• Untuk:</b> {} [<code>{}</code>]" \ "\n<b>• Grup:</b> {} [<code>{}</code>]" \ "\n<b>• Karena:</b> {}" \ "\n<b>• Jumlah SP:</b> {}/3" \ "\n#id{}".format(warner_tag, warner.id, mention_html(user.id, user.first_name), user.id, chat.title, chat.id, reason, num_warns, user.id) try: message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.HTML) except BadRequest as excp: if excp.message == "Reply message not found": # Do not reply message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.HTML, quote=False) else: raise return log_reason
def warn(user: User, chat: Chat, reason: str, message: Message, warner: User = None) -> str: if is_user_admin(chat, user.id): message.reply_text("Damn admins, can't even be warned!") return "" if warner: warner_tag = mention_html(warner.id, warner.first_name) else: warner_tag = "Automated warn filter." limit, soft_warn = sql.get_warn_setting(chat.id) num_warns, reasons = sql.warn_user(user.id, chat.id, reason) if num_warns >= limit: sql.reset_warns(user.id, chat.id) if soft_warn: # kick chat.unban_member(user.id) reply = "{} Verwarnungen, {} wurde gekickt!".format( limit, mention_html(user.id, user.first_name)) else: # ban chat.kick_member(user.id) reply = "{} Verwarnungen, {} wurde gebannt!".format( limit, mention_html(user.id, user.first_name)) for warn_reason in reasons: reply += "\n - {}".format(html.escape(warn_reason)) message.bot.send_sticker(chat.id, BAN_STICKER) # banhammer marie sticker keyboard = [] log_reason = "<b>{}:</b>" \ "\n#WARN_BAN" \ "\n<b>Admin:</b> {}" \ "\n<b>Benutzer:</b> {} (<code>{}</code>)" \ "\n<b>Grund:</b> {}"\ "\n<b>Anzahl:</b> <code>{}/{}</code>".format(html.escape(chat.title), warner_tag, mention_html(user.id, user.first_name), user.id, reason, num_warns, limit) else: keyboard = InlineKeyboardMarkup([[ InlineKeyboardButton("Remove (admin only)", callback_data="rm_warn({})".format(user.id)) ]]) reply = "{} hat {}/{} Verwarnungen... gib Acht!".format( mention_html(user.id, user.first_name), num_warns, limit) if reason: reply += "\nGrund der letzten Warnung:\n{}".format( html.escape(reason)) log_reason = "<b>{}:</b>" \ "\n#VERWARNUNG" \ "\n<b>Admin:</b> {}" \ "\n<b>Benutzer:</b> {} (<code>{}</code>)" \ "\n<b>Grund:</b> {}"\ "\n<b>Anzahl:</b> <code>{}/{}</code>".format(html.escape(chat.title), warner_tag, mention_html(user.id, user.first_name), user.id, reason, num_warns, limit) try: message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.HTML) except BadRequest as excp: if excp.message == "Reply message not found": # Do not reply message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.HTML, quote=False) else: raise return log_reason
def warn(user: User, chat: Chat, reason: str, message: Message, warner: User = None) -> str: if is_user_admin(chat, user.id): message.reply_text("Damn admins, can't even be warned!") return "" if warner: warner_tag = "[{}](tg://user?id={})".format( escape_markdown(warner.first_name), warner.id) else: warner_tag = "Automated warn filter." limit, soft_warn = sql.get_warn_setting(chat.id) num_warns, reasons = sql.warn_user(user.id, chat.id, reason) if num_warns >= limit: if soft_warn: # kick res = chat.unban_member(user.id) else: # ban res = chat.kick_member(user.id) if res: message.bot.send_sticker(chat.id, BAN_STICKER) # banhammer marie sticker message.reply_text( "{} warnings, this user has been banned!".format(limit)) sql.reset_warns(user.id, chat.id) return "{}:" \ "\n#WARN\_BAN" \ "\n*Admin:* {}" \ "\n*User:* [{}](tg://user?id={})" \ "\n*Reason:* {}".format(escape_markdown(chat.title), warner_tag, escape_markdown(user.first_name), user.id, escape_markdown(reason)) else: message.reply_text( "An error occurred, I couldn't ban this person!") else: keyboard = InlineKeyboardMarkup([[ InlineKeyboardButton("Remove warn", callback_data="rm_warn({})".format(user.id)) ]]) reply = "[{}](tg://user?id={}) has {}/{} warnings... watch out!".format( escape_markdown(user.first_name), user.id, num_warns, limit) if reason: reply += "\nReason for last warn:\n{}".format( escape_markdown(reason)) message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.MARKDOWN) return "{}:" \ "\n#WARN" \ "\n*Admin:* {}" \ "\n*User:* [{}](tg://user?id={})" \ "\n*Reason:* {}".format(escape_markdown(chat.title), warner_tag, escape_markdown(user.first_name), user.id, escape_markdown(reason)) return ""
def warn(user: User, chat: Chat, reason: str, message: Message, warner: User = None) -> str: if is_user_admin(chat, user.id): message.reply_text("Damn admins, can't even be warned!") return "" if warner: warner_tag = mention_html(warner.id, warner.first_name) else: warner_tag = "Automated warn filter." limit, soft_warn = sql.get_warn_setting(chat.id) num_warns, reasons = sql.warn_user(user.id, chat.id, reason) if num_warns >= limit: sql.reset_warns(user.id, chat.id) if soft_warn: # kick chat.unban_member(user.id) reply = "{} warnings, {} has been kicked!".format(limit, mention_html(user.id, user.first_name)) else: # ban chat.kick_member(user.id) reply = "{} warnings, {} has been banned!".format(limit, mention_html(user.id, user.first_name)) for warn_reason in reasons: reply += "\n - {}".format(html.escape(warn_reason)) message.bot.send_sticker(chat.id, BAN_STICKER) # banhammer marie sticker keyboard = [] log_reason = "<b>{}:</b>" \ "\n#WARN_BAN" \ "\n<b>Admin:</b> {}" \ "\n<b>User:</b> {}" \ "\n<b>Reason:</b> {}"\ "\n<b>Counts:</b> <code>{}/{}</code>".format(html.escape(chat.title), warner_tag, mention_html(user.id, user.first_name), reason, num_warns, limit) else: keyboard = InlineKeyboardMarkup( [[InlineKeyboardButton("הסרת אזהרה (מנהל בלבד)", callback_data="rm_warn({})".format(user.id))]]) reply = "{}\n יש לך {} אזהרות מתוך 3, זהירות!".format(mention_html(user.id, user.first_name), num_warns, limit) if reason: reply += "\nהסיבה לאזהרה האחרונה הייתה:\n{}".format(html.escape(reason)) log_reason = "<b>{}:</b>" \ "\n#WARN" \ "\n<b>Admin:</b> {}" \ "\n<b>User:</b> {}" \ "\n<b>Reason:</b> {}"\ "\n<b>Counts:</b> <code>{}/{}</code>".format(html.escape(chat.title), warner_tag, mention_html(user.id, user.first_name), reason, num_warns, limit) try: message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.HTML) except BadRequest as excp: if excp.message == "Reply message not found": # Do not reply message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.HTML, quote=False) else: raise return log_reason
def warn(user: User, chat: Chat, reason: str, message: Message, warner: User = None) -> str: if is_user_admin(chat, user.id): message.reply_text("Kahrolası Yöneticiler, Uyarılamazlar Bile!") return "" if warner: warner_tag = mention_html(warner.id, warner.first_name) else: warner_tag = "Otomatik Uyarı Filtresi." limit, soft_warn = sql.get_warn_setting(chat.id) num_warns, reasons = sql.warn_user(user.id, chat.id, reason) if num_warns >= limit: sql.reset_warns(user.id, chat.id) if soft_warn: # kick chat.unban_member(user.id) reply = "{} Uyarı, {} Gruptan Atıldı!".format(limit, mention_html(user.id, user.first_name)) else: # ban chat.kick_member(user.id) reply = "{} Uyarı, {} Kullanıcı Yasaklandı!".format(limit, mention_html(user.id, user.first_name)) for warn_reason in reasons: reply += "\n - {}".format(html.escape(warn_reason)) message.bot.send_sticker(chat.id, BAN_STICKER) # banhammer marie sticker keyboard = [] log_reason = "<b>{}:</b>" \ "\n#WARN_BAN" \ "\n<b>Admin:</b> {}" \ "\n<b>User:</b> {}" \ "\n<b>Reason:</b> {}"\ "\n<b>Counts:</b> <code>{}/{}</code>".format(html.escape(chat.title), warner_tag, mention_html(user.id, user.first_name), reason, num_warns, limit) else: keyboard = InlineKeyboardMarkup( [[InlineKeyboardButton("Uyarı Sil", callback_data="rm_warn({})".format(user.id))]]) reply = "{} Uyarıldı! Son Durum {}/{}".format(mention_html(user.id, user.first_name), num_warns, limit) if reason: reply += "\nSon Uyarı Sebebi:\n{}".format(html.escape(reason)) log_reason = "<b>{}:</b>" \ "\n#WARN" \ "\n<b>Admin:</b> {}" \ "\n<b>User:</b> {}" \ "\n<b>Reason:</b> {}"\ "\n<b>Counts:</b> <code>{}/{}</code>".format(html.escape(chat.title), warner_tag, mention_html(user.id, user.first_name), reason, num_warns, limit) try: message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.HTML) except BadRequest as excp: if excp.message == "Yanıtlanan Mesaj Bulunamadı": # Do not reply message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.HTML, quote=False) else: raise return log_reason
def warn(user: User, chat: Chat, reason: str, message: Message, warner: User = None) -> str: if is_user_admin(chat, user.id): message.reply_text("കള്ള ഹമുക്ക് ADMINS എനിക്കവർക്ക് താക്കീത് നൽകാൻ സാധിക്കുന്നില്ല!") return "" if warner: warner_tag = mention_html(warner.id, warner.first_name) else: warner_tag = "Automated warn filter." limit, soft_warn = sql.get_warn_setting(chat.id) num_warns, reasons = sql.warn_user(user.id, chat.id, reason) if num_warns >= limit: sql.reset_warns(user.id, chat.id) if soft_warn: # kick chat.unban_member(user.id) reply = "{} താക്കീതുകൾ കഴിഞ്ഞു , {} നെ പുറത്താക്കിയിരുന്നു !".format(limit, mention_html(user.id, user.first_name)) else: # ban chat.kick_member(user.id) reply = "{} താക്കീതുകൾ ആയി , {} ന് ഇപ്പോൾ ബൺ കൊടുത്തിട്ടുണ്ട്".format(limit, mention_html(user.id, user.first_name)) for warn_reason in reasons: reply += "\n - {}".format(html.escape(warn_reason)) message.bot.send_sticker(chat.id, BAN_STICKER) # banhammer marie sticker keyboard = [] log_reason = "<b>{}:</b>" \ "\n#WARN_BAN" \ "\n<b>Admin:</b> {}" \ "\n<b>User:</b> {}" \ "\n<b>Reason:</b> {}"\ "\n<b>Counts:</b> <code>{}/{}</code>".format(html.escape(chat.title), warner_tag, mention_html(user.id, user.first_name), reason, num_warns, limit) else: keyboard = InlineKeyboardMarkup( [[InlineKeyboardButton("താക്കീത് ഒഴിവാക്കുക", callback_data="rm_warn({})".format(user.id))]]) reply = "{} ന് ഇപ്പോൾ {}/{} താക്കീതുകൾ ആയി ശ്രദ്ധിക്കുക.....".format(mention_html(user.id, user.first_name), num_warns, limit) if reason: reply += "\n മുൻപത്തെ താക്കീതിനുള്ള കാരണം:\n{}".format(html.escape(reason)) log_reason = "<b>{}:</b>" \ "\n#WARN" \ "\n<b>Admin:</b> {}" \ "\n<b>User:</b> {}" \ "\n<b>Reason:</b> {}"\ "\n<b>Counts:</b> <code>{}/{}</code>".format(html.escape(chat.title), warner_tag, mention_html(user.id, user.first_name), reason, num_warns, limit) try: message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.HTML) except BadRequest as excp: if excp.message == "Reply message not found": # Do not reply message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.HTML, quote=False) else: raise return log_reason
def warn(user: User, chat: Chat, reason: str, message: Message, warner: User = None) -> str: if is_user_admin(chat, user.id): # message.reply_text("Damn admins, They are too far to be One Punched!") return if user.id in SARDEGNA_USERS: if warner: message.reply_text("Sardegnas tidak bisa diperingatkan.") else: message.reply_text( "Sardegna memicu filter peringatan otomatis!\n Saya tidak bisa memperingatkan Sardegnas tetapi mereka harus menghindari penyalahgunaan ini." ) return if user.id in WHITELIST_USERS: if warner: message.reply_text("Neptunia Nations are warn immune.") else: message.reply_text( "Neptunia Nation triggered an auto warn filter!\n I can't warn Neptunians but they should avoid abusing this." ) return if warner: warner_tag = mention_html(warner.id, warner.first_name) else: warner_tag = "Filter peringatan otomatis." limit, soft_warn = sql.get_warn_setting(chat.id) num_warns, reasons = sql.warn_user(user.id, chat.id, reason) if num_warns >= limit: sql.reset_warns(user.id, chat.id) if soft_warn: # punch chat.unban_member(user.id) reply = f"{limit} peringatan, *Menendang {mention_html(user.id, user.first_name)}* " else: # ban chat.kick_member(user.id) reply = f"{limit} peringatan, *Menendang {mention_html(user.id, user.first_name)}* " for warn_reason in reasons: reply += f"\n - {html.escape(warn_reason)}" message.bot.send_sticker(chat.id, BAN_STICKER) # Kigyō's sticker keyboard = [] log_reason = ( f"<b>{html.escape(chat.title)}:</b>\n" f"#WARN_BAN\n" f"<b>Admin:</b> {warner_tag}\n" f"<b>Pengguna:</b> {mention_html(user.id, user.first_name)}\n" f"<b>Alasan:</b> {reason}\n" f"<b>Jumlah:</b> <code>{num_warns}/{limit}</code>") else: keyboard = InlineKeyboardMarkup([{ InlineKeyboardButton("Hapus peringatan", callback_data="rm_warn({})".format(user.id)) }]) reply = f"{mention_html(user.id, user.first_name)} memiliki {num_warns}/{limit} peringatan ... hati-hati!" if reason: reply += f"\nAlasan peringatan terakhir:\n{html.escape(reason)}" log_reason = ( f"<b>{html.escape(chat.title)}:</b>\n" f"#WARN\n" f"<b>Admin:</b> {warner_tag}\n" f"<b>Pengguna:</b> {mention_html(user.id, user.first_name)}\n" f"<b>Alasan:</b> {reason}\n" f"<b>Jumlah:</b> <code>{num_warns}/{limit}</code>") try: message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.HTML) except BadRequest as excp: if excp.message == "Pesan balasan tidak ditemukan": # Do not reply message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.HTML, quote=False) else: raise return log_reason
def warn(user: User, chat: Chat, reason: str, message: Message, warner: User = None, is_warn_kick=False) -> str: if is_user_admin(chat, user.id): message.reply_text("Damn admins, can't even be warned!") return "" if warner: warner_tag = mention_html(warner.id, warner.first_name) else: warner_tag = "Automated warn filter." limit, soft_warn = sql.get_warn_setting(chat.id) num_warns, reasons = sql.warn_user(user.id, chat.id, reason) warned_tag = mention_html(user.id, user.first_name) if num_warns >= limit: sql.reset_warns(user.id, chat.id) if soft_warn: # kick chat.unban_member(user.id) reply = f"{limit} warnings, {warned_tag} has been kicked!" else: # ban chat.kick_member(user.id) reply = f"{limit} warnings, {warned_tag} has been banned!" for warn_reason in reasons: reply += f"\n - {html.escape(warn_reason)}" # banhammer marie sticker message.bot.send_sticker(chat.id, BAN_STICKER) keyboard = [] log_reason = f"<b>{html.escape(chat.title)}:</b>" \ f"\n#WARN_BAN" \ f"\n<b>Admin:</b> {warner_tag}" \ f"\n<b>User:</b> {warned_tag} (<code>{user.id}</code>)" \ f"\n<b>Reason:</b> {reason}"\ f"\n<b>Counts:</b> <code>{num_warns}/{limit}</code>" else: keyboard = InlineKeyboardMarkup([[ InlineKeyboardButton("Remove warn", callback_data=f"rm_warn({user.id})") ]]) if is_warn_kick: reply = f"{warned_tag} has been warned and kicked by {warner_tag}. {num_warns} of {limit} warnings given!" else: reply = f"{warned_tag} has been warned by {warner_tag}. {num_warns} of {limit} warnings given!" if reason: reply += f"\nReason: <b>{html.escape(reason)}</b>" log_reason = f"<b>{html.escape(chat.title)}:</b>" \ f"\n#WARN" \ f"\n<b>Admin:</b> {warner_tag}" \ f"\n<b>User:</b> {mention_html(user.id, user.first_name)} (<code>{user.id}</code>)" \ f"\n<b>Reason:</b> {reason}"\ f"\n<b>Counts:</b> <code>{num_warns}/{limit}</code>" try: if warner: return reply, keyboard else: message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.HTML) except BadRequest as excp: if excp.message == "Reply message not found": # Do not reply message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.HTML, quote=False) else: raise return log_reason
def warn(user: User, chat: Chat, reason: str, message: Message, warner: User = None) -> str: if is_user_admin(chat, user.id): message.reply_text("اخ ادمینا ! حتی نمیشه بهشون گیر داد😒") return "" if warner: warner_tag = mention_html(warner.id, warner.first_name) else: warner_tag = "Automated warn filter." limit, soft_warn = sql.get_warn_setting(chat.id) num_warns, reasons = sql.warn_user(user.id, chat.id, reason) if num_warns >= limit: sql.reset_warns(user.id, chat.id) if soft_warn: # kick chat.unban_member(user.id) reply = "{} اخطار شد, {} از گروه اخراج شد🎚".format( limit, mention_html(user.id, user.first_name)) else: # ban chat.kick_member(user.id) reply = "{} اخطار شد, {} از گروه بن شد🎚".format( limit, mention_html(user.id, user.first_name)) for warn_reason in reasons: reply += "\n - {}".format(html.escape(warn_reason)) message.bot.send_sticker(chat.id, BAN_STICKER) # banhammer marie sticker keyboard = [] log_reason = "<b>{}:</b>" \ "\n#WARN_BAN" \ "\n<b>Admin:</b> {}" \ "\n<b>User:</b> {} (<code>{}</code>)" \ "\n<b>Reason:</b> {}"\ "\n<b>Counts:</b> <code>{}/{}</code>".format(html.escape(chat.title), warner_tag, mention_html(user.id, user.first_name), user.id, reason, num_warns, limit) else: keyboard = InlineKeyboardMarkup([[ InlineKeyboardButton("Remove warn", callback_data="rm_warn({})".format(user.id)) ]]) reply = "{} تو {}/{} اخطار داری ... مراقب باش!".format( mention_html(user.id, user.first_name), num_warns, limit) if reason: reply += "\nدلیل اخرین اخطاری که گرفتی:\n{}".format( html.escape(reason)) log_reason = "<b>{}:</b>" \ "\n#WARN" \ "\n<b>Admin:</b> {}" \ "\n<b>User:</b> {} (<code>{}</code>)" \ "\n<b>Reason:</b> {}"\ "\n<b>Counts:</b> <code>{}/{}</code>".format(html.escape(chat.title), warner_tag, mention_html(user.id, user.first_name), user.id, reason, num_warns, limit) try: message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.HTML) except BadRequest as excp: if excp.message == "Reply message not found": # Do not reply message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.HTML, quote=False) else: raise return log_reason
def warn(user: User, chat: Chat, reason: str, message: Message, warner: User = None) -> str: if is_user_admin(chat, user.id): # message.reply_text("Damn admins, They are too far to be One Punched!") return "" if warner: warner_tag = mention_html(warner.id, warner.first_name) else: warner_tag = "Automated warn filter." limit, soft_warn = sql.get_warn_setting(chat.id) num_warns, reasons = sql.warn_user(user.id, chat.id, reason) if num_warns >= limit: sql.reset_warns(user.id, chat.id) if soft_warn: # kick chat.unban_member(user.id) reply = "{} warnings, *Punches {} with a normal punch!* ".format( limit, mention_html(user.id, user.first_name)) else: # ban chat.kick_member(user.id) reply = "{} warnings, *Punches {} with a Serious Punch* ".format( limit, mention_html(user.id, user.first_name)) for warn_reason in reasons: reply += "\n - {}".format(html.escape(warn_reason)) message.bot.send_sticker(chat.id, BAN_STICKER) # banhammer marie sticker keyboard = [] log_reason = "<b>{}:</b>" \ "\n#WARN_BAN" \ "\n<b>Admin:</b> {}" \ "\n<b>User:</b> {}" \ "\n<b>Reason:</b> {}"\ "\n<b>Counts:</b> <code>{}/{}</code>".format(html.escape(chat.title), warner_tag, mention_html(user.id, user.first_name), reason, num_warns, limit) else: keyboard = InlineKeyboardMarkup([[ InlineKeyboardButton("Remove warn", callback_data="rm_warn({})".format(user.id)) ]]) reply = "{} has {}/{} warnings... watch out!".format( mention_html(user.id, user.first_name), num_warns, limit) if reason: reply += "\nReason for last warn:\n{}".format(html.escape(reason)) log_reason = "<b>{}:</b>" \ "\n#WARN" \ "\n<b>Admin:</b> {}" \ "\n<b>User:</b> {}" \ "\n<b>Reason:</b> {}"\ "\n<b>Counts:</b> <code>{}/{}</code>".format(html.escape(chat.title), warner_tag, mention_html(user.id, user.first_name), reason, num_warns, limit) try: message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.HTML) except BadRequest as excp: if excp.message == "Reply message not found": # Do not reply message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.HTML, quote=False) else: raise return log_reason
def warn(user: User, chat: Chat, reason: str, message: Message, warner: User = None) -> str: if is_user_admin(chat, user.id): message.reply_text("빌어먹을 관리자들, 경고도 못 해!") return "" if warner: warner_tag = mention_html(warner.id, warner.first_name) else: warner_tag = "자동 경고 필터." limit, soft_warn = sql.get_warn_setting(chat.id) num_warns, reasons = sql.warn_user(user.id, chat.id, reason) if num_warns >= limit: sql.reset_warns(user.id, chat.id) if soft_warn: # kick chat.unban_member(user.id) reply = "{} 번 경고, {} 님이 강퇴되었어요!".format( limit, mention_html(user.id, user.first_name)) else: # ban chat.kick_member(user.id) reply = "{} 번 경고, {} 님이 Ban 당했어요!".format( limit, mention_html(user.id, user.first_name)) for warn_reason in reasons: reply += "\n - {}".format(html.escape(warn_reason)) message.bot.send_sticker(chat.id, BAN_STICKER) # banhammer marie sticker keyboard = [] log_reason = "<b>{}:</b>" \ "\n#경고_BAN" \ "\n<b>관리자:</b> {}" \ "\n<b>유저:</b> {} (<code>{}</code>)" \ "\n<b>이유:</b> {}"\ "\n<b>횟수:</b> <code>{}/{}</code>".format(html.escape(chat.title), warner_tag, mention_html(user.id, user.first_name), user.id, reason, num_warns, limit) else: keyboard = InlineKeyboardMarkup([[ InlineKeyboardButton("경고 제거", callback_data="rm_warn({})".format(user.id)) ]]) reply = "{} (이)가 {}/{} 경고입니다... 조심하세요!".format( mention_html(user.id, user.first_name), num_warns, limit) if reason: reply += "\n마지막 경고 이유:\n{}".format(html.escape(reason)) log_reason = "<b>{}:</b>" \ "\n#경고" \ "\n<b>관리자:</b> {}" \ "\n<b>유저:</b> {} (<code>{}</code>)" \ "\n<b>이유:</b> {}"\ "\n<b>횟수:</b> <code>{}/{}</code>".format(html.escape(chat.title), warner_tag, mention_html(user.id, user.first_name), user.id, reason, num_warns, limit) try: message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.HTML) except BadRequest as excp: if excp.message == "Reply message not found": # Do not reply message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.HTML, quote=False) else: raise return log_reason
def warn(user: User, chat: Chat, reason: str, message: Message, warner: User = None) -> str: if is_user_admin(chat, user.id): message.reply_text("Lanet yöneticiler, uyarılamazlar.!") return "" if warner: warner_tag = mention_html(warner.id, warner.first_name) else: warner_tag = "Automated warn filter." limit, soft_warn = sql.get_warn_setting(chat.id) num_warns, reasons = sql.warn_user(user.id, chat.id, reason) if num_warns >= limit: sql.reset_warns(user.id, chat.id) if soft_warn: # kick chat.unban_member(user.id) reply = "{} uyarıya ulaştı, bu kullanıcı gruptan atıldı!".format( limit) else: # ban chat.kick_member(user.id) reply = "{} uyarıya ulaştı, bu kullanıcı gruptan yasaklandı!".format( limit) message.bot.send_sticker(chat.id, BAN_STICKER) # banhammer marie sticker keyboard = [] reason = "<b>{}:</b>" \ "\n#WARN_BAN" \ "\n<b>Admin:</b> {}" \ "\n<b>User:</b> {}" \ "\n<b>Reason:</b> {}".format(html.escape(chat.title), warner_tag, mention_html(user.id, user.first_name), reason) else: keyboard = InlineKeyboardMarkup([[ InlineKeyboardButton("Uyarıyı kaldır", callback_data="rm_warn({})".format(user.id)) ]]) reply = "{} {}/{} uyarıya sahip... Dikkatli ol!".format( mention_markdown(user.id, user.first_name), num_warns, limit) if reason: reply += "\nSon uyarının sebebi:\n{}".format( escape_markdown(reason)) reason = "<b>{}:</b>" \ "\n#WARN" \ "\n<b>Admin:</b> {}" \ "\n<b>User:</b> {}" \ "\n<b>Reason:</b> {}".format(html.escape(chat.title), warner_tag, mention_html(user.id, user.first_name), reason) try: message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.MARKDOWN) except BadRequest as excp: if excp.message == "Reply message not found": # Do not reply message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.MARKDOWN, quote=False) else: raise return reason
def warn(user: User, chat: Chat, reason: str, message: Message, warner: User = None) -> str: if is_user_admin(chat, user.id): message.reply_text("Damn admins, can't even be warned!") return "" if not user.id or int(user.id) == 777000 or int(user.id) == 1087968824: message.reply_text( "This is the Telegram Service Bot or the Group Anonymous Bot. Kinda pointless to warn it, don't you think?" ) return "" if warner: warner_tag = mention_html(warner.id, warner.first_name) else: warner_tag = "Automated warn filter." limit, soft_warn = sql.get_warn_setting(chat.id) num_warns, reasons = sql.warn_user(user.id, chat.id, reason) if num_warns >= limit: sql.reset_warns(user.id, chat.id) if soft_warn: # kick chat.unban_member(user.id) reply = "{} warnings, {} has been kicked!".format( limit, mention_html(user.id, user.first_name)) else: # ban chat.kick_member(user.id) reply = "{} warnings, {} has been banned!".format( limit, mention_html(user.id, user.first_name)) for warn_reason in reasons: reply += "\n - {}".format(html.escape(warn_reason)) message.bot.send_sticker(chat.id, BAN_STICKER) # ban sticker keyboard = [] log_reason = "<b>{}:</b>" \ "\n#WARN_BAN" \ "\n<b>Admin:</b> {}" \ "\n<b>User:</b> {} (<code>{}</code>)" \ "\n<b>Reason:</b> {}"\ "\n<b>Counts:</b> <code>{}/{}</code>".format(html.escape(chat.title), warner_tag, mention_html(user.id, user.first_name), user.id, reason, num_warns, limit) else: keyboard = InlineKeyboardMarkup([[ InlineKeyboardButton("Remove warn", callback_data="rm_warn({})".format(user.id)) ]]) reply = "{} has {}/{} warnings... watch out!".format( mention_html(user.id, user.first_name), num_warns, limit) if reason: reply += "\nReason for last warn:\n{}".format(html.escape(reason)) log_reason = "<b>{}:</b>" \ "\n#WARN" \ "\n<b>Admin:</b> {}" \ "\n<b>User:</b> {} (<code>{}</code>)" \ "\n<b>Reason:</b> {}"\ "\n<b>Counts:</b> <code>{}/{}</code>".format(html.escape(chat.title), warner_tag, mention_html(user.id, user.first_name), user.id, reason, num_warns, limit) try: message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.HTML) except BadRequest as excp: if excp.message == "Reply message not found": # Do not reply message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.HTML, quote=False) else: raise return log_reason
def warn(user: User, chat: Chat, reason: str, message: Message, warner: User = None) -> str: bot = dispatcher.bot if is_user_admin(chat, user.id): message.reply_text(tld(chat.id, 'warns_warn_admin_no_warn')) return "" if warner: warner_tag = mention_html(warner.id, warner.first_name) else: warner_tag = tld(chat.id, 'warns_warn_admin_autofilter') limit, soft_warn = sql.get_warn_setting(chat.id) num_warns, reasons = sql.warn_user(user.id, chat.id, reason) if num_warns >= limit: sql.reset_warns(user.id, chat.id) if soft_warn: # kick chat.unban_member(user.id) reply = tld(chat.id, 'warns_max_warn_kick').format( limit, mention_html(user.id, user.first_name)) else: # ban chat.kick_member(user.id) reply = tld(chat.id, 'warns_max_warn_ban').format( limit, mention_html(user.id, user.first_name)) for warn_reason in reasons: reply += "\n - {}".format(html.escape(warn_reason)) keyboard = [] log_reason = tld(chat.id, 'warns_warn_ban_log_channel').format( html.escape(chat.title), warner_tag, mention_html(user.id, user.first_name), user.id, reason, num_warns, limit) else: keyboard = [[ InlineKeyboardButton(tld(chat.id, 'warns_btn_remove_warn'), callback_data="rm_warn({})".format(user.id)) ]] rules = rules_sql.get_rules(chat.id) if rules: keyboard[0].append( InlineKeyboardButton(tld(chat.id, 'warns_btn_rules'), url="t.me/{}?start={}".format( bot.username, chat.id))) reply = tld(chat.id, 'warns_user_warned').format( mention_html(user.id, user.first_name), num_warns, limit) if reason: reply += tld(chat.id, 'warns_latest_warn_reason').format( html.escape(reason)) log_reason = tld(chat.id, 'warns_warn_log_channel').format( html.escape(chat.title), warner_tag, mention_html(user.id, user.first_name), user.id, reason, num_warns, limit) try: message.reply_text(reply, reply_markup=InlineKeyboardMarkup(keyboard), parse_mode=ParseMode.HTML) except BadRequest as excp: if excp.message == "Reply message not found": # Do not reply message.reply_text(reply, reply_markup=InlineKeyboardMarkup(keyboard), parse_mode=ParseMode.HTML, quote=False) else: raise return log_reason
def warn(user: User, chat: Chat, reason: str, message: Message, warner: User = None) -> str: if is_user_admin(chat, user.id): message.reply_text( "Damn admins, can't even be warned!") # ERR_USER_IS_ADMIN return "" if warner: warner_tag = mention_html(warner.id, warner.first_name) else: warner_tag = "Automated warn filter." # AUTOMATED_TAG limit, soft_warn = sql.get_warn_setting(chat.id) num_warns, reasons = sql.warn_user(user.id, chat.id, reason) if num_warns >= limit: sql.reset_warns(user.id, chat.id) if soft_warn: # kick chat.unban_member(user.id) reply = "{} warnings, {} has been kicked!".format( limit, mention_html(user.id, user.first_name)) # MSG_KICK else: # ban chat.kick_member(user.id) reply = "{} warnings, {} has been banned!".format( limit, mention_html(user.id, user.first_name)) # MSG_BAN for warn_reason in reasons: reply += "\n - {}".format(html.escape(warn_reason)) message.bot.send_sticker(chat.id, BAN_STICKER) # banhammer marie sticker keyboard = [] log_reason = "<b>{}:</b>" \ "\n#WARN_BAN" \ "\n<b>Admin:</b> {}" \ "\n<b>User:</b> {} (<code>{}</code>)" \ "\n<b>Reason:</b> {}"\ "\n<b>Counts:</b> <code>{}/{}</code>".format(html.escape(chat.title), warner_tag, mention_html(user.id, user.first_name), user.id, reason, num_warns, limit) # MSG_WARNBAN_HTML else: keyboard = InlineKeyboardMarkup([[ InlineKeyboardButton("Remove warn", callback_data="rm_warn({})".format(user.id)) ]]) # BUTTON_REMOVE reply = "{} has {}/{} warnings... watch out!".format( mention_html(user.id, user.first_name), num_warns, limit) # MSG_WARN_SUCCESS if reason: reply += "\nReason for last warn:\n{}".format( html.escape(reason)) # MSG_WARN_SUCCESS_REASON log_reason = "<b>{}:</b>" \ "\n#WARN" \ "\n<b>Admin:</b> {}" \ "\n<b>User:</b> {} (<code>{}</code>)" \ "\n<b>Reason:</b> {}"\ "\n<b>Counts:</b> <code>{}/{}</code>".format(html.escape(chat.title), warner_tag, mention_html(user.id, user.first_name), user.id, reason, num_warns, limit) # MSG_WARN_HTML try: message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.HTML) except BadRequest as excp: if excp.message == "Reply message not found": # Do not reply message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.HTML, quote=False) else: raise return log_reason
def warn(user: User, chat: Chat, reason: str, message: Message, warner: User = None) -> str: if is_user_admin(chat, user.id): message.reply_text("Özünü gülünc yerə qoyursan... Admin olmadan kimi ban eləmək fikirin var ki?") return "" if warner: warner_tag = mention_html(warner.id, warner.first_name) else: warner_tag = "Automated warn filter." limit, soft_warn = sql.get_warn_setting(chat.id) num_warns, reasons = sql.warn_user(user.id, chat.id, reason) if num_warns >= limit: sql.reset_warns(user.id, chat.id) if soft_warn: # kick chat.unban_member(user.id) reply = "{} xəbərdarlıq sayı ilə, {} qrupdan atıldı!".format(limit, mention_html(user.id, user.first_name)) else: # ban chat.kick_member(user.id) reply = "{} xəbərdarlıq sayı ilə, {} ban olundu!".format(limit, mention_html(user.id, user.first_name)) for warn_reason in reasons: reply += "\n - {}".format(html.escape(warn_reason)) message.bot.send_sticker(chat.id, BAN_STICKER) # banhammer marie sticker keyboard = [] log_reason = "<b>{}:</b>" \ "\n#WARN_BAN" \ "\n<b>Admin:</b> {}" \ "\n<b>User:</b> {}" \ "\n<b>Reason:</b> {}"\ "\n<b>Counts:</b> <code>{}/{}</code>".format(html.escape(chat.title), warner_tag, mention_html(user.id, user.first_name), reason, num_warns, limit) else: keyboard = InlineKeyboardMarkup( [[InlineKeyboardButton("Xəbərdarlığı sil", callback_data="rm_warn({})".format(user.id))]]) reply = "{} sənin {}/{} xəbərdarlıq sayın var diqqətli ol!".format(mention_html(user.id, user.first_name), num_warns, limit) if reason: reply += "\nSon xəbərdarlığın səbəbi:\n{}".format(html.escape(reason)) log_reason = "<b>{}:</b>" \ "\n#WARN" \ "\n<b>Admin:</b> {}" \ "\n<b>User:</b> {}" \ "\n<b>Reason:</b> {}"\ "\n<b>Counts:</b> <code>{}/{}</code>".format(html.escape(chat.title), warner_tag, mention_html(user.id, user.first_name), reason, num_warns, limit) try: message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.HTML) except BadRequest as excp: if excp.message == "Reply message not found": # Do not reply message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.HTML, quote=False) else: raise return log_reason
def warn( bot, user: User, chat: Chat, reason: str, message: Message, warner: User = None, delete=False, ) -> str: if is_user_admin(chat, user.id): # message.reply_text("Damn admins, They are too far to be kicked!") return if user.id in TIGER_USERS: if warner: message.reply_text("TIGERs cant be warned.") else: message.reply_text( "TIGER triggered an auto warn filter!\n I can't warn TIGERs but they should avoid abusing this." ) return if user.id in WHITELIST_USERS: if warner: message.reply_text("Whitelisted users are warn immune.") else: message.reply_text( "Neptunian triggered an auto warn filter!\nI can't warn Neptunians users but they should avoid abusing this." ) return if warner: warner_tag = mention_html(warner.id, warner.first_name) else: warner_tag = "Automated warn filter." limit, soft_warn = sql.get_warn_setting(chat.id) num_warns, reasons = sql.warn_user(user.id, chat.id, reason) if num_warns >= limit: sql.reset_warns(user.id, chat.id) if soft_warn: # kick chat.unban_member(user.id) reply = ( f"<code>�</code><b>Kick Event</b>\n" f"<code> </code><b>• User:</b> {mention_html(user.id, user.first_name)}\n" f"<code> </code><b>• Count:</b> {limit}") else: # ban chat.kick_member(user.id) reply = ( f"<code>�</code><b>Ban Event</b>\n" f"<code> </code><b>• User:</b> {mention_html(user.id, user.first_name)}\n" f"<code> </code><b>• Count:</b> {limit}") for warn_reason in reasons: reply += f"\n - {html.escape(warn_reason)}" # message.bot.send_sticker(chat.id, BAN_STICKER) # Saitama's sticker keyboard = None log_reason = ( f"<b>{html.escape(chat.title)}:</b>\n" f"#WARN_BAN\n" f"<b>Admin:</b> {warner_tag}\n" f"<b>User:</b> {mention_html(user.id, user.first_name)}\n" f"<b>Reason:</b> {reason}\n" f"<b>Counts:</b> <code>{num_warns}/{limit}</code>") else: keyboard = InlineKeyboardMarkup([[ InlineKeyboardButton("🔘 Remove warn", callback_data="rm_warn({})".format(user.id)) ]]) reply = ( f"<code>�</code><b>Warn Event</b>\n" f"<code> </code><b>• User:</b> {mention_html(user.id, user.first_name)}\n" f"<code> </code><b>• Count:</b> {num_warns}/{limit}") if reason: reply += f"\n<code> </code><b>• Reason:</b> {html.escape(reason)}" log_reason = ( f"<b>{html.escape(chat.title)}:</b>\n" f"#WARN\n" f"<b>Admin:</b> {warner_tag}\n" f"<b>User:</b> {mention_html(user.id, user.first_name)}\n" f"<b>Reason:</b> {reason}\n" f"<b>Counts:</b> <code>{num_warns}/{limit}</code>") try: if delete: bot.send_message(chat.id, reply, reply_markup=keyboard, parse_mode=ParseMode.HTML) else: message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.HTML) except BadRequest as excp: if excp.message == "Reply message not found": # Do not reply bot.send_message(chat.id, reply, reply_markup=keyboard, parse_mode=ParseMode.HTML) else: raise return log_reason
def warn(user: User, chat: Chat, reason: str, message: Message, warner: User = None) -> str: if is_user_admin(chat, user.id): message.reply_text("ناکرێت بەڕێوەبەران ئاگاداربکرێنەوە!") return "" if warner: warner_tag = mention_html(warner.id, warner.first_name) else: warner_tag = "Automated warn filter." limit, soft_warn = sql.get_warn_setting(chat.id) num_warns, reasons = sql.warn_user(user.id, chat.id, reason) if num_warns >= limit: sql.reset_warns(user.id, chat.id) if soft_warn: # kick chat.unban_member(user.id) reply = "ئەوە بوو بە {} ئاگاداکردنەوە.\n بەکارهێنەر {} دەرکرا!".format( limit, mention_html(user.id, user.first_name)) else: # ban chat.kick_member(user.id) reply = "ئەوە بوو بە {} ئاگاداکردنەوە.\n بەکارهێنەر {} بانکرا!".format( limit, mention_html(user.id, user.first_name)) for warn_reason in reasons: reply += "\n - {}".format(html.escape(warn_reason)) message.bot.send_sticker(chat.id, BAN_STICKER) # banhammer marie sticker keyboard = [] log_reason = "<b>{}:</b>" \ "\n#ئاگادارکردنەوە_بان" \ "\n<b>بەڕێوەبەر:</b> {}" \ "\n<b>بەکارهێنەر:</b> {} (<code>{}</code>)" \ "\n<b>هۆکار:</b> {}"\ "\n<b>ژمارەی ئاگادارکردنەوەکان:</b> <code>{}/{}</code>".format(html.escape(chat.title), warner_tag, mention_html(user.id, user.first_name), user.id, reason, num_warns, limit) else: keyboard = InlineKeyboardMarkup([[ InlineKeyboardButton("لابردنی ئاگادارکردنەوە", callback_data="rm_warn({})".format(user.id)) ]]) reply = "بەکارهێنەر: {}\nژمارەی ئاگادارکردنەوەکان: {}/{}".format( mention_html(user.id, user.first_name), num_warns, limit) if reason: reply += "\nهۆکار بۆ کۆتا ئاگادارکردنەوە:\n{}".format( html.escape(reason)) log_reason = "<b>{}:</b>" \ "\n#WARN" \ "\n<b>Admin:</b> {}" \ "\n<b>User:</b> {} (<code>{}</code>)" \ "\n<b>Reason:</b> {}"\ "\n<b>Counts:</b> <code>{}/{}</code>".format(html.escape(chat.title), warner_tag, mention_html(user.id, user.first_name), user.id, reason, num_warns, limit) try: message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.HTML) except BadRequest as excp: if excp.message == "Reply message not found": # Do not reply message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.HTML, quote=False) else: raise return log_reason
def warn(user: User, chat: Chat, reason: str, message: Message, warner: User = None) -> str: if is_user_admin(chat, user.id): return "" if warner: warner_tag = mention_html(warner.id, warner.first_name) else: warner_tag = "خودم😎" limit, soft_warn = sql.get_warn_setting(chat.id) num_warns, reasons = sql.warn_user(user.id, chat.id, reason) if num_warns >= limit: sql.reset_warns(user.id, chat.id) if soft_warn: # kick chat.unban_member(user.id) reply = "به علت رسیدن به {} اخطار، کاربر{} اخراج شد!".format( limit, mention_html(user.id, user.first_name)) else: # ban chat.kick_member(user.id) reply = "به علت رسیدن به {} اخطار، کاربر{} بن شد!".format( limit, mention_html(user.id, user.first_name)) for warn_reason in reasons: reply += "\n - {}".format(html.escape(warn_reason)) message.bot.send_sticker(chat.id, BAN_STICKER) # banhammer marie sticker keyboard = [] log_reason = "<b>{}:</b>" \ "\n#حذف_کاربر" \ "\n<b>مدیر:</b> {}" \ "\n<b>کاربر:</b> {} (<code>{}</code>)" \ "\n<b>به دلیل:</b> {}"\ "\n<b>تعداداخطار:</b> <code>{}/{}</code>".format(html.escape(chat.title), warner_tag, mention_html(user.id, user.first_name), user.id, reason, num_warns, limit) else: keyboard = InlineKeyboardMarkup([[ InlineKeyboardButton("حذف اخطار", callback_data="rm_warn({})".format(user.id)) ]]) reply = "{} تو {}/{} اخطار داری ... مراقب باش!".format( mention_html(user.id, user.first_name), num_warns, limit) if reason: reply += "\nدلیل اخرین اخطاری که گرفتی:\n{}".format( html.escape(reason)) log_reason = "<b>{}:</b>" \ "\n#اخطار" \ "\n<b>مدیر:</b> {}" \ "\n<b>کاربر:</b> {} (<code>{}</code>)" \ "\n<b>به دلیل:</b> {}"\ "\n<b>تعداداخطار:</b> <code>{}/{}</code>".format(html.escape(chat.title), warner_tag, mention_html(user.id, user.first_name), user.id, reason, num_warns, limit) try: message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.HTML) except BadRequest as excp: if excp.message == "Reply message not found": # Do not reply message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.HTML, quote=False) else: raise return log_reason
def warn( user: User, chat: Chat, reason: str, message: Message, warner: User = None ) -> str: if is_user_admin(chat, user.id): message.reply_text("Gli amministratori non possono essere ammuniti.") return "" if warner: warner_tag = mention_html(warner.id, warner.first_name) else: warner_tag = "Filtro di ammonimento automatico." limit, soft_warn = sql.get_warn_setting(chat.id) num_warns, reasons = sql.warn_user(user.id, chat.id, reason) if num_warns >= limit: sql.reset_warns(user.id, chat.id) if soft_warn: # kick chat.unban_member(user.id) reply = "{} ammonimenti, {} è stato cacciato.".format( limit, mention_html(user.id, user.first_name) ) else: # ban chat.kick_member(user.id) reply = "{} ammonimenti, {} è stato bandito.".format( limit, mention_html(user.id, user.first_name) ) for warn_reason in reasons: reply += "\n - {}".format(html.escape(warn_reason)) message.bot.send_sticker(chat.id, BAN_STICKER) # banhammer marie sticker keyboard = [] log_reason = ( "<b>{}:</b>" "\n#WARN_BAN" "\n<b>Admin:</b> {}" "\n<b>Utente:</b> {} (<code>{}</code>)" "\n<b>Ragione:</b> {}" "\n<b>Conteggio:</b> <code>{}/{}</code>".format( html.escape(chat.title), warner_tag, mention_html(user.id, user.first_name), user.id, reason, num_warns, limit, ) ) else: keyboard = InlineKeyboardMarkup( [ [ InlineKeyboardButton( "Rimuovere ammonimento", callback_data="rm_warn({})".format(user.id), ) ] ] ) reply = "{} ha {}/{} ammonimenti... Per favore attieniti al Codice di Condotta e ricordati di rispettare sempre gli altri utenti.".format( mention_html(user.id, user.first_name), num_warns, limit ) if reason: reply += "\nRagione dell'ultimo ammonimento:\n{}".format( html.escape(reason) ) log_reason = ( "<b>{}:</b>" "\n#WARN" "\n<b>Admin:</b> {}" "\n<b>Utente:</b> {} (<code>{}</code>)" "\n<b>Ragione:</b> {}" "\n<b>Conteggio:</b> <code>{}/{}</code>".format( html.escape(chat.title), warner_tag, mention_html(user.id, user.first_name), user.id, reason, num_warns, limit, ) ) try: message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.HTML) except BadRequest as excp: if excp.message == "Reply message not found": # Do not reply message.reply_text( reply, reply_markup=keyboard, parse_mode=ParseMode.HTML, quote=False ) else: raise return log_reason
def warn(user: User, chat: Chat, reason: str, message: Message, warner: User = None) -> str: if is_user_admin(chat, user.id): message.reply_text("Damn admins, inko warn karne ke Liye jadu sikhna hoga @king_un_007 jadu sikhao bhai!") return "" if warner: warner_tag = mention_html(warner.id, warner.first_name) else: warner_tag = "Automated warn filter." limit, soft_warn = sql.get_warn_setting(chat.id) num_warns, reasons = sql.warn_user(user.id, chat.id, reason) if num_warns >= limit: sql.reset_warns(user.id, chat.id) if soft_warn: # kick chat.unban_member(user.id) reply = "{} warnings, {} Laat marke nikala gya!".format(limit, mention_html(user.id, user.first_name)) else: # ban chat.kick_member(user.id) reply = "{} warnings, {} Pehli fursat me BAN kardiya!".format(limit, mention_html(user.id, user.first_name)) for warn_reason in reasons: reply += "\n - {}".format(html.escape(warn_reason)) message.bot.send_sticker(chat.id, BAN_STICKER) # banhammer marie sticker keyboard = [] log_reason = "<b>{}:</b>" \ "\n#WARN_BAN" \ "\n<b>Admin:</b> {}" \ "\n<b>User:</b> {}" \ "\n<b>Reason:</b> {}"\ "\n<b>Counts:</b> <code>{}/{}</code>".format(html.escape(chat.title), warner_tag, mention_html(user.id, user.first_name), reason, num_warns, limit) else: keyboard = InlineKeyboardMarkup( [[InlineKeyboardButton("Remove Warning ", callback_data="rm_warn({})".format(user.id))]]) reply = "{} ke pass {}/{} warnings h ... sudharja beta!".format(mention_html(user.id, user.first_name), num_warns, limit) if reason: reply += "\nReason for last warn:\n{}".format(html.escape(reason)) log_reason = "<b>{}:</b>" \ "\n#WARN" \ "\n<b>Admin:</b> {}" \ "\n<b>User:</b> {}" \ "\n<b>Reason:</b> {}"\ "\n<b>Counts:</b> <code>{}/{}</code>".format(html.escape(chat.title), warner_tag, mention_html(user.id, user.first_name), reason, num_warns, limit) try: message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.HTML) except BadRequest as excp: if excp.message == "Reply message not found": # Do not reply message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.HTML, quote=False) else: raise return log_reason
def warn(user: User, chat: Chat, reason: str, message: Message, warner: User = None) -> str: if is_user_admin(chat, user.id): message.reply_text("لعنة مدراء، لا يمكن تحذيرها حتى!") return "" if warner: warner_tag = mention_html(warner.id, warner.first_name) else: warner_tag = "مرشح التحذير الآلي." limit, soft_warn = sql.get_warn_setting(chat.id) num_warns, reasons = sql.warn_user(user.id, chat.id, reason) if num_warns >= limit: sql.reset_warns(user.id, chat.id) if soft_warn: # kick chat.unban_member(user.id) reply = "{} تحذيرات، {} قد ركل!".format( limit, mention_html(user.id, user.first_name)) else: # ban chat.kick_member(user.id) reply = "{} تحذيرات، {} قد حظر!".format( limit, mention_html(user.id, user.first_name)) for warn_reason in reasons: reply += "\n - {}".format(html.escape(warn_reason)) message.bot.send_sticker(chat.id, BAN_STICKER) # banhammer marie sticker keyboard = [] log_reason = "<b>{}:</b>" \ "\n#WARN_BAN" \ "\n<b>Admin:</b> {}" \ "\n<b>User:</b> {}" \ "\n<b>Reason:</b> {}"\ "\n<b>Counts:</b> <code>{}/{}</code>".format(html.escape(chat.title), warner_tag, mention_html(user.id, user.first_name), reason, num_warns, limit) else: keyboard = InlineKeyboardMarkup([[ InlineKeyboardButton("إزالة تحذير", callback_data="rm_warn({})".format(user.id)) ]]) reply = "{} لديه {} / {} تحذيرات ... احترس يا حمار!".format( mention_html(user.id, user.first_name), num_warns, limit) if reason: reply += "\nسبب آخر تحذير:\n{}".format(html.escape(reason)) log_reason = "<b>{}:</b>" \ "\n#WARN" \ "\n<b>Admin:</b> {}" \ "\n<b>User:</b> {}" \ "\n<b>Reason:</b> {}"\ "\n<b>Counts:</b> <code>{}/{}</code>".format(html.escape(chat.title), warner_tag, mention_html(user.id, user.first_name), reason, num_warns, limit) try: message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.HTML) except BadRequest as excp: if excp.message == "رسالة الرد غير موجودة": # Do not reply message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.HTML, quote=False) else: raise return log_reason
def warn(user: User, chat: Chat, reason: str, message: Message, warner: User = None) -> str: if is_user_admin(chat, user.id): # message.reply_text("അഡ്മിൻ ആണ്... warn ചെയ്യാൻ പറ്റില്ല!") return "" if warner: warner_tag = mention_html(warner.id, warner.first_name) else: warner_tag = "Automated warn filter." limit, soft_warn = sql.get_warn_setting(chat.id) num_warns, reasons = sql.warn_user(user.id, chat.id, reason) if num_warns >= limit: sql.reset_warns(user.id, chat.id) if soft_warn: # kick chat.unban_member(user.id) reply = "{} warnings, {} നെ എടുത്തു വെളിയിൽ കളഞ്ഞു!".format( limit, mention_html(user.id, user.first_name)) else: # ban chat.kick_member(user.id) reply = "{} warnings, {} ന് ബണ്ണ് കൊടുത്തു വിട്ടിട്ടുണ്ട്!".format( limit, mention_html(user.id, user.first_name)) for warn_reason in reasons: reply += "\n - {}".format(html.escape(warn_reason)) message.bot.send_sticker(chat.id, BAN_STICKER) # banhammer marie sticker keyboard = [] log_reason = "<b>{}:</b>" \ "\n#WARN_BAN" \ "\n<b>Admin:</b> {}" \ "\n<b>User:</b> {} (<code>{}</code>)" \ "\n<b>Reason:</b> {}"\ "\n<b>Counts:</b> <code>{}/{}</code>".format(html.escape(chat.title), warner_tag, mention_html(user.id, user.first_name), user.id, reason, num_warns, limit) else: keyboard = InlineKeyboardMarkup([[ InlineKeyboardButton("Remove warn (admin only)", callback_data="rm_warn({})".format(user.id)) ]]) reply = "{} has been WARNED! \nCount: {}/{}".format( mention_html(user.id, user.first_name), num_warns, limit) if reason: reply += "\nReason for last warn:\n{}".format(html.escape(reason)) log_reason = "<b>{}:</b>" \ "\n#WARN" \ "\n<b>Admin:</b> {}" \ "\n<b>User:</b> {} (<code>{}</code>)" \ "\n<b>Reason:</b> {}"\ "\n<b>Counts:</b> <code>{}/{}</code>".format(html.escape(chat.title), warner_tag, mention_html(user.id, user.first_name), user.id, reason, num_warns, limit) try: message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.HTML) except BadRequest as excp: if excp.message == "Replied message not found": # Do not reply message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.HTML, quote=False) else: raise return log_reason
def warn(user: User, chat: Chat, reason: str, message: Message, warner: User = None) -> str: if is_user_admin(chat, user.id): message.reply_text("Cholerni administratorzy, nie można nawet im dać ostrzeżenia!") return "" if warner: warner_tag = mention_html(warner.id, warner.first_name) else: warner_tag = "Zautomatyzowany filtr ostrzeżeń." limit, soft_warn = sql.get_warn_setting(chat.id) num_warns, reasons = sql.warn_user(user.id, chat.id, reason) if num_warns >= limit: sql.reset_warns(user.id, chat.id) if soft_warn: # kick chat.unban_member(user.id) reply = "{} ostrzeżeń, {} został wykopany!".format(limit, mention_html(user.id, user.first_name)) else: # ban chat.kick_member(user.id) reply = "{} ostrzeżeń, {} został wykopany!".format(limit, mention_html(user.id, user.first_name)) for warn_reason in reasons: reply += "\n - {}".format(html.escape(warn_reason)) message.bot.send_sticker(chat.id, BAN_STICKER) # banhammer marie sticker keyboard = [] log_reason = "<b>{}:</b>" \ "\n#BAN_PRZEZ_OSTRZEŻENIA" \ "\n<b>Administrator:</b> {}" \ "\n<b>Futrzak:</b> {}" \ "\n<b>Powód:</b> {}"\ "\n<b>Ilość</b> <code>{}/{}</code>".format(html.escape(chat.title), warner_tag, mention_html(user.id, user.first_name), reason, num_warns, limit) else: keyboard = InlineKeyboardMarkup( [[InlineKeyboardButton("Usuń ostrzeżenie", callback_data="rm_warn({})".format(user.id))]]) reply = "{} ma {}/{} ostrzeżeń... uważaj!".format(mention_html(user.id, user.first_name), num_warns, limit) if reason: reply += "\nPowód ostatniego ostrzeżenia:\n{}".format(html.escape(reason)) log_reason = "<b>{}:</b>" \ "\n#OSTEŻENIE" \ "\n<b>Administrator:</b> {}" \ "\n<b>Futrzak:</b> {}" \ "\n<b>Powód:</b> {}"\ "\n<b>Ilość:</b> <code>{}/{}</code>".format(html.escape(chat.title), warner_tag, mention_html(user.id, user.first_name), reason, num_warns, limit) try: message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.HTML) except BadRequest as excp: if excp.message == "Reply message not found": # Do not reply message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.HTML, quote=False) else: raise return log_reason
def __import_data__(chat_id, data): for user_id, count in data.get('warns', {}).items(): for x in range(int(count)): sql.warn_user(user_id, chat_id)
def warn(user: User, chat: Chat, reason: str, message: Message, warner: User = None) -> str: if is_user_admin(chat, user.id): message.reply_text("නරක පරිපාලකයින්, අනතුරු ඇඟවීමට පවා නොහැකිය!") return "" if warner: warner_tag = mention_html(warner.id, warner.first_name) else: warner_tag = "Automated warn filter." limit, soft_warn = sql.get_warn_setting(chat.id) num_warns, reasons = sql.warn_user(user.id, chat.id, reason) if num_warns >= limit: sql.reset_warns(user.id, chat.id) if soft_warn: # kick chat.unban_member(user.id) reply = "{} warnings, {} has been kicked!".format( limit, mention_html(user.id, user.first_name)) else: # ban chat.kick_member(user.id) reply = "{} warnings, {} has been banned!".format( limit, mention_html(user.id, user.first_name)) for warn_reason in reasons: reply += "\n - {}".format(html.escape(warn_reason)) message.bot.send_sticker(chat.id, BAN_STICKER) # banhammer marie sticker keyboard = [] log_reason = "<b>{}:</b>" \ "\n#WARN_BAN" \ "\n<b>Admin:</b> {}" \ "\n<b>User:</b> {}" \ "\n<b>Reason:</b> {}"\ "\n<b>Counts:</b> <code>{}/{}</code>".format(html.escape(chat.title), warner_tag, mention_html(user.id, user.first_name), reason, num_warns, limit) else: keyboard = InlineKeyboardMarkup([[ InlineKeyboardButton("Remove warn", callback_data="rm_warn({})".format(user.id)) ]]) reply = "{} has {}/{} අනතුරු ඇඟවීම් ... පරිස්සම් වන්න!".format( mention_html(user.id, user.first_name), num_warns, limit) if reason: reply += "\nReason for last warn:\n{}".format(html.escape(reason)) log_reason = "<b>{}:</b>" \ "\n#WARN" \ "\n<b>Admin:</b> {}" \ "\n<b>User:</b> {}" \ "\n<b>Reason:</b> {}"\ "\n<b>Counts:</b> <code>{}/{}</code>".format(html.escape(chat.title), warner_tag, mention_html(user.id, user.first_name), reason, num_warns, limit) try: message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.HTML) except BadRequest as excp: if excp.message == "පිළිතුරු පණිවිඩය හමු නොවීය": # Do not reply message.reply_text(reply, reply_markup=keyboard, parse_mode=ParseMode.HTML, quote=False) else: raise return log_reason