# █ █ ▀ █▄▀ ▄▀█ █▀█ ▀
# █▀█ █ █ █ █▀█ █▀▄ █
# © Copyright 2022
# https://t.me/hikariatama
#
# 🔒 Licensed under the GNU AGPLv3
# 🌐 https://www.gnu.org/licenses/agpl-3.0.html
# meta pic: https://static.dan.tatar/bulkcheck_icon.png
# meta banner: https://mods.hikariatama.ru/badges/bulkcheck.jpg
# meta developer: @hikarimods
# scope: hikka_only
# scope: hikka_min 1.2.10
# requires: requests
import requests
from telethon.tl.types import Message
from telethon.utils import get_display_name
from .. import loader, utils
@loader.tds
class BulkCheckMod(loader.Module):
"""Check all members of chat for leaked numbers"""
strings = {
"name": "BulkCheck",
"processing": (
"⏳ Processing..."
),
"no_pm": (
"🚫 This command can be"
" used only in chat"
),
"leaked": (
"☎️ Leaked numbers in"
" current chat:\n\n{}"
),
"404": (
"☹️ No leaked numbers"
" found here"
),
}
strings_ru = {
"processing": (
"⏳ Работаю..."
),
"no_pm": (
"🚫 Эту команду нужно"
" выполнять в чате"
),
"leaked": (
"☎️ Слитые номера в этом"
" чате:\n\n{}"
),
"404": (
"☹️ Тут нет слитых"
" номеров"
),
"_cmd_doc_bulkcheck": "Проверить все участников чата на слитые номера",
"_cls_doc": "Проверяет всех участников чата на слитые номера",
}
strings_de = {
"processing": (
"⏳ Verarbeite..."
),
"no_pm": (
"🚫 Dieser Befehl"
" kann nur"
" in einem Chat verwendet werden"
),
"leaked": (
"☎️ Leaked Nummern in"
" diesem Chat:\n\n{}"
),
"404": (
"☹️ Keine leaked Nummern"
" in diesem Chat gefunden"
),
"_cmd_doc_bulkcheck": "Überprüfe alle Mitglieder des Chats auf leaked Nummern",
"_cls_doc": "Überprüft alle Mitglieder des Chats auf leaked Nummern",
}
strings_hi = {
"processing": (
"⏳ प्रोसेसिंग..."
),
"no_pm": (
"🚫 यह कमांड केवल चैट में"
" उपयोग किया जा सकता है"
),
"leaked": (
"☎️ वर्तमान चैट में लीक"
" किए गए नंबर:\n\n{}"
),
"404": (
"☹️ यहां कोई लीक किए गए"
" नंबर नहीं मिला"
),
"_cmd_doc_bulkcheck": "चैट के सभी सदस्यों को लीक किए गए नंबरों के लिए जांचें",
"_cls_doc": "चैट के सभी सदस्यों को लीक किए गए नंबरों के लिए जांचता है",
}
strings_uz = {
"processing": (
"⏳ Ishlamoqda..."
),
"no_pm": (
"🚫 Ushbu buyruq faqat"
" guruhda ishlatilishi mumkin"
),
"leaked": (
"☎️ Joriy guruhda"
" chiqarilgan raqamlar:\n\n{}"
),
"404": (
"☹️ Bu guruhda"
" chiqarilgan raqamlar topilmadi"
),
"_cmd_doc_bulkcheck": (
"Guruhning barcha a'zolarini chiqarilgan raqamlar uchun tekshirish"
),
"_cls_doc": "Guruhning barcha a'zolarini chiqarilgan raqamlar uchun tekshiradi",
}
strings_tr = {
"processing": (
"⏳ İşleniyor..."
),
"no_pm": (
"🚫 Bu komut sadece"
" sohbetlerde kullanılabilir"
),
"leaked": (
"☎️ Bu sohbetteki sızan"
" numaralar:\n\n{}"
),
"404": (
"☹️ Bu sohbette sızan"
" numara bulunamadı"
),
"_cmd_doc_bulkcheck": "Sohbetteki tüm üyeleri sızan numaralar için kontrol et",
"_cls_doc": "Sohbetteki tüm üyeleri sızan numaralar için kontrol eder",
}
async def bcheckcmd(self, message: Message):
"""Bulk check using Murix database"""
if message.is_private:
await utils.answer(message, self.strings("no_pm"))
return
message = await utils.answer(message, self.strings("processing"))
results = []
async for member in self._client.iter_participants(message.peer_id):
result = (
await utils.run_sync(
requests.get,
f"http://api.murix.ru/eye?uid={member.id}&v=1.2",
)
).json()
if result["data"] != "NOT_FOUND":
results += [
"▫️ {utils.escape_html(get_display_name(member))}:'
f" +{result['data']}"
]
await utils.answer(
message,
(
self.strings("leaked").format("\n".join(results))
if results
else self.strings("404")
),
)