* Ultroid 2025 Co-authored-by: New-dev0 <New-dev0@users.noreply.github.com> Co-authored-by: Amit Sharma <buddhhu@users.noreply.github.com> Co-authored-by: TechiError <techierror@users.noreply.github.com> Co-authored-by: Aditya <me@xditya.me> Co-authored-by: 1Danish-00 <danish@ultroid.tech> Co-authored-by: Arnab Paryali <Arnabxd@users.noreply.github.com> Co-authored-by: hellboi_atul <hellboi-atul@users.noreply.github.com> Co-authored-by: sppidy <sppidy@users.noreply.github.com> by Devesh Pal
166 lines
5.0 KiB
Python
166 lines
5.0 KiB
Python
# Ultroid - UserBot
|
|
# Copyright (C) 2021-2025 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/>.
|
|
|
|
from . import get_help
|
|
|
|
__doc__ = get_help("help_afk")
|
|
|
|
|
|
import asyncio
|
|
|
|
from telethon import events
|
|
|
|
from pyUltroid.dB.afk_db import add_afk, del_afk, is_afk
|
|
from pyUltroid.dB.base import KeyManager
|
|
|
|
from . import (
|
|
LOG_CHANNEL,
|
|
NOSPAM_CHAT,
|
|
Redis,
|
|
asst,
|
|
get_string,
|
|
mediainfo,
|
|
udB,
|
|
ultroid_bot,
|
|
ultroid_cmd,
|
|
upload_file
|
|
)
|
|
|
|
old_afk_msg = []
|
|
|
|
is_approved = KeyManager("PMPERMIT", cast=list).contains
|
|
|
|
|
|
@ultroid_cmd(pattern="afk( (.*)|$)", owner_only=True)
|
|
async def set_afk(event):
|
|
if event.client._bot or is_afk():
|
|
return
|
|
text, media, media_type = None, None, None
|
|
if event.pattern_match.group(1).strip():
|
|
text = event.text.split(maxsplit=1)[1]
|
|
reply = await event.get_reply_message()
|
|
if reply:
|
|
if reply.text and not text:
|
|
text = reply.text
|
|
if reply.media:
|
|
media_type = mediainfo(reply.media)
|
|
if media_type.startswith(("pic", "gif")):
|
|
file = await event.client.download_media(reply.media)
|
|
media = upload_file(file)
|
|
else:
|
|
media = reply.file.id
|
|
await event.eor("`Done`", time=2)
|
|
add_afk(text, media_type, media)
|
|
ultroid_bot.add_handler(remove_afk, events.NewMessage(outgoing=True))
|
|
ultroid_bot.add_handler(
|
|
on_afk,
|
|
events.NewMessage(
|
|
incoming=True, func=lambda e: bool(e.mentioned or e.is_private)
|
|
),
|
|
)
|
|
msg1, msg2 = None, None
|
|
if text and media:
|
|
if "sticker" in media_type:
|
|
msg1 = await ultroid_bot.send_file(event.chat_id, file=media)
|
|
msg2 = await ultroid_bot.send_message(
|
|
event.chat_id, get_string("afk_5").format(text)
|
|
)
|
|
else:
|
|
msg1 = await ultroid_bot.send_message(
|
|
event.chat_id, get_string("afk_5").format(text), file=media
|
|
)
|
|
elif media:
|
|
if "sticker" in media_type:
|
|
msg1 = await ultroid_bot.send_file(event.chat_id, file=media)
|
|
msg2 = await ultroid_bot.send_message(event.chat_id, get_string("afk_6"))
|
|
else:
|
|
msg1 = await ultroid_bot.send_message(
|
|
event.chat_id, get_string("afk_6"), file=media
|
|
)
|
|
elif text:
|
|
msg1 = await event.respond(get_string("afk_5").format(text))
|
|
else:
|
|
msg1 = await event.respond(get_string("afk_6"))
|
|
old_afk_msg.append(msg1)
|
|
if msg2:
|
|
old_afk_msg.append(msg2)
|
|
return await asst.send_message(LOG_CHANNEL, msg2.text)
|
|
await asst.send_message(LOG_CHANNEL, msg1.text)
|
|
|
|
|
|
async def remove_afk(event):
|
|
if event.is_private and udB.get_key("PMSETTING") and not is_approved(event.chat_id):
|
|
return
|
|
elif "afk" in event.text.lower():
|
|
return
|
|
elif event.chat_id in NOSPAM_CHAT:
|
|
return
|
|
if is_afk():
|
|
_, _, _, afk_time = is_afk()
|
|
del_afk()
|
|
off = await event.reply(get_string("afk_1").format(afk_time))
|
|
await asst.send_message(LOG_CHANNEL, get_string("afk_2").format(afk_time))
|
|
for x in old_afk_msg:
|
|
try:
|
|
await x.delete()
|
|
except BaseException:
|
|
pass
|
|
await asyncio.sleep(10)
|
|
await off.delete()
|
|
|
|
|
|
async def on_afk(event):
|
|
if event.is_private and Redis("PMSETTING") and not is_approved(event.chat_id):
|
|
return
|
|
elif "afk" in event.text.lower():
|
|
return
|
|
elif not is_afk():
|
|
return
|
|
if event.chat_id in NOSPAM_CHAT:
|
|
return
|
|
sender = await event.get_sender()
|
|
if sender.bot or sender.verified:
|
|
return
|
|
text, media_type, media, afk_time = is_afk()
|
|
msg1, msg2 = None, None
|
|
if text and media:
|
|
if "sticker" in media_type:
|
|
msg1 = await event.reply(file=media)
|
|
msg2 = await event.reply(get_string("afk_3").format(afk_time, text))
|
|
else:
|
|
msg1 = await event.reply(
|
|
get_string("afk_3").format(afk_time, text), file=media
|
|
)
|
|
elif media:
|
|
if "sticker" in media_type:
|
|
msg1 = await event.reply(file=media)
|
|
msg2 = await event.reply(get_string("afk_4").format(afk_time))
|
|
else:
|
|
msg1 = await event.reply(get_string("afk_4").format(afk_time), file=media)
|
|
elif text:
|
|
msg1 = await event.reply(get_string("afk_3").format(afk_time, text))
|
|
else:
|
|
msg1 = await event.reply(get_string("afk_4").format(afk_time))
|
|
for x in old_afk_msg:
|
|
try:
|
|
await x.delete()
|
|
except BaseException:
|
|
pass
|
|
old_afk_msg.append(msg1)
|
|
if msg2:
|
|
old_afk_msg.append(msg2)
|
|
|
|
|
|
if udB.get_key("AFK_DB"):
|
|
ultroid_bot.add_handler(remove_afk, events.NewMessage(outgoing=True))
|
|
ultroid_bot.add_handler(
|
|
on_afk,
|
|
events.NewMessage(
|
|
incoming=True, func=lambda e: bool(e.mentioned or e.is_private)
|
|
),
|
|
)
|