# █▀▀ ▄▀█   █▀▄▀█ █▀█ █▀▄ █▀ # █▀░ █▀█   █░▀░█ █▄█ █▄▀ ▄█ # https://t.me/famods # 🔒 Licensed under the GNU AGPLv3 # 🌐 https://www.gnu.org/licenses/agpl-3.0.html # --------------------------------------------------------------------------------- # Name: AnonSMS # Description: Анонимное сообщение # meta developer: @FAmods # meta banner: https://github.com/FajoX1/FAmods/blob/main/assets/banners/anonsms.png?raw=true # --------------------------------------------------------------------------------- import time import asyncio import logging from .. import loader, utils from ..inline.types import InlineCall, BotInlineMessage logger = logging.getLogger(__name__) @loader.tds class AnonSMS(loader.Module): """Анонимное сообщение""" strings = { "name": "AnonSMS", "enter_message": "📩 Отправьте сообщение", "new_anon_msg": "📨 Вам пришло новое анонимное сообщение:", "opening_settings": "🔄 Открываю настройки...", "only_one": "❌ Отправлять сообщение можно раз в {} секунд!", } def __init__(self): self.config = loader.ModuleConfig( loader.ConfigValue( "start_text", "👋 Привет!\nТы можешь написать мне анонимное сообщение", lambda: "Текст после перехода по ссылке", ), loader.ConfigValue( "sent_text", "✅ Сообщение отправлено", lambda: "Текст пользователю после отправки сообщения", ), loader.ConfigValue( "error_send_text", "❌ Не удалось отправить сообщение", lambda: "Текст пользователю если не удалось отправить сообщение", ), loader.ConfigValue( "floodwait", 15, lambda: "Раз в сколько секунд можно отправить сообщение", ), ) async def client_ready(self, client, db): self.db = db self._client = client async def _check_message_rate(self, user_id: int) -> bool: if user_id in self.last_message_time: last_time = self.last_message_time[user_id] if time.time() - last_time < self.config['floodwait']: return False self.last_message_time[user_id] = time.time() return True @loader.command() async def getanonlink(self, message): """Получить ссылку на получение анонимного сообщения""" await utils.answer(message, f"🔗 Твоя ссылка для получение анонимного смс:\nhttps://t.me/{self.inline.bot_username}?start=anonsms") @loader.command() async def anonsettings(self, message): """Настроят модуль""" await utils.answer(message, self.strings['opening_settings']) await self.invoke("config", "AnonSMS", message.peer_id) await message.delete() @loader.inline_everyone @loader.callback_handler() async def anon_sms(self, call: InlineCall): if call.data == "anon_cancel": self.inline.ss(call.from_user.id, False) await self.inline.bot.delete_message( call.message.chat.id, call.message.message_id, ) return if call.data != "leave_anonsms": return self.inline.ss(call.from_user.id, "send_anonsms") await self.inline.bot.edit_message_text( chat_id=call.message.chat.id, message_id=call.message.message_id, text=self.strings['enter_message'], parse_mode="HTML", disable_web_page_preview=True, reply_markup=self.inline.generate_markup( {"text": "🚫 Отменить", "data": "anon_cancel"} ), ) async def aiogram_watcher(self, message: BotInlineMessage): if message.text == "/start anonsms": return await message.answer( self.config["start_text"], reply_markup=self.inline.generate_markup( {"text": "✍️ Написать", "data": "leave_anonsms"} ), ) if self.inline.gs(message.from_user.id) == "send_anonsms": if not await self._check_message_rate(message.from_user.id): await message.answer(self.strings['only_one'].format(self.config['floodwait'])) return try: await self.inline.bot.send_message(self._tg_id, self.strings['new_anon_msg']) await message.send_copy(self._tg_id) except: return await message.answer(self.config['error_send_text']) return await message.answer(self.config["sent_text"])