async def _(event): if event.is_private: return chat_id = event.chat_id sender = event.sender_id rules = sql.get_rules(chat_id) if rules: await event.reply( "Click on the below button to get this group's rules 👇", buttons=[[Button.inline('Rules', data=f'start-rules-{sender}')]]) else: await event.reply( "The group admins haven't set any rules for this chat yet. " "This probably doesn't mean it's lawless though...!")
async def rm_warn(event): rules = sql.get_rules(event.chat_id) # print(rules) user_id = int(event.pattern_match.group(1)) if not event.sender_id == user_id: await event.answer("You haven't send that command !") return text = f"The rules for **{event.chat.title}** are:\n\n{rules}" try: await tbot.send_message(user_id, text, parse_mode="markdown", link_preview=False) except Exception: await event.answer( "I can't send you the rules as you haven't started me in PM, first start me !", alert=True)
async def rm_warn(event): rules = rulesql.get_rules(event.chat_id) if not rules: rules = "The group admins haven't set any rules for that chat yet.\nThis probably doesn't mean it's lawless though...!" user_id = int(event.pattern_match.group(1)) if not event.sender_id == user_id: await event.answer("You haven't been warned !") return text = f"The rules for **{event.chat.title}** are:\n\n{rules}" try: await tbot.send_message(user_id, text, parse_mode="markdown", link_preview=False) except Exception: await event.answer( "I can't send you the rules as you haven't started me in PM, first start me !", alert=True)
def send_rules(update, chat_id, from_pm=False): bot = dispatcher.bot user = update.effective_user # type: Optional[User] try: chat = bot.get_chat(chat_id) except BadRequest as excp: if excp.message == "Chat not found" and from_pm: bot.send_message( user.id, "The rules shortcut for this chat hasn't been set properly! Ask admins to " "fix this.", ) return raise rules = sql.get_rules(chat_id) text = f"The rules for *{escape_markdown(chat.title)}* are:\n\n{rules}" if from_pm and rules: bot.send_message(user.id, text, parse_mode=ParseMode.MARKDOWN, disable_web_page_preview=True) elif from_pm: bot.send_message( user.id, "The group admins haven't set any rules for this chat yet. " "This probably doesn't mean it's lawless though...!", ) elif rules: update.effective_message.reply_text( "Contact me in PM to get this group's rules.", reply_markup=InlineKeyboardMarkup([[ InlineKeyboardButton( text="Rules", url=f"t.me/{bot.username}?start={chat_id}") ]]), ) else: update.effective_message.reply_text( "The group admins haven't set any rules for this chat yet. " "This probably doesn't mean it's lawless though...!")
async def _(event): try: if event.fwd_from: return if event.is_private: return if event.is_group: if await is_register_admin(event.input_chat, event.message.sender_id): pass else: return quew = event.pattern_match.group(1) if event.reply_to_msg_id: warn_reason = event.text[len("/warn "):] if not warn_reason: await event.reply("Please provide a reason for warning.") return reply_message = await event.get_reply_message() if not await is_register_admin(event.input_chat, reply_message.sender_id): pass else: await event.reply("I am not gonna warn an admin") return if reply_message.sender_id == BOT_ID: await event.reply("Why are you trying to warn me ?") return limit, soft_warn = sql.get_warn_setting(event.chat_id) num_warns, reasons = sql.warn_user(reply_message.sender_id, event.chat_id, warn_reason) if num_warns >= limit: sql.reset_warns(reply_message.sender_id, event.chat_id) if sql.get_warn_strength(event.chat_id) == "kick": await tbot.kick_participant(event.chat_id, reply_message.sender_id) reply = "{} warnings, <u><a href='tg://user?id={}'>{}</a></u> has been kicked!".format( limit, reply_message.sender_id, reply_message.sender.first_name) await event.reply(reply, parse_mode="html") return if sql.get_warn_strength(event.chat_id) == "ban": BANNED_RIGHTS = ChatBannedRights( until_date=None, view_messages=True, send_messages=True, send_media=True, send_stickers=True, send_gifs=True, send_games=True, send_inline=True, embed_links=True, ) await tbot( EditBannedRequest(event.chat_id, reply_message.sender_id, BANNED_RIGHTS)) reply = "{} warnings, <u><a href='tg://user?id={}'>{}</a></u> has been banned!".format( limit, reply_message.sender_id, reply_message.sender.first_name) await event.reply(reply, parse_mode="html") return if sql.get_warn_strength(event.chat_id) == "mute": MUTE_RIGHTS = ChatBannedRights(until_date=None, send_messages=True) await tbot( EditBannedRequest(event.chat_id, reply_message.sender_id, MUTE_RIGHTS)) reply = "{} warnings, <u><a href='tg://user?id={}'>{}</a></u> has been muted!".format( limit, reply_message.sender_id, reply_message.sender.first_name) await event.reply(reply, parse_mode="html") return else: reply = "<u><a href='tg://user?id={}'>{}</a></u> has {}/{} warnings... watch out!".format( reply_message.sender_id, reply_message.sender.first_name, num_warns, limit) if warn_reason: reply += "\nReason: {}".format(html.escape(warn_reason)) chat_id = event.chat_id rules = rulesql.get_rules(chat_id) if rules: await event.reply( reply, buttons=[[ Button.inline( "Remove Warn ✖️", data=f"rm_warn-{reply_message.sender_id}"), Button.inline( "Rules ✝️", data=f"start-ruleswarn-{reply_message.sender_id}"), ]], parse_mode="html", ) else: await event.reply( reply, buttons=[[ Button.inline( "Remove Warn ✖️", data=f"rm_warn-{reply_message.sender_id}") ]], parse_mode="html", ) if not event.reply_to_msg_id and quew: if "|" in quew: iid, reasonn = quew.split("|") cid = iid.strip() reason = reasonn.strip() if cid.isnumeric(): cid = int(cid) entity = await tbot.get_entity(cid) try: r_sender_id = entity.id r_sender_fname = entity.first_name except Exception: await event.reply("Couldn't fetch that user.") return if not reason: await event.reply("Please provide a reason for warning.") return warn_reason = reason if not await is_register_admin(event.input_chat, r_sender_id): pass else: await event.reply("I am not gonna warn an admin") return if r_sender_id == BOT_ID: await event.reply("Why are you trying to warn me ?") return limit, soft_warn = sql.get_warn_setting(event.chat_id) num_warns, reasons = sql.warn_user(r_sender_id, event.chat_id, warn_reason) if num_warns >= limit: sql.reset_warns(r_sender_id, event.chat_id) if sql.get_warn_strength(event.chat_id) == "kick": await tbot.kick_participant(event.chat_id, r_sender_id) reply = "{} warnings, <u><a href='tg://user?id={}'>{}</a></u> has been kicked!".format( limit, r_sender_id, r_sender_fname) await event.reply(reply, parse_mode="html") return if sql.get_warn_strength(event.chat_id) == "ban": BANNED_RIGHTS = ChatBannedRights( until_date=None, view_messages=True, send_messages=True, send_media=True, send_stickers=True, send_gifs=True, send_games=True, send_inline=True, embed_links=True, ) await tbot( EditBannedRequest(event.chat_id, r_sender_id, BANNED_RIGHTS)) reply = "{} warnings, <u><a href='tg://user?id={}'>{}</a></u> has been banned!".format( limit, r_sender_id, r_sender_fname) await event.reply(reply, parse_mode="html") return if sql.get_warn_strength(event.chat_id) == "mute": MUTE_RIGHTS = ChatBannedRights(until_date=None, send_messages=True) await tbot( EditBannedRequest(event.chat_id, r_sender_id, MUTE_RIGHTS)) reply = "{} warnings, <u><a href='tg://user?id={}'>{}</a></u> has been muted!".format( limit, r_sender_id, r_sender_fname) await event.reply(reply, parse_mode="html") return else: reply = "<u><a href='tg://user?id={}'>{}</a></u> has {}/{} warnings... watch out!".format( r_sender_id, r_sender_fname, num_warns, limit) if warn_reason: reply += "\nReason: {}".format(html.escape(warn_reason)) chat_id = event.chat_id rules = rulesql.get_rules(chat_id) if rules: await event.reply( reply, buttons=[[ Button.inline("Remove Warn ✖️", data=f"rm_warn-{r_sender_id}"), Button.inline("Rules ✝️", data=f"start-ruleswarn-{r_sender_id}"), ]], parse_mode="html", ) else: await event.reply( reply, buttons=[[ Button.inline("Remove Warn ✖️", data=f"rm_warn-{r_sender_id}") ]], parse_mode="html", ) except Exception as e: print(e)
async def _(event): cws = get_current_welcome_settings(event.chat_id) if cws: # logger.info(event.stringify()) """user_added=False, user_joined=True, user_left=False, user_kicked=False,""" if event.user_joined: if cws.should_clean_welcome: try: await tbot.delete_messages( # pylint:disable=E0602 event.chat_id, cws.previous_welcome) except Exception as e: # pylint:disable=C0103,W0703 logger.warn(str(e)) # pylint:disable=E0602 a_user = await event.get_user() chat = await event.get_chat() me = await tbot.get_me() title = chat.title if chat.title else "this chat" participants = await event.client.get_participants(chat) count = len(participants) mention = "[{}](tg://user?id={})".format(a_user.first_name, a_user.id) first = a_user.first_name last = a_user.last_name if last: fullname = f"{first} {last}" else: fullname = first username = (f"@{me.username}" if me.username else f"[Me](tg://user?id={me.id})") userid = a_user.id current_saved_welcome_message = cws.custom_welcome_message mention = "[{}](tg://user?id={})".format(a_user.first_name, a_user.id) rules = sql.get_rules(event.chat_id) if rules: current_message = await event.reply( current_saved_welcome_message.format( mention=mention, title=title, count=count, first=first, last=last, fullname=fullname, username=username, userid=userid, ), file=cws.media_file_id, buttons=[[ Button.inline('Rules ✝️', data=f'start-rules-{userid}') ]]) update_previous_welcome(event.chat_id, current_message.id) else: current_message = await event.reply( current_saved_welcome_message.format( mention=mention, title=title, count=count, first=first, last=last, fullname=fullname, username=username, userid=userid, ), file=cws.media_file_id, ) update_previous_welcome(event.chat_id, current_message.id)
async def _(event): if event.fwd_from: return if event.is_private: return if event.is_group: if await is_register_admin(event.input_chat, event.message.sender_id): pass else: return warn_reason = event.text[len("/warn "):] if not warn_reason: await event.reply("Please provide a reason for warning.") return reply_message = await event.get_reply_message() if not await is_register_admin(event.input_chat, reply_message.sender_id): pass else: await event.reply("I am not gonna warn an admin") return limit, soft_warn = sql.get_warn_setting(event.chat_id) num_warns, reasons = sql.warn_user(reply_message.sender_id, event.chat_id, warn_reason) if num_warns >= limit: sql.reset_warns(reply_message.sender_id, event.chat_id) if sql.get_warn_strength(event.chat_id) == "kick": await tbot.kick_participant(event.chat_id, reply_message.sender_id) reply = "{} warnings, <u><a href='tg://user?id={}'>user</a></u> has been kicked!".format( limit, reply_message.sender_id) await event.reply(reply, parse_mode="html") return if sql.get_warn_strength(event.chat_id) == "ban": BANNED_RIGHTS = ChatBannedRights( until_date=None, view_messages=True, send_messages=True, send_media=True, send_stickers=True, send_gifs=True, send_games=True, send_inline=True, embed_links=True, ) await tbot( EditBannedRequest(event.chat_id, reply_message.sender_id, BANNED_RIGHTS)) reply = "{} warnings, <u><a href='tg://user?id={}'>user</a></u> has been banned!".format( limit, reply_message.sender_id) await event.reply(reply, parse_mode="html") return if sql.get_warn_strength(event.chat_id) == "mute": MUTE_RIGHTS = ChatBannedRights(until_date=None, send_messages=True) await tbot( EditBannedRequest(event.chat_id, reply_message.sender_id, MUTE_RIGHTS)) reply = "{} warnings, <u><a href='tg://user?id={}'>user</a></u> has been muted!".format( limit, reply_message.sender_id) await event.reply(reply, parse_mode="html") return else: reply = "<u><a href='tg://user?id={}'>user</a></u> has {}/{} warnings... watch out!".format( reply_message.sender_id, num_warns, limit) if warn_reason: reply += "\nReason: {}".format(html.escape(warn_reason)) chat_id = event.chat_id rules = rulesql.get_rules(chat_id) if rules: await event.reply( reply, buttons=[[ Button.inline('Remove Warn ✖️', data=f"rm_warn-{reply_message.sender_id}"), Button.inline( 'Rules ✝️', data=f'start-ruleswarn-{reply_message.sender_id}') ]], parse_mode="html") else: await event.reply(reply, buttons=[[ Button.inline( 'Remove Warn ✖️', data=f"rm_warn-{reply_message.sender_id}") ]], parse_mode="html")