# █▀▀ ▄▀█ █▀▄▀█ █▀█ █▀▄ █▀
# █▀░ █▀█ █░▀░█ █▄█ █▄▀ ▄█
# https://t.me/famods
# 🔒 Licensed under the GNU AGPLv3
# 🌐 https://www.gnu.org/licenses/agpl-3.0.html
# ---------------------------------------------------------------------------------
# Name: FAbusiness
# Description: Бесплатный Telegram business
# meta developer: @FAmods
# meta banner: https://github.com/FajoX1/FAmods/blob/main/assets/banners/fabusiness.png?raw=true
# ---------------------------------------------------------------------------------
import time
import asyncio
import logging
from telethon.tl.types import Message, PeerUser
from .. import loader, utils
logger = logging.getLogger(__name__)
@loader.tds
class FAbusiness(loader.Module):
"""Бесплатный Telegram business"""
strings = {
"name": "FAbusiness",
"loading_cfg": "🔄 Открываю настройку...",
"business_on": "💻 FAbusiness включен!",
"business_off": "🚫 FAbusiness выключен!",
}
def __init__(self):
self.config = loader.ModuleConfig(
loader.ConfigValue(
"not_here",
False,
lambda: "Ты на месте?",
validator=loader.validators.Boolean()
),
loader.ConfigValue(
"hello_text",
"👋 Привет",
lambda: "Текст приветствия",
),
loader.ConfigValue(
"not_here_text",
"❌ Нет на месте",
lambda: "Текст если вас нету на месте",
)
)
async def client_ready(self, client, db):
self.db = db
self._client = client
self.last_message_time = {}
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 < 30:
return False
self.last_message_time[user_id] = time.time()
return True
@loader.command()
async def business(self, message):
"""Включить/выключить FAbusiness"""
if self.db.get(self.name, "business", False):
self.db.set(self.name, "business", False)
return await utils.answer(message, self.strings["business_off"])
self.db.set(self.name, "business", True)
await utils.answer(message, self.strings["business_on"])
@loader.command()
async def bsettings(self, message):
"""Настройка FAbusiness"""
msg = await utils.answer(message, self.strings['loading_cfg'])
await self.invoke("config", "FAbusiness", message.peer_id)
await msg.delete()
async def watcher(self, event):
if (
getattr(event, "out", False)
or not isinstance(event, Message)
or not isinstance(event.peer_id, PeerUser)
or not self.db.get(self.name, "business")
or utils.get_chat_id(event)
in {
1271266957, # @replies
777000, # Telegram Notifications
self._tg_id, # Self
}
):
return
try:
if (
event.sender.bot
or event.sender.support
or event.sender.contact
):
return
except:
pass
said_users = self.db.get(self.name, "said_users")
if not said_users:
said_users = []
if not self.config['not_here']:
if event.from_id not in said_users:
said_users.append(event.from_id)
self.db.set(self.name, "said_users", said_users)
else:
return
else:
if not await self._check_message_rate(event.from_id):
return
if self.config['not_here']:
text = self.config['not_here_text']
else:
text = self.config['hello_text']
await utils.answer(event, text)