# # @@@@@@ @@@@@@ @@@@@@@ @@@@@@@ @@@@@@ @@@@@@@@@@ @@@@@@ @@@@@@@ @@@ @@@ @@@ @@@@@@@@ @@@@@@ # @@@@@@@@ @@@@@@@ @@@@@@@ @@@@@@@@ @@@@@@@@ @@@@@@@@@@@ @@@@@@@@ @@@@@@@@ @@@ @@@ @@@ @@@@@@@@ @@@@@@@ # @@! @@@ !@@ @@! @@! @@@ @@! @@@ @@! @@! @@! @@! @@@ @@! @@@ @@! @@@ @@! @@! !@@ # !@! @!@ !@! !@! !@! @!@ !@! @!@ !@! !@! !@! !@! @!@ !@! @!@ !@! @!@ !@! !@! !@! # @!@!@!@! !!@@!! @!! @!@!!@! @!@ !@! @!! !!@ @!@ @!@ !@! @!@ !@! @!@ !@! @!! @!!!:! !!@@!! # !!!@!!!! !!@!!! !!! !!@!@! !@! !!! !@! ! !@! !@! !!! !@! !!! !@! !!! !!! !!!!!: !!@!!! # !!: !!! !:! !!: !!: :!! !!: !!! !!: !!: !!: !!! !!: !!! !!: !!! !!: !!: !:! # :!: !:! !:! :!: :!: !:! :!: !:! :!: :!: :!: !:! :!: !:! :!: !:! :!: :!: !:! # :: ::: :::: :: :: :: ::: ::::: :: ::: :: ::::: :: :::: :: ::::: :: :: :::: :: :::: :::: :: # : : : :: : : : : : : : : : : : : : : :: : : : : : : :: : : : :: :: :: : : # # ยฉ 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()