nsfw.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. from wbb import app, arq, SUDOERS, IMGBB_API_KEY, MESSAGE_DUMP_CHAT
  2. from wbb.utils.filter_groups import nsfw_detect_group
  3. from pyrogram import filters
  4. from random import randint
  5. import aiohttp
  6. import aiofiles
  7. import os
  8. @app.on_message(filters.document | filters.photo & ~filters.private, group=nsfw_detect_group)
  9. async def detect_nsfw(_, message):
  10. if message.from_user.id in SUDOERS:
  11. return
  12. if message.document:
  13. if int(message.document.file_size) > 3145728:
  14. return
  15. mime_type = message.document.mime_type
  16. if mime_type != "image/png" and mime_type != "image/jpeg":
  17. return
  18. image = await message.download(f"{randint(6666, 9999)}.jpg")
  19. async with aiofiles.open(image, mode='rb') as f:
  20. payload = {
  21. "key": IMGBB_API_KEY,
  22. "image": await f.read(),
  23. "expiration": "60"
  24. }
  25. async with aiohttp.ClientSession() as session:
  26. async with session.post("https://api.imgbb.com/1/upload", data=payload) as resp:
  27. data = await resp.json()
  28. url = data['data']['url']
  29. os.remove(image)
  30. results = await arq.nsfw_scan(url)
  31. hentai = results.data.hentai
  32. sexy = results.data.sexy
  33. porn = results.data.porn
  34. neutral = results.data.neutral
  35. if hentai < 80 and porn < 70 and sexy < 80:
  36. return
  37. if neutral > 30:
  38. return
  39. user_mention = message.from_user.mention
  40. user_id = message.from_user.id
  41. m = await message.forward(MESSAGE_DUMP_CHAT)
  42. try:
  43. await message.delete()
  44. except Exception:
  45. pass
  46. await message.reply_text(f"""
  47. **NSFW [Image]({m.link}) Detected & Deleted Successfully!
  48. ————————————————————————**
  49. **User:** {user_mention} [`{user_id}`]
  50. **Safe:** `{neutral}` %
  51. **Porn:** `{porn}` %
  52. **Adult:** `{sexy}` %
  53. **Hentai:** `{hentai}` %
  54. """)