# Ultroid - UserBot # Copyright (C) 2020 TeamUltroid # # This file is a part of < https://github.com/TeamUltroid/Ultroid/ > # PLease read the GNU Affero General Public License in # . """ ✘ Commands Available - • `{i}afk ` AFK means away from keyboard, After u active this if Someone tag or msg u then It auto Reply Him/her, (Note : By Reply To any media U can set media afk too). """ import asyncio from datetime import datetime from telethon import events from telethon.tl import functions, types from . import * global USER_AFK global afk_time global last_afk_message global last_afk_msg global afk_start global afk_end USER_AFK = {} afk_time = None last_afk_message = {} last_afk_msg = {} afk_start = {} LOG = Var.LOG_CHANNEL @ultroid_bot.on(events.NewMessage(outgoing=True)) @ultroid_bot.on(events.MessageEdited(outgoing=True)) async def set_not_afk(event): global USER_AFK global afk_time global last_afk_message global afk_start global afk_end back_alive = datetime.now() afk_end = back_alive.replace(microsecond=0) if afk_start != {}: total_afk_time = str((afk_end - afk_start)) current_message = event.message.message if "afk" not in current_message and "yes" in USER_AFK: try: if pic.endswith((".tgs", ".webp")): shite = await ultroid_bot.send_message(event.chat_id, file=pic) shites = await ultroid_bot.send_message( event.chat_id, get_string("afk_1").format(total_afk_time), ) else: shite = await ultroid_bot.send_message( event.chat_id, get_string("afk_1").format(total_afk_time), file=pic, ) except BaseException: shite = await ultroid_bot.send_message( event.chat_id, get_string("afk_1").format(total_afk_time) ) try: try: if pic.endswith((".tgs", ".webp")): await ultroid_bot.send_message(LOG, file=pic) await ultroid_bot.send_message( LOG, get_string("afk_2").format(total_afk_time), ) else: await ultroid_bot.send_message( LOG, get_string("afk_2").format(total_afk_time), file=pic, ) except BaseException: await ultroid_bot.send_message( LOG, get_string("afk_2").format(total_afk_time), ) except BaseException: pass await asyncio.sleep(3) await shite.delete() try: await shites.delete() except BaseException: pass USER_AFK = {} afk_time = None @ultroid_bot.on( events.NewMessage(incoming=True, func=lambda e: bool(e.mentioned or e.is_private)) ) async def on_afk(event): if event.fwd_from: return global USER_AFK global afk_time global last_afk_message global afk_start global afk_end back_alivee = datetime.now() afk_end = back_alivee.replace(microsecond=0) if afk_start != {}: total_afk_time = str((afk_end - afk_start)) current_message_text = event.message.message.lower() if "afk" in current_message_text: return False if USER_AFK and not (await event.get_sender()).bot: msg = None if reason: message_to_reply = get_string("afk_3").format(total_afk_time, reason) else: message_to_reply = get_string("afk_4").format(total_afk_time) try: if pic.endswith((".tgs", ".webp")): msg = await event.reply(file=pic) msgs = await event.reply(message_to_reply) else: msg = await event.reply(message_to_reply, file=pic) except BaseException: msg = await event.reply(message_to_reply) await asyncio.sleep(2.5) if event.chat_id in last_afk_message: await last_afk_message[event.chat_id].delete() try: if event.chat_id in last_afk_msg: await last_afk_msg[event.chat_id].delete() except BaseException: pass last_afk_message[event.chat_id] = msg try: if msgs: last_afk_msg[event.chat_id] = msgs except BaseException: pass @ultroid_cmd(pattern=r"afk ?(.*)") async def _(event): if event.fwd_from: return reply = await event.get_reply_message() global USER_AFK global afk_time global last_afk_message global last_afk_msg global afk_start global afk_end global reason global pic USER_AFK = {} afk_time = None last_afk_message = {} last_afk_msg = {} afk_end = {} start_1 = datetime.now() afk_start = start_1.replace(microsecond=0) reason = event.pattern_match.group(1) if reply: pic = await event.client.download_media(reply) else: pic = None if not USER_AFK: last_seen_status = await ultroid_bot( functions.account.GetPrivacyRequest(types.InputPrivacyKeyStatusTimestamp()) ) if isinstance(last_seen_status.rules, types.PrivacyValueAllowAll): afk_time = datetime.datetime.now() USER_AFK = f"yes: {reason} {pic}" if reason: try: if pic.endswith((".tgs", ".webp")): await ultroid_bot.send_message(event.chat_id, file=pic) await ultroid_bot.send_message( event.chat_id, get_string("afk_5").format(reason) ) else: await ultroid_bot.send_message( event.chat_id, get_string("afk_5").format(reason), file=pic ) except BaseException: await ultroid_bot.send_message( event.chat_id, get_string("afk_5").format(reason) ) else: try: if pic.endswith((".tgs", ".webp")): await ultroid_bot.send_message(event.chat_id, file=pic) await ultroid_bot.send_message(event.chat_id, get_string("afk_6")) else: await ultroid_bot.send_message( event.chat_id, get_string("afk_6"), file=pic ) except BaseException: await ultroid_bot.send_message(event.chat_id, get_string("afk_6")) await event.delete() try: if reason and pic: if pic.endswith((".tgs", ".webp")): await ultroid_bot.send_message(LOG, file=pic) await ultroid_bot.send_message( LOG, get_string("afk_7").format(reason) ) else: await ultroid_bot.send_message( LOG, get_string("afk_7").format(reason), file=pic ) elif reason: await ultroid_bot.send_message(LOG, get_string("afk_7").format(reason)) elif pic: if pic.endswith((".tgs", ".webp")): await ultroid_bot.send_message(LOG, file=pic) await ultroid_bot.send_message(LOG, get_string("afk_8")) else: await ultroid_bot.send_message(LOG, get_string("afk_8"), file=pic) else: await ultroid_bot.send_message(LOG, get_string("afk_8")) except BaseException: pass HELP.update({f"{__name__.split('.')[1]}": f"{__doc__.format(i=HNDLR)}"})