
पायथन में एक टेलीग्राम सामूहिक निगरानी बॉट

Informer (TGInformer) एक बॉट लाइब्रेरी है जो आपको टेलीग्राम पर कई वास्तविक उपयोगकर्ताओं के रूप में प्रस्तुत करने और प्रति खाता 500+ टेलीग्राम चैनलों पर जासूसी करने की अनुमति देती है। विवरण MySQL डेटाबेस, एक निजी Google शीट और विश्लेषण के लिए आपके अपने निजी चैनल में लॉग किए जाते हैं।
यह ज्ञात बग्स के साथ एक कार्यशील प्रूफ-ऑफ-कॉन्सेप्ट प्रोजेक्ट है। बेझिझक फोर्क करें, साझा करें और मुझसे संपर्क करें।



कीवर्ड फ़िल्टरिंग के लिए रेगुलर एक्सप्रेशन का समर्थन करता है
SQLAlchemy के लिए एग्नोस्टिक डेटा स्थिरता

प्रासंगिक संदेश और चैनल डेटा को निजी चैनल और डेटाबेस में लॉग करना
संदेश भेजने वाले, चैनल, चैनल में प्रतिभागियों की संख्या के बारे में मेटा जानकारी संग्रहीत करता है


शामिल किए गए चैनलों के सत्र को बनाए रखता है
एक बार लॉगिन करें, बॉट 2FA पुनः प्रमाणीकरण की आवश्यकता के बिना हमेशा लॉग इन रहता है
प्रति खाता 500 तक चैनलों में शामिल हों

फ़ाइल informer.env को संपादित करें जिसमें इन्फॉर्मर के लिए सभी आवश्यक पर्यावरणीय चर शामिल हैं।
आप आवश्यक टेलीग्राम-संबंधित जानकारी यहाँ प्राप्त कर सकते हैं:
https://my.telegram.org/auth पर जाएं, एक फोन नंबर और आपके फोन नंबर (या टेलीग्राम) पर भेजे गए पुष्टिकरण कोड प्रदान करके।


एक बार प्रमाणित होने के बाद, "API Development Tools" पर क्लिक करें।

नीचे दिखाए गए फॉर्म को भरकर एक नया एप्लिकेशन बनाएं।

अब आपके पास informer.env फ़ाइल के फ़ील्ड TELEGRAM_API_HASH और TELEGRAM_API_APP_ID के लिए आवश्यक पैरामीटर मान होने चाहिए।

TELEGRAM_ACCOUNT_PHONE_NUMBER सहित मान बदलें और अगले भाग पर जाएं।
अब तक हमारे पास Telethon और Informer के लिए टेलीग्राम APIs तक पहुंचने के लिए आवश्यक चीजें हैं, अगला हमें अपने बॉट के खाते के लिए पहचानकर्ता प्राप्त करने की आवश्यकता है।
userinfobot खोजें।


आपको अपना टेलीग्राम उपयोगकर्ता नाम और अपना टेलीग्राम खाता ID प्राप्त होना चाहिए। यह महत्वपूर्ण है

informer.env फ़ाइल को संपादित करें और TELEGRAM_ACCOUNT_ID के लिए मान भरें जो पिछले चरण से आपका टेलीग्राम खाता ID होना चाहिए और TELEGRAM_ACCOUNT_USER_NAME।आप वैकल्पिक रूप से TELEGRAM_NOTIFICATIONS_CHANNEL_ID को अपने उपयोगकर्ता नाम या चैनल ID से भर सकते हैं।
TELEGRAM_ACCOUNT_PHONE_NUMBER भरा है क्योंकि यह सत्र उत्पन्न करने की कुंजी है। कई खाते बनाने के लिए, कृपया नीचे दिए गए Burner ऐप देखें।सुनिश्चित करें कि आप python 3 चला रहे हैं और निर्देशिका में बस ./quick_start.sh चलाएँ।
आपको इसे पहले चलाना होगा ताकि आप पहली बार चलाने पर टेलीग्राम के साथ प्रमाणित हो सकें और एक स्थानीय सत्र फ़ाइल उत्पन्न कर सकें।
बाद में आप विभिन्न खातों के लिए फ़ाइलों को app/session में कॉपी कर सकते हैं और यदि आप ऐसा करना चाहते हैं तो उन्हें Docker के माध्यम से माउंट कर सकते हैं।

आपको प्रमाणीकरण कोड दर्ज करने के लिए कहा जाएगा जो आपको या तो टेलीग्राम के माध्यम से प्राप्त हुआ है (यदि आपने पहले लॉग इन किया है) या SMS के माध्यम से।

एंटर दबाएं और आपका सत्र app/session फ़ोल्डर में उत्पन्न हो जाना चाहिए जिसमें फ़ाइल का नाम आपके द्वारा प्रदान किए गए अंतर्राष्ट्रीय फोन नंबर के रूप में .session एक्सटेंशन के साथ होगा।
अगले भाग पर जाएं जहां हम डेटाबेस सेट करने के लिए Docker Compose का उपयोग करते हैं।
यह चरण वैकल्पिक है, लेकिन यदि आप एक निजी समूह चैनल बनाना चाहते हैं और समूह ID प्राप्त करना चाहते हैं तो निम्नलिखित करें:

URL को informer.env फ़ाइल में पैरामीटर TELEGRAM_NOTIFICATIONS_CHANNEL_URL के अंतर्गत सेट करें
चैनल ID प्राप्त करने के लिए बस app निर्देशिका में python3 bot.py <TELEGRAM_ACCOUNT_ID> चलाएँ जहाँ <TELEGRAM_ACCOUNT_ID> आपके द्वारा पहले उत्पन्न किया गया खाता ID है।
जब स्क्रिप्ट लोड होती है, तो यह उन सभी चैनलों को प्रदर्शित करेगी जिनमें आप हैं, बस इस मान को कॉपी करें और इसे informer.env फ़ाइल के TELEGRAM_NOTIFICATIONS_CHANNEL_ID पैरामीटर में डालें और स्क्रिप्ट को समाप्त करें। अब आप Informer चलाने के लिए तैयार हैं।
quick_start.sh चलाने के बाद आप docker compose इस प्रकार चला सकते हैं:
./start.sh चलाएँ
कंटेनरों को रोकने के लिए ./stop.sh चलाएँ
किसी भी लटकते (dangling) कंटेनरों और वॉल्यूम को हटाने के लिए ./clean.sh चलाएँ। नोट इससे डेटाबेस रीसेट हो जाएगा और आप अपना सारा डेटा खो देंगे।
ध्यान देने योग्य कुछ बातें:
पहले आपको अपना स्वयं का MySQL इंस्टेंस चलाने की आवश्यकता थी और इसने कनेक्शन स्ट्रिंग संगतता और संस्करण के साथ कुछ समस्याएँ उत्पन्न कीं। इस अपडेट में, यह आपके लिए बनाया गया है और डिस्क पर संग्रहीत किया गया है।
इसके अतिरिक्त Dozzle प्रदान किया गया है ताकि आप अपने ब्राउज़र में लॉग देख सकें, बस http://localhost:9999 पर जाएं और app_informer कंटेनर पर क्लिक करें।
यदि आप अपना स्वयं का फोन नंबर उपयोग नहीं करना चाहते हैं और कुछ हद तक गुमनामी के साथ Informer बॉट चलाना चाहते हैं, तो आप iOS और Android पर उपलब्ध Burner ऐप का उपयोग कर सकते हैं।
ऐप Burner इंस्टॉल करें

ऊपर दिए गए समान चरणों का पालन करें, यहां नया फोन नंबर प्रदान करके: https://my.telegram.org/auth
Burner के साथ सत्यापित करें। आपको SMS के माध्यम से एक प्रमाणीकरण कोड भेजा जाएगा, आपको इसे प्रदान करना होगा।

टेलीग्राम में लॉग इन करें
app निर्देशिका में python3 bot.py <api_user_id> चलाकर ऐप के साथ लॉगिन करने का प्रयास करें।
चूंकि आप Telethon के साथ लॉग इन कर रहे हैं, यह आपसे पहले की तरह टर्मिनल में आपका प्रमाणीकरण कोड मांगेगा।
यह टेलीग्राम संदेश या SMS के माध्यम से भेजा गया था।
यह प्रदान करें और यह आपके सत्र क्रेडेंशियल्स को नीचे उल्लिखित सत्र फ़ाइल में सहेज लेगा। जब तक आपके पास सत्र फ़ाइल सहेजी हुई है, आपको फिर से प्रमाणित करने की आवश्यकता नहीं होगी।
सत्र app/session/ फ़ोल्डर में <telegram_phone_number>.session के रूप में सहेजे जाते हैं।
जब तक आपके पास सभी आवश्यक सत्र फ़ाइलें नहीं हो जातीं, तब तक दोहराएं और बस उन्हें Docker में माउंट करें।
यह पता लगाना कि खातों को कैसे स्केल किया जाए, थोड़ा बुरा सपना था क्योंकि मुझे एक स्वचालित प्रक्रिया की आवश्यकता थी। टेलीग्राम आपको एक वास्तविक फोन नंबर का उपयोग करने के लिए कहता है जो एक शॉर्टकोड से टेक्स्ट प्राप्त कर सके।
दुर्भाग्य से, Twilio जैसी APIs वाली सेवाओं को US, Canada और UK में शॉर्टकोड से SMS प्राप्त करने से प्रतिबंधित किया गया है https://support.twilio.com/hc/en-us/articles/223181668-Can-Twilio-numbers-receive-SMS-from-a-short-code- धोखाधड़ी के उद्देश्यों के लिए। यह आदर्श होता, बहुत बुरा हुआ।
इस प्रयास में एक पूरी शाम बर्बाद हो गई जब तक मुझे एक बेहतरीन ऐप याद नहीं आया जिसका मैंने अतीत में उपयोग किया था: Burner (https://www.burnerapp.com/) — जिसके पास संयोगवश एक API है (https://developer.burnerapp.com/api-documentation/incoming-webhooks/)। इसका मतलब है कि आप गतिशील रूप से नंबर उत्पन्न कर सकते हैं, एक नया खाता इंस्टैंशिएट कर सकते हैं और यह सब टेलीग्राम के क्लाइंट SDK (Telethon: https://docs.telethon.dev/en/latest/) के माध्यम से प्रमाणित कर सकते हैं।
सबसे अच्छी बात यह है कि Burner नंबर 14 दिनों के लिए मुफ्त हैं। क्लाइंट API के माध्यम से जुड़े टेलीग्राम खातों को केवल एक बार लॉगिन करने की आवश्यकता होती है और सत्र स्थायी रूप से बने रहते हैं। मैंने Burner API के साथ एकीकृत नहीं किया है, लेकिन प्रक्रिया सीधी है।
बॉट Telethon Python SDK (https://docs.telethon.dev/en/latest/) के ऊपर बनाया गया है।
इस प्रूफ-ऑफ-कॉन्सेप्ट के निर्माण में सामने आई कुछ बातें और मुश्किलें:
FloodWaitErrors तब हो सकते हैं जब आप API को बहुत अधिक अनुरोध सबमिट कर रहे हों, चाहे वह उपयोगकर्ताओं की जानकारी क्वेरी करना हो या बहुत तेज़ी से बहुत सारे चैनलों में शामिल होना।
TelegramClient(<session_file_name>, <api_user_id>, <api_user_hash>)
यह फ़ाइल एक sqlite डेटाबेस है जिससे आप कनेक्ट कर सकते हैं। यह कैश की तरह काम करता है और ऐतिहासिक डेटा के साथ-साथ आपकी सत्र प्रमाणीकरण जानकारी भी संग्रहीत करता है ताकि आपको टेलीग्राम के 2FA के साथ पुनः प्रमाणित न करना पड़े। ध्यान दें कि जब आप पहली बार API का उपयोग करते हैं तो आपको पहली बार लॉगिन और प्रमाणीकरण करने की आवश्यकता होगी।
जैसे-जैसे बॉट चलता है और चैनलों में शामिल होता है, आप अपने क्लाइंट को रीयल टाइम में अपडेट होते हुए देखेंगे और आपके द्वारा शामिल किए गए नए चैनल प्रदर्शित होंगे।

सुझाव: TelegramX इन उद्देश्यों के लिए अब तक का सबसे अच्छा क्लाइंट है क्योंकि यह एकाधिक लॉगिन का समर्थन करता है। यहाँ डाउनलोड करें:
नोट: Google Sheets एकीकरण पूरी तरह से वैकल्पिक है। एप्लिकेशन केवल MySQL डेटाबेस के साथ पूरी तरह से काम करता है।
यदि आप Google Sheets लॉगिंग सक्षम करना चाहते हैं:
app/credentials/README.md में विस्तृत सेटअप गाइड का पालन करें।त्वरित अवलोकन:
app/credentials/google_credentials.json में रखेंयह वैकल्पिक है और बॉट इसके बिना काम करेगा।
bot.py दो बार चलाना होगा, एक बार इसे चैनलों में शामिल होने देने के लिए और दूसरी बार उनकी निगरानी करने के लिए। मुझे इस स्पष्ट बग के बारे में पता है और अगले संशोधन में इसे ठीक करूंगा।क्या आपको यह प्रोजेक्ट दिलचस्प लगा? यदि हाँ, तो कृपया इसे स्टार करें।
यह क्रिप्टोकरेंसी स्पेस में एक दोस्त के लिए प्रूफ-ऑफ-कॉन्सेप्ट के रूप में दो दिनों में बनाया गया था। यदि आपको कोई दिलचस्प या लाभदायक अनुप्रयोग मिलते हैं, तो मैं हमेशा सहयोग करने में प्रसन्न हूं। आप मुझसे यहां संपर्क कर सकते हैं:
@paulpierre ट्विटर पर या hi (at) paulpierre (dot) com पर
मेरे अधिकांश दिलचस्प प्रोजेक्ट github पर निजी हैं, लेकिन बेझिझक उन्हें देखें: http://www.github.com/paulpierre या पिछला काम http://www.paulpierre.com पर
कॉपीराइट (c) 2020 पॉल पियरे इसके द्वारा अनुमति प्रदान की जाती है, बिना किसी शुल्क के, किसी भी व्यक्ति को जो इस सॉफ्टवेयर और संबंधित दस्तावेज़ीकरण फ़ाइलों ("सॉफ्टवेयर") की एक प्रति प्राप्त करता है, बिना किसी प्रतिबंध के सॉफ्टवेयर से निपटने के लिए, जिसमें बिना सीमा के सॉफ्टवेयर का उपयोग करने, कॉपी करने, संशोधित करने, विलय करने, प्रकाशित करने, वितरित करने, उप-लाइसेंस देने और/या सॉफ्टवेयर की प्रतियां बेचने के अधिकार शामिल हैं, और उन व्यक्तियों को अनुमति देना जिन्हें सॉफ्टवेयर प्रदान किया गया है, निम्नलिखित शर्तों के अधीन ऐसा करने के लिए: उपरोक्त कॉपीराइट सूचना और यह अनुमति सूचना सॉफ्टवेयर की सभी प्रतियों या महत्वपूर्ण भागों में शामिल की जाएगी। सॉफ्टवेयर "जैसा है" प्रदान किया जाता है, किसी भी प्रकार की वारंटी के बिना, स्पष्ट या निहित, जिसमें व्यापारिकता, किसी विशेष उद्देश्य के लिए उपयुक्तता और उल्लंघन न होने की वारंटी शामिल है लेकिन इन्हीं तक सीमित नहीं है। किसी भी स्थिति में लेखक या कॉपीराइट धारक किसी भी दावे, क्षति या अन्य देयता के लिए उत्तरदायी नहीं होंगे, चाहे अनुबंध की कार्रवाई में, टोर्ट या अन्यथा, सॉफ्टवेयर या सॉफ्टवेयर के उपयोग या अन्य लेन-देन से उत्पन्न होने वाली या उससे संबंधित।