Files
Ultroid-fork/plugins/afk.py
Danish 68839e9dd0 Ultroid v0.0.7 2021/05/22
Co-authored-by: New-dev0 <New-dev0@notavailable.live>
Co-authored-by: Danish <danish@ultroid.tech>
Co-authored-by: Amit Sharma <48654350+buddhhu@users.noreply.github.com>
Co-authored-by: Programming Error <error@notavailable.live>
Co-authored-by: Aakash <BLUE-DEVIL1134@users.noreply.github.com>
Co-authored-by: Aditya <me@xditya.me>
Co-authored-by: sppidy <sppidy@users.noreply.github.com>
Co-authored-by: Arnab Paryali <Arnabxd@users.noreply.github.com>
Co-authored-by: divkix <divkix@users.noreply.github.com>
Co-authored-by: hellboi_atul <hellboi-atul@users.noreply.github.com>
2021-05-22 22:21:41 +05:30

255 lines
8.5 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 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 pyUltroid.functions.pmpermit_db import *
from telethon import events
from telethon.tl.functions.account import GetPrivacyRequest
from telethon.tl.types import InputPrivacyKeyStatusTimestamp, PrivacyValueAllowAll
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 = int(udB.get("LOG_CHANNEL"))
@ultroid_bot.on(events.NewMessage(outgoing=True))
@ultroid_bot.on(events.MessageEdited(outgoing=True))
async def set_not_afk(event):
if event.is_private:
if Redis("PMSETTING") == "True":
if not is_approved(event.chat_id):
return
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.is_private:
if Redis("PMSETTING") == "True":
if not is_approved(event.chat_id):
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
sender = await event.get_sender()
if USER_AFK and not (sender.bot or sender.verified):
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 not is_fullsudo(event.sender_id):
return await eor(event, "`This Command Is Sudo Restricted.`")
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(
GetPrivacyRequest(InputPrivacyKeyStatusTimestamp()),
)
if isinstance(last_seen_status.rules, 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)}"})