Files
Ultroid-fork/plugins/afk.py
xditya 066275af66 fixes, new plugins
- add fstat and fedinfo
2021-02-26 21:55:38 +05:30

253 lines
8.4 KiB
Python

# 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
# <https://www.github.com/TeamUltroid/Ultroid/blob/main/LICENSE/>.
"""
✘ Commands Available -
• `{i}afk <optional reason>`
AFK means away from keyboard,
After u active this if Someting 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,
"`No Longer Afk`\n\nWas afk for~ " + total_afk_time + "`",
)
else:
shite = await ultroid_bot.send_message(
event.chat_id,
"`No Longer Afk`\n\nWas afk for~ " + total_afk_time + "`",
file=pic,
)
except BaseException:
shite = await ultroid_bot.send_message(
event.chat_id, "`No Longer Afk \nWas afk for " + total_afk_time + "`"
)
try:
try:
if pic.endswith((".tgs", ".webp")):
await ultroid_bot.send_message(LOG, file=pic)
await ultroid_bot.send_message(
LOG,
"#AFKFALSE \nSet AFK mode to False\n"
+ "Back alive!\nNo Longer afk.\n Was afk for`"
+ total_afk_time
+ "`",
)
else:
await ultroid_bot.send_message(
LOG,
"#AFKFALSE \nSet AFK mode to False\n"
+ "Back alive!\nNo Longer afk.\n Was afk for`"
+ total_afk_time
+ "`",
file=pic,
)
except BaseException:
await ultroid_bot.send_message(
LOG,
"#AFKFALSE \nSet AFK mode to False\n"
+ "Back alive!\nNo Longer afk.\n Was afk for`"
+ 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 = (
f"__Master #AFK since__ `{total_afk_time}`\n\n"
+ f"__"
+ f"\n\n**Reason:- `**{reason}`"
)
else:
message_to_reply = f"__Master #AFK since__ `{total_afk_time}`\n\n" + f"__"
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, f"Afk __because ~ {reason}__"
)
else:
await ultroid_bot.send_message(
event.chat_id, f"Afk __because ~ {reason}__", file=pic
)
except BaseException:
await ultroid_bot.send_message(
event.chat_id, f"Afk __because ~ {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, f"**I am Going afk!**"
)
else:
await ultroid_bot.send_message(
event.chat_id, f"**I am Going afk!**", file=pic
)
except BaseException:
await ultroid_bot.send_message(event.chat_id, f"**I am Going afk!**")
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, f"AFK mode to On and Reason is {reason}"
)
else:
await ultroid_bot.send_message(
LOG, f"AFK mode to On and Reason is {reason}", file=pic
)
elif reason:
await ultroid_bot.send_message(
LOG, f"AFK mode to On and Reason is {reason}"
)
elif pic:
if pic.endswith((".tgs", ".webp")):
await ultroid_bot.send_message(LOG, file=pic)
await ultroid_bot.send_message(LOG, f"AFK mode to On")
else:
await ultroid_bot.send_message(LOG, f"AFK mode to On", file=pic)
else:
await ultroid_bot.send_message(LOG, f"AFK mode to On")
except Exception as e:
logger.warn(str(e))
HELP.update({f"{__name__.split('.')[1]}": f"{__doc__.format(i=Var.HNDLR)}"})