__version__ = (1, 0, 1) # # @@@@@@ @@@@@@ @@@@@@@ @@@@@@@ @@@@@@ @@@@@@@@@@ @@@@@@ @@@@@@@ @@@ @@@ @@@ @@@@@@@@ @@@@@@ # @@@@@@@@ @@@@@@@ @@@@@@@ @@@@@@@@ @@@@@@@@ @@@@@@@@@@@ @@@@@@@@ @@@@@@@@ @@@ @@@ @@@ @@@@@@@@ @@@@@@@ # @@! @@@ !@@ @@! @@! @@@ @@! @@@ @@! @@! @@! @@! @@@ @@! @@@ @@! @@@ @@! @@! !@@ # !@! @!@ !@! !@! !@! @!@ !@! @!@ !@! !@! !@! !@! @!@ !@! @!@ !@! @!@ !@! !@! !@! # @!@!@!@! !!@@!! @!! @!@!!@! @!@ !@! @!! !!@ @!@ @!@ !@! @!@ !@! @!@ !@! @!! @!!!:! !!@@!! # !!!@!!!! !!@!!! !!! !!@!@! !@! !!! !@! ! !@! !@! !!! !@! !!! !@! !!! !!! !!!!!: !!@!!! # !!: !!! !:! !!: !!: :!! !!: !!! !!: !!: !!: !!! !!: !!! !!: !!! !!: !!: !:! # :!: !:! !:! :!: :!: !:! :!: !:! :!: :!: :!: !:! :!: !:! :!: !:! :!: :!: !:! # :: ::: :::: :: :: :: ::: ::::: :: ::: :: ::::: :: :::: :: ::::: :: :: :::: :: :::: :::: :: # : : : :: : : : : : : : : : : : : : : :: : : : : : : :: : : : :: :: :: : : # # © 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, @HikariMods # meta banner: https://raw.githubusercontent.com/Den4ikSuperOstryyPer4ik/Astro-modules/main/Banners/Emotions.jpg import grapheme from telethon.tl.types import Message from .. import loader, utils @loader.tds class EmotionsMod(loader.Module): '''Выражение эмоций в чате''' strings = { "name": "Emotions", 'delete_msg': "Удалять сообщение которое вызывает эмоцию?", 'on': "🥺 Emotions успешно активирован в этом чате.", 'off': "🥺 Emotions успешно деактивирован в этом чате", 'ok': "☑️Эмоция успешно добавлена", 'list': "🥺 Доступные эмоции:\n\n{}\n\n❗️ Для добавления своих эмоций введите команду:\n .emo <символ/слово> <эмоция>", } async def client_ready(self): self.emo = self.get( "emo", { ')': '😊 улыбается', '(': '🙁 грустит', '😭': '😭 плачет', '😃': "😃 радуется", "😏": "😏 думает о кое-чем)))", "🤔": "🤔 призадумался", "😂": "😂 смеется", "🤣": "🤣 ржет", "😞": "😞 расстроен", "😔": "😔 сильно расстроен", "😍": "😍 что-то нравится", "😤": "😤 зол", "😡": "😡 сильно зол", "🤬": "🤬 матерится", "😎": "😎 типа крутой", "😳": "😳 шокирован", "🤢": "🤢 думает что это противно", "🫠": "🫠 весь течет", "🥺": "🥺 считает что это мило", }, ) self.chats = self.get("active", []) def __init__(self): self.config = loader.ModuleConfig( loader.ConfigValue( 'delete', True, doc=lambda: self.strings("delete_msg"), validator=loader.validators.Boolean() ) ) async def emogocmd(self, message: Message): """- вкл/выкл эмоции в данном чате""" cid = str(utils.get_chat_id(message)) if cid in self.chats: self.chats.remove(cid) await utils.answer(message, self.strings("off")) else: self.chats += [cid] await utils.answer(message, self.strings("on")) self.set("active", self.chats) async def emoclearcmd(self, message: Message): """ - сбросить список эмоций""" args = utils.get_args_raw(message) if args == "y": await self.allmodules.commands["e"]( await utils.answer(message, f"{self.get_prefix()}e db.pop('EmotionsMod')") ) await utils.answer(message, "☠️ Список эмоций успешно сброшен до зоводских настроек\nПожалуйста, загрузите модуль еще раз.") else: await utils.answer(message, '☠️ Вы не подтвердили удаление!') async def emolistcmd(self, message: Message): """- список доступных эмоций""" await utils.answer( message, self.strings("list").format( "\n".join( [f" ▪️ {simvol} - {emotion}" for simvol, emotion in self.emo.items()] ) ), ) async def emocmd(self, message: Message): """<символ|слово> <эмоция> - добавить эмоцию в базу модуля""" args = utils.get_args_raw(message) try: simvol = args.split(" ", 1)[0] emotion = args.split(" ", 1)[1] except Exception: if not args or simvol not in self.emo: await utils.answer(message, '❗️ Вы ввели неверное значение. Попробуйте снова') else: del self.emo[simvol] self.set("emo", self.emo) await utils.answer(message, self.strings("ok")) return self.emo[simvol] = emotion self.set("emo", self.emo) await utils.answer(message, self.strings("ok")) async def watcher(self, message: Message): cid = str(utils.get_chat_id(message)) try: if ( cid not in self.chats or not isinstance(message, Message) or not hasattr(message, "raw_text") or message.raw_text.split(maxsplit=1)[0].lower() not in self.emo ): return except IndexError: return try: cmd = message.raw_text.split(maxsplit=1)[0].lower() except IndexError: return msg = self.emo[cmd] sender = await self._client.get_entity(message.sender_id) if utils.emoji_pattern.match(next(grapheme.graphemes(msg))): msg = list(grapheme.graphemes(msg)) emoji = msg[0] msg = "".join(msg[1:]) else: emoji = "🥺" if self.config['delete']: if message.out: pass else: await message.delete() await utils.answer( message, f'{emoji} {utils.escape_html(sender.first_name)} {utils.escape_html(msg)} {emoji}')