#
# @@@@@@ @@@@@@ @@@@@@@ @@@@@@@ @@@@@@ @@@@@@@@@@ @@@@@@ @@@@@@@ @@@ @@@ @@@ @@@@@@@@ @@@@@@
# @@@@@@@@ @@@@@@@ @@@@@@@ @@@@@@@@ @@@@@@@@ @@@@@@@@@@@ @@@@@@@@ @@@@@@@@ @@@ @@@ @@@ @@@@@@@@ @@@@@@@
# @@! @@@ !@@ @@! @@! @@@ @@! @@@ @@! @@! @@! @@! @@@ @@! @@@ @@! @@@ @@! @@! !@@
# !@! @!@ !@! !@! !@! @!@ !@! @!@ !@! !@! !@! !@! @!@ !@! @!@ !@! @!@ !@! !@! !@!
# @!@!@!@! !!@@!! @!! @!@!!@! @!@ !@! @!! !!@ @!@ @!@ !@! @!@ !@! @!@ !@! @!! @!!!:! !!@@!!
# !!!@!!!! !!@!!! !!! !!@!@! !@! !!! !@! ! !@! !@! !!! !@! !!! !@! !!! !!! !!!!!: !!@!!!
# !!: !!! !:! !!: !!: :!! !!: !!! !!: !!: !!: !!! !!: !!! !!: !!! !!: !!: !:!
# :!: !:! !:! :!: :!: !:! :!: !:! :!: :!: :!: !:! :!: !:! :!: !:! :!: :!: !:!
# :: ::: :::: :: :: :: ::: ::::: :: ::: :: ::::: :: :::: :: ::::: :: :: :::: :: :::: :::: ::
# : : : :: : : : : : : : : : : : : : : :: : : : : : : :: : : : :: :: :: : :
#
# ยฉ Copyright 2024
#
# https://t.me/Den4ikSuperOstryyPer4ik
# and
# https://t.me/ToXicUse
#
# ๐ Licensed under the GNU AGPLv3
# https://www.gnu.org/licenses/agpl-3.0.html
#
# meta developer: @AstroModules
# meta banner: https://raw.githubusercontent.com/Den4ikSuperOstryyPer4ik/Astro-modules/main/Banners/HikkaCommandsLogger.jpg
import logging
from telethon.tl.functions.channels import InviteToChannelRequest
from hikkatl.tl.types import PeerUser, PeerChannel, PeerChat, Channel, User
from .. import loader
from .. import utils
logger = logging.getLogger(__name__)
@loader.tds
class HikkaCommandsLoggerMod(loader.Module):
'''Hikka Commands Logger'''
strings = {
"name": "HikkaCommandsLogger",
"log-groups": (
"#GROUP\n\n"
"โ Command:\nโ ยซ {} ยป\n"
"โ From --> {}\n"
"โ Chat --> {}\n"
"โ Message Link --> CLICK"
),
"log-pm": (
"#PM\n\n"
"โ Command:\nโ ยซ {} ยป\n"
"โ From --> {}\n"
"โ Chat with --> {}\n"
"โ Message Link --> CLICK"
),
"log-channels": (
"#CHANNEL\n\n"
"โ Command:\nโ ยซ {} ยป\n"
"โ From --> {}\n"
"โ Channel --> {}\n"
"โ Message Link --> CLICK"
),
}
async def client_ready(self, client, _):
self.chat_l, _ = await utils.asset_channel(
client,
"hikka-commands-logs",
"๐ฌ Chat for Hikka commands logger",
silent=True,
avatar="https://raw.githubusercontent.com/Den4ikSuperOstryyPer4ik/Astro-modules/main/Banners/HikkaCommandsLoggerAvatar.png",
)
self.chat_logs = f"-100{self.chat_l.id}"
logger.warning("[AstroModules::HikkaCommandsLogger] Commands logger started.")
@loader.watcher(only_commands=True)
async def watcher(self, message):
is_pm = isinstance(message.peer_id, PeerUser)
sender = await message.get_sender()
is_channel = message.post or isinstance(sender, Channel)
chat_id = (
message.peer_id.user_id
if is_pm
else message.peer_id.chat_id
if isinstance(message.peer_id, PeerChat)
else message.peer_id.channel_id
if isinstance(message.peer_id, PeerChannel)
else self.hikka_me.id
)
chat = await self._client.get_entity(chat_id)
chat_username = getattr(chat, "username", None)
user_link = (
f"{sender.first_name if not is_channel else sender.title}"
if sender.username
else f"{sender.first_name if not is_channel else sender.title}"
)
chat_link = (
f"{chat.title}"
if chat_username
else chat.title
) if not is_pm else (
f"{chat.first_name}"
if chat.username
else f"{chat.first_name}"
)
async def send():
await self.inline.bot.send_message(
self.chat_logs,
self.strings(
"log-pm"
if is_pm
else "log-channels"
if message.post
else "log-groups"
).format(
utils.escape_html(message.raw_text),
user_link,
chat_link,
chat.id,
message.id,
),
disable_web_page_preview=True,
parse_mode="HTML",
)
try:
await send()
except Exception:
await utils.invite_inline_bot(self.client, self.chat_l)
await send()