टेलीग्राम बॉट - ग्रुप चैट आईडी कैसे प्राप्त करें?


170

मैं telegram_bot का उपयोग कर रहा हूं , और समूह चैट को सूचनाएं भेजने के लिए groupChat id प्राप्त करने की कोशिश कर रहा हूं, लेकिन यह नहीं जानता कि मुझे इसके लिए किन तरीकों का उपयोग करना है।

चैट आईडी पाने के लिए मैं message.chat.id का उपयोग करता हूं, जब बॉट ने चैट में भाग लिया था, लेकिन जिसे मुझे ग्रुप चैट आईडी पाने के लिए उपयोग करना है / /


1
मैं इसके लिए बॉट का प्रबंधन करता हूं। मुझे उम्मीद है कि इससे मदद मिलेगी, इस < stackoverflow.com/a/37396871/6223024 >
fredy kardian

जवाबों:


227

समूह चैट आईडी प्राप्त करने के लिए, निम्न कार्य करें:

  1. टेलीग्राम बीओटी को समूह में जोड़ें।

  2. अपने बीओटी के लिए अपडेट की सूची प्राप्त करें:

    https://api.telegram.org/bot<YourBOTToken>/getUpdates
    

    उदाहरण के लिए:

    https://api.telegram.org/bot123456789:jbd78sadvbdy63d37gda37bd8/getUpdates
    
  3. "चैट" ऑब्जेक्ट देखें:

{ "Update_id": 8393, "संदेश": { "message_id": 3, "से": { "id": 7474, "first_name": "एएए"}, "चैट": { "id": "शीर्षक ":" "}," तिथि ": 25,497," new_chat_participant ": {" id ": 71," first_name "" NAME "," उपयोगकर्ता नाम ":" YOUR_BOT_NAME "}}}

यह प्रतिक्रिया का एक नमूना है जब आप अपने बीओटी को एक समूह में जोड़ते हैं।

  1. अपने संदेश भेजने के लिए "चैट" ऑब्जेक्ट की "आईडी" का उपयोग करें।

1
क्या आप एक उदाहरण दे सकते हैं?
रोमन पॉडप्रियाटोव

2
@WannaBeCoder, आप किसी अन्य सदस्य की तरह ही एक समूह में बीओटी जोड़ सकते हैं: अपने समूह के गुणों पर जाएं, ऐड सदस्य पर क्लिक करें, फिर बीओटी का नाम देखने के लिए खोज आइकन का उपयोग करें। लेकिन, ध्यान रखें कि टेलीग्राम समूह के हालिया परिवर्तनों के बाद, आपको एक नया सदस्य जोड़ने के लिए एक समूह "व्यवस्थापक" होना चाहिए, चाहे वे बीओटी हों या नहीं।
Maverick_Java

37
नव निर्मित समूह के लिए getUpdatesअनुरोध रिटर्न {"ok":true,"result":[]}भले ही मैं के माध्यम से समूह और उल्लेख बॉट के लिए गए संदेशों के गुच्छा भेजने का प्रयास करें @और कुछ यादृच्छिक "कमांड" /my_id, /start, /help। कोई विचार है के अब क्या करना चाहिए? - अद्यतन: ठीक है, समूह से बॉट को हटाने, और बॉट को जोड़ने से इस मुद्दे को तय किया (यह भी समूह में चैट आईडी मुद्रित) --- लगता है कि समूह निर्माण के दौरान बॉट को जोड़ा नहीं जा सकता है।
रुतस्की

8
यह रिटर्न: {"ओके": सच, "परिणाम": []}
टॉम

3
नमस्ते टॉम। क्या आपने पहले से ही रटस्की समाधान की कोशिश की है: "बॉट को समूह से हटाना, और बॉट को वापस जोड़ना इस मुद्दे को तय किया (यह भी समूह में चैट आईडी मुद्रित करता है) --- ऐसा लगता है कि बॉट को समूह निर्माण के दौरान जोड़ा नहीं जा सकता है।" मैंने एक ही समस्या का एक-दो बार सामना किया है, और बॉट को समूह से हटाकर इसे फिर से जोड़ना हमेशा समस्या को हल करता है। मुझे पता है अगर यह आपकी मदद नहीं करेगा।
Maverick_Java

136

यहाँ वह क्रम है जिसने कई घंटों तक संघर्ष करने के बाद मेरे लिए काम किया:

मान लें कि बॉट नाम my_bot है

1- बॉट को समूह में जोड़ें।
ग्रुप में जाएं, ग्रुप नेम पर क्लिक करें, ऐड मेंबर्स पर क्लिक करें, अपने बॉट के लिए सर्च बॉक्स में इस तरह खोजें: @my_bot, अपना बॉट सिलेक्ट करें और ऐड पर क्लिक करें।

2- बॉट को एक डमी संदेश भेजें।
आप इस उदाहरण का उपयोग कर सकते हैं: /my_id @my_bot
(मैंने कुछ संदेशों की कोशिश की, न कि सभी संदेश काम करते हैं। ऊपर दिया गया उदाहरण ठीक काम करता है। हो सकता है कि संदेश आपके साथ हो) ()

3- निम्नलिखित यूआरएल पर जाएं: https://api.telegram.org/botXXX:YYYY/getUpdates
XXX को बदलें: YYYY अपने बॉट टोकन के साथ

4- "चैट" देखें: {"आईडी": - zzzzzzzzzzz,
-zzzzzzzzzzzz आपकी चैट आईडी है (नकारात्मक चिन्ह के साथ)।

5- परीक्षण: आप कर्ल के साथ समूह को एक संदेश भेजकर परीक्षण कर सकते हैं:

curl -X POST "https://api.telegram.org/botXXX:YYYY/sendMessage" -d "chat_id=-zzzzzzzzzz&text=my sample text"

यदि आप चरण 2 को याद करते हैं, तो उस समूह के लिए कोई अपडेट नहीं होगा जिसे आप खोज रहे हैं। इसके अलावा अगर कई समूह हैं, तो आप प्रतिक्रिया में समूह का नाम देख सकते हैं ("शीर्षक": " group_name ")।

उम्मीद है की यह मदद करेगा।


2
बीओटी कॉन्फ़िगर कैसे करें, इस पर उत्कृष्ट गोलमाल।
डर_मेट्रिक्स

मैंने बॉट को एक संदेश भेजा , लेकिन कुछ सेकंड (या शायद मिनटों) की प्रतीक्षा करने और फिर से काम करने की कोशिश करने पर यह तुरंत काम नहीं आया।
लाइववायरबट

4
मुझे अपने बॉट को समूह में काम करना चाहिए, मुझे ब्राउज़र में {"ok": सच, "परिणाम": []} मिलता है। आशा है कि कोई मेरी मदद कर सकता है
TheMrkt

1
इसने मेरे लिए काम किया। एक बात, अगर आपके पास webhooks कॉन्फ़िगर किया गया है, तो आपको इसे अक्षम करना होगा। धन्यवाद!
एरच गार्सिया

3
@ TheMrkt ऐसा लगता है, जैसा कि अपादान कहा जाता है, कि इस /तरह /test somethingसे शुरू होने वाले संदेश को getUpdates खुश करता है।
e2-e4

100

मार्च 2020 तक, बस:

  • @RawDataBot को अपने समूह में आमंत्रित करें ।

इसमें शामिल होने पर एक JSON फ़ाइल आउटपुट होगी जहां आपका चैट आईडी message.chat.id पर स्थित होगा ।

"message": {
    "chat": {
        "id": -210987654,
        "title": ...,
        "type": "group",
        ...
    }
    ...
}

अपने समूह से @RawDataBot को बाद में किक करना सुनिश्चित करें।


3
कहाँ @RawDataBot यह उत्पादन करना चाहिए? मैंने अपने समूह में बॉट को जोड़ा, लेकिन कुछ भी नहीं हुआ। अद्यतन: आपको टेलीग्राम में एक उपयोगकर्ता नाम सेट करने की आवश्यकता है, अन्यथा कुछ भी नहीं होता है।
फ्रैंक मौलानेर

1
इसे हासिल करने का सबसे आसान तरीका है। धन्यवाद!
सुकानोबोब

1
@ चरोना: मैंने इसे फिर से सत्यापित किया। लेकिन ऐसा लगता है कि वेब क्लाइंट इस तरह बदल गया है कि बॉट को आमंत्रित करना पहले की तुलना में थोड़ा कठिन है। यहां बताया गया है कि आप यह कैसे कर सकते हैं: खोज क्षेत्र में RawDataBot के लिए खोजें। चैट सत्र शुरू करने के लिए संपर्क पर क्लिक करें। "संपर्क जानकारी" खोलने के लिए चैट शीर्षक पर क्लिक करें। "समूह में जोड़ें" पर क्लिक करें और समूह चुनें। यह तुरंत पहले की तरह जानकारी को आउटपुट करेगा। आशा है कि यह आप के लिए काम करता है।
ईवमू

42

2018 के मध्य के बाद:
1 :) @getidsbo या @RawDataBotअपने समूह को आमंत्रित करें और अपने समूह आईडी को sended चैट आईडी फ़ील्ड में प्राप्त करें।

Message
 ├ message_id: 338
 ├ from
 ┊  ├ id: *****
 ┊  ├ is_bot: false
 ┊  ├ first_name: 사이드
 ┊  ├ username: ******
 ┊  └ language_code: en
 ├ chat
 ┊  ├ id: -1001118554477    // This is Your Group id
 ┊  ├ title: Test Group
 ┊  └ type: supergroup
 ├ date: 1544948900
 └ text: A

2 :) प्लस मैसेंजर की तरह एक अनऑफिसियल मैसेंजर का उपयोग करें और समूह / चैनल की जानकारी में अपनी ग्रुप आईडी देखें।

इससे पहले मध्य 2018: (ऐसा नहीं प्रयोग)
1: गोटो ( https://web.telegram.org )
2: गोटो अपने Gorup और Gorup के अपने लिंक (लगाएं https://web.telegram.org/#/im ; p = g154513121 )
3: जी के बाद उस नंबर को कॉपी करें और -154513121
4 से पहले (-) डालें: गोरूप को अपना संदेश भेजें bot.sendMessage(-154513121, "Hi")
I अभी परीक्षण किया और एक आकर्षण की तरह काम करें


1
बहुत आसान। धन्यवाद! ग्राफाना अलर्ट अधिसूचना में परीक्षण किया गया। अब तक सब ठीक है।
एड्रियन निकोलिव

@Sedric Heidarizarei अगर यह संख्या नहीं है तो क्या होगा ( web.telegram.org/#/im?p=@welcomeworld )
मार्क्स बाबू

2
'@welcomeworld' आपका चैनल उपयोगकर्ता नाम है, आप '@getidsbot' को संदेश भेज सकते हैं और अपनी आईडी प्राप्त कर सकते हैं
Sedric Heidarizarei

वही किया, लेकिन त्रुटि के साथ सामना किया OverflowError: Python int को SQLite INTEGER में बदलने के लिए बहुत बड़ा ... क्लाइंट.send_message (-1240933195_1386556410045688xx08.'Hi ')
विनोद

मैंने अपना उत्तर अपडेट किया, यह विधि अब काम नहीं करती है, अस्थायी रूप से After mid-2018विधि का उपयोग करें ।
सेड्रिक हेइडरिज़ारेई

9

आप इस तरह से चैट आईडी प्राप्त कर सकते हैं।

अपने बॉट के साथ निजी चैट पर, एक यादृच्छिक संदेश भेजें। आप इस संदेश को बाद में खोज लेंगे।

Bot_father से अपना API टोकन प्राप्त करें: XXXXXXXXX:YYYYYYY-YYYYYYYYYYYYYYYYY_YY

फिर, अपने ब्राउज़र पर उस यूआरएल के साथ एक अनुरोध करें:

https://api.telegram.org/botXXXXXXXXX:YYYYYYY-YYYYYYYYYYYYYYYYY_YY/getUpdates

अनुरोध एक json प्रतिक्रिया देता है, json पाठ में आपकी खोज करता है random messageऔर उस ऑब्जेक्ट में चैट आईडी प्राप्त करता है।


8

अजगर और टेलीथॉन का उपयोग करके चैट आईडी प्राप्त करना बहुत आसान है। यह समाधान उन लोगों के लिए सबसे अच्छा है जो टेलीग्राम एपीआई के साथ काम करते हैं।

यदि आपके पास टेलीथॉन नहीं है, तो इसे चलाएं:

pip install telethon

यदि आपके पास टेलीग्राम वाला पंजीकृत ऐप नहीं है, तो एक को पंजीकृत यहां छवि विवरण दर्ज करें करें: लिंक यह है: https://my.telegram.org/

फिर निम्न कोड चलाएँ:

from telethon import InteractiveTelegramClient
from telethon.utils.tl_utils import get_display_name

client = InteractiveTelegramClient('session_id', 'YOUR_PHONE_NUMBER', api_id=1234YOURAPI_ID, api_hash='YOUR_API_HASH')

dialog_count = 10
dialogs, entities = client.get_dialogs(dialog_count)
for i, entity in enumerate(entities):
                    i += 1  # 1-based index
                    print('{}. {}. id: {}'.format(i, get_display_name(entity), entity.id))

आप अपने समूह को एक संदेश भेजना चाह सकते हैं ताकि समूह सूची में सबसे ऊपर दिखाई दे।


7

आप उसी तरह ग्रुप आईडी को पुनः प्राप्त कर सकते हैं। यह संदेश निकाय के रूप में दिखाई देता है message.chat.idऔर यह आमतौर पर एक नकारात्मक संख्या है, जहां सामान्य चैट सकारात्मक हैं।

ग्रुप आईडी और चैट आईडी केवल एक प्राप्त संदेश से प्राप्त की जा सकती है, सक्रिय समूह आदि को पुनः प्राप्त करने के लिए कोई कॉल उपलब्ध नहीं है। आपको समूह आईडी याद रखना होगा जब आप संदेश प्राप्त करते हैं और इसे कैश या कुछ समान में संग्रहीत करते हैं।


किसी और की पुष्टि कर सकते हैं यह सच है? मैं दस्तावेजों के माध्यम से पढ़ने के बाद हाँ कहने के करीब हूं। मैं अपनी आवश्यकताओं को पूरा करने के लिए समूह लिंक से chat_id प्राप्त करने में सक्षम होना चाहता हूं।
प्राइम

1

एक बॉट बनाना, या यदि पहले से ही सेट निम्नानुसार है:

संदेशों तक पहुँच है

जाहिर है, टेलीग्राम समूह कितना पुराना / नया है:

  1. समूह में एक बॉट जोड़ें
  2. समूह से बॉट निकालें
  3. समूह में फिर से बॉट जोड़ें

  4. स्क्रिप्ट फ़ाइल बनाएँ और getUpdatesविधि उदाहरण चलाएँ :

    var vApiTokenTelegram = "1234567890:???>yg5GeL5PuItAOEhvdcPPELAOCCy3jBo"; // @?????Bot API token
    var vUrlTelegram = "https://api.telegram.org/bot" + vApiTokenTelegram;

    function getUpdates() {
        var response = UrlFetchApp.fetch(vUrlTelegram + "/getUpdates");
        console.log(response.getContentText());
    }
  1. फ़ंक्शन निम्न कंसोल को लॉग करेगा:
[20-04-21 00:46:11:130 PDT] {"ok":true,"result":[{"update_id":81329501,
"message":{"message_id":975,"from":{"id":962548471,"is_bot":false,"first_name":"Trajano","last_name":"Roberto","username":"TrajanoRoberto","language_code":"en"},"chat":{"id":-1001202656383,"title":"R\u00e1dioRN - A voz da na\u00e7\u00e3o!","type":"supergroup"},"date":1587454914,"left_chat_participant":{"id":1215098445,"is_bot":true,"first_name":"MediaFlamengoRawBot","username":"MediaFlamengoRawBot"},"left_chat_member":{"id":1215098445,"is_bot":true,"first_name":"MediaFlamengoRawBot","username":"MediaFlamengoRawBot"}}},{"update_id":81329502,
"message":{"message_id":976,"from":{"id":962548471,"is_bot":false,"first_name":"Trajano","last_name":"Roberto","username":"TrajanoRoberto","language_code":"en"},"chat":{"id":-1001202656383,"title":"R\u00e1dioRN - A voz da na\u00e7\u00e3o!","type":"supergroup"},"date":1587454932,"new_chat_participant":{"id":1215098445,"is_bot":true,"first_name":"MediaFlamengoRawBot","username":"MediaFlamengoRawBot"},"new_chat_member":{"id":1215098445,"is_bot":true,"first_name":"MediaFlamengoRawBot","username":"MediaFlamengoRawBot"},"new_chat_members":[{"id":1215098445,"is_bot":true,"first_name":"MediaFlamengoRawBot","username":"MediaFlamengoRawBot"}]}}]}
  1. टेलीग्राम समूह chat_id को उपरोक्त संदेश से निकाला जा सकता है "chat":{"id":-1001202656383,"title"

आशा है कि यह मदद करता है (HTH)


0

बॉट को टेलीग्राम समूह पर एक बॉट सह-मौजूदा होने के बाद निम्न संदेश प्राप्त होता है:

आवश्यकतानुसार डेटा निकालें

function doPost(e) {
    var contents = JSON.parse(e.postData.contents);
    //  GmailApp.sendEmail(Session.getEffectiveUser().getEmail(), "Telegram Bot Update", JSON.stringify(contents, null, 4));
    var chat_id = contents.message.chat.id;
    var text = contents.message.text;
    var name = contents.message.from.first_name + " " +  contents.message.from.last_name;
    var sResponse = telegramBotMachine( chat_id, text, name );
}  

/ * सामग्री

{
    "update_id": 20383255,
    "message": {
        "message_id": 147,
        "from": {
            "id": 999999999,
            "is_bot": false,
            "first_name": "Trajano",
            "last_name": "Roberto",
            "username": "TrajanoRoberto",
            "language_code": "en"
        },
        "chat": {
            "id": -666666666,
            "title": "Test Ataque Media Flamengo",
            "type": "group",
            "all_members_are_administrators": true
        },
        "date": 1585450075,
        "text": "Menu"
    }
}

0

IMHO इसे करने का सबसे अच्छा तरीका TeleThon का उपयोग कर रहा है, लेकिन यह देखते हुए कि अपदाना द्वारा जवाब मरम्मत से परे पुराना है, मैं यहां काम कर समाधान लिखूंगा:

import os
import sys
from telethon import TelegramClient
from telethon.utils import get_display_name

import nest_asyncio
nest_asyncio.apply()

session_name = "<session_name>"
api_id = <api_id>
api_hash = "<api_hash>"
dialog_count = 10 # you may change this

if f"{session_name}.session" in os.listdir():
    os.remove(f"{session_name}.session")

client = TelegramClient(session_name, api_id, api_hash)

async def main():
    dialogs = await client.get_dialogs(dialog_count)
    for dialog in dialogs:
        print(get_display_name(dialog.entity), dialog.entity.id)

async with client:
    client.loop.run_until_complete(main())

यह स्निपेट आपको 10आपके टेलीग्राम में पहली चैट देगा।

मान्यताओं:

  • आप telethonऔर nest_asyncioस्थापित
  • आपके पास api_idऔर api_hashसे my.telegram.org

0
function doPost(e) {
    var contents = JSON.parse(e.postData.contents);
    //  GmailApp.sendEmail(Session.getEffectiveUser().getEmail(), "Telegram Bot Update",     JSON.stringify(contents, null, 4));
    var chat_id = contents.message.chat.id;
    var text = contents.message.text;
    var name = contents.message.from.first_name + " " +  contents.message.from.last_name;
    var sResponse = telegramBotMachine( chat_id, text, name );
}

जब कोई पोस्ट किसी समूह से उत्पन्न होती है, तो JSON ऑब्जेक्ट के माध्यम से जानकारी के कई टुकड़े उपलब्ध होते हैं, आप अपने उपयोग के लिए प्रासंगिक जानकारी निकाल सकते हैं, उदाहरण के लिए ऊपर चित्र दिखाता है कि कैसे chat_id सामग्री प्राप्त की जाए, एक ऑब्जेक्ट है
Trajano Roberto

0

यदि आप अपने बॉट को कार्यान्वित कर रहे हैं, तो एक समूह का नाम -> आईडी तालिका संग्रहीत रखें, और इसे एक कमांड के साथ पूछें। फिर आप प्रति नाम भी भेज सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.