|
|
|
|
|
|
|
|
|
|
|
|
|
""" |
|
✘ Commands Available - |
|
|
|
•`{i}addnsfw <ban/mute/kick>` |
|
If someone sends 18+ content it will be deleted and action will be taken. |
|
|
|
•`{i}remnsfw` |
|
Remove Chat from nsfw filtering. |
|
""" |
|
|
|
import os |
|
|
|
from . import LOGS |
|
|
|
try: |
|
from ProfanityDetector import detector |
|
except ImportError: |
|
detector = None |
|
LOGS.error("nsfwfilter: 'Profanitydetector' not installed!") |
|
from pyUltroid.dB.nsfw_db import is_nsfw, nsfw_chat, rem_nsfw |
|
|
|
from . import HNDLR, async_searcher, eor, events, udB, ultroid_bot, ultroid_cmd |
|
|
|
|
|
@ultroid_cmd(pattern="addnsfw( (.*)|$)", admins_only=True) |
|
async def addnsfw(e): |
|
if not udB.get_key("DEEP_API"): |
|
return await eor( |
|
e, f"Get Api from deepai.org and Add It `{HNDLR}setdb DEEP_API your-api`" |
|
) |
|
action = e.pattern_match.group(1).strip() |
|
if not action or ("ban" or "kick" or "mute") not in action: |
|
action = "mute" |
|
nsfw_chat(e.chat_id, action) |
|
ultroid_bot.add_handler(nsfw_check, events.NewMessage(incoming=True)) |
|
await e.eor("Added This Chat To Nsfw Filter") |
|
|
|
|
|
@ultroid_cmd(pattern="remnsfw", admins_only=True) |
|
async def remnsfw(e): |
|
rem_nsfw(e.chat_id) |
|
await e.eor("Removed This Chat from Nsfw Filter.") |
|
|
|
|
|
NWARN = {} |
|
|
|
|
|
async def nsfw_check(e): |
|
chat = e.chat_id |
|
action = is_nsfw(chat) |
|
if action and udB.get_key("DEEP_API") and e.media: |
|
pic, name, nsfw = "", "", 0 |
|
try: |
|
pic = await e.download_media(thumb=-1) |
|
except BaseException: |
|
pass |
|
if e.file: |
|
name = e.file.name |
|
if detector and name: |
|
x, y = detector(name) |
|
if y: |
|
nsfw += 1 |
|
if pic and not nsfw: |
|
r = await async_searcher( |
|
"https://api.deepai.org/api/nsfw-detector", |
|
data={ |
|
"image": open(pic, "rb"), |
|
}, |
|
post=True, |
|
re_json=True, |
|
headers={"api-key": udB.get_key("DEEP_API")}, |
|
) |
|
try: |
|
k = float((r["output"]["nsfw_score"])) |
|
except KeyError as er: |
|
LOGS.exception(er) |
|
LOGS.info(r) |
|
return |
|
score = int(k * 100) |
|
if score > 45: |
|
nsfw += 1 |
|
os.remove(pic) |
|
if nsfw: |
|
await e.delete() |
|
if NWARN.get(e.sender_id): |
|
count = NWARN[e.sender_id] + 1 |
|
if count < 3: |
|
NWARN.update({e.sender_id: count}) |
|
return await ultroid_bot.send_message( |
|
chat, |
|
f"**NSFW Warn {count}/3** To [{e.sender.first_name}](tg://user?id={e.sender_id})\nNSFW prohibited! Repeated violation would lead to {action}", |
|
) |
|
if "mute" in action: |
|
try: |
|
await ultroid_bot.edit_permissions( |
|
chat, e.sender_id, until_date=None, send_messages=False |
|
) |
|
await ultroid_bot.send_message( |
|
chat, |
|
f"NSFW Warn 3/3 to [{e.sender.first_name}](tg://user?id={e.sender_id})\n\n**Action Taken** : {action}", |
|
) |
|
except BaseException: |
|
await ultroid_bot.send_message( |
|
chat, |
|
f"NSFW Warn 3/3 to [{e.sender.first_name}](tg://user?id={e.sender_id})\n\nUnable to {action}.", |
|
) |
|
elif "ban" in action: |
|
try: |
|
await ultroid_bot.edit_permissions( |
|
chat, e.sender_id, view_messages=False |
|
) |
|
await ultroid_bot.send_message( |
|
chat, |
|
f"NSFW Warn 3/3 to [{e.sender.first_name}](tg://user?id={e.sender_id})\n\n**Action Taken** : {action}", |
|
) |
|
except BaseException: |
|
await ultroid_bot.send_message( |
|
chat, |
|
f"NSFW Warn 3/3 to [{e.sender.first_name}](tg://user?id={e.sender_id})\n\nUnable to {action}.", |
|
) |
|
elif "kick" in action: |
|
try: |
|
await ultroid_bot.kick_participant(chat, e.sender_id) |
|
await ultroid_bot.send_message( |
|
chat, |
|
f"NSFW Warn 3/3 to [{e.sender.first_name}](tg://user?id={e.sender_id})\n\n**Action Taken** : {action}", |
|
) |
|
except BaseException: |
|
await ultroid_bot.send_message( |
|
chat, |
|
f"NSFW Warn 3/3 to [{e.sender.first_name}](tg://user?id={e.sender_id})\n\nUnable to {action}.", |
|
) |
|
NWARN.pop(e.sender_id) |
|
else: |
|
NWARN.update({e.sender_id: 1}) |
|
return await ultroid_bot.send_message( |
|
chat, |
|
f"**NSFW Warn 1/3** To [{e.sender.first_name}](tg://user?id={e.sender_id})\nNSFW prohibited! Repeated violation would lead to {action}", |
|
) |
|
|
|
|
|
if udB.get_key("NSFW"): |
|
ultroid_bot.add_handler(nsfw_check, events.NewMessage(incoming=True)) |
|
|