Telegram Bot - grup sohbet kimliği nasıl alınır?


170

Telegram_bot kullanıyorum ve grup sohbetine bildirim göndermek için groupChat kimliği almaya çalışıyorum, ancak bunun için hangi yöntemleri kullanmam gerektiğini bilmiyorum.

Sohbet kimliğini almak için bot sohbete katıldığında ancak grup sohbet kimliğini almak için kullanmam gereken message.chat.id adresini kullanıyorum /


1
Bunun için bir bot yönetiyorum. Umarım bu yardımcı olur, bu < stackoverflow.com/a/37396871/6223024 >
fredy kardian

Yanıtlar:


227

Grup sohbet kimliğini almak için aşağıdakileri yapın:

  1. Telegram BOT değerini gruba ekleyin.

  2. YİD'niz için güncelleme listesini alın:

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

    Ör:

    https://api.telegram.org/bot123456789:jbd78sadvbdy63d37gda37bd8/getUpdates
    
  3. "Sohbet" nesnesini arayın:

{ "Update_id": 8393, "mesaj": { "message_id": 3, "adresinden": { "id": 7474 "first_name": "AAA"}, "sohbet": { "id": "title ":" "}," tarih ": 25.497," new_chat_participant ": {" id ": 71," first_name ":" İSİM", "kullanıcı adı": "YOUR_BOT_NAME"}}}

Bu, YİD'inizi bir gruba eklediğinizde verilen yanıtın bir örneğidir.

  1. Mesajlarınızı göndermek için "sohbet" nesnesinin "kimliğini" kullanın.

1
bir örnek verebilir misiniz?
Roman Podpryatov

2
@WannaBeCoder, diğer üyeler gibi bir gruba bir YİD ekleyebilirsiniz: Grup özelliklerinize gidin, üye ekle'yi tıklayın, ardından YİD'in adını aramak için arama simgesini kullanın. AMA, Telegram gruplarındaki son değişikliklerden bu yana, YİD olsun veya olmasın yeni bir üye eklemek için bir grup "yönetici" olmanız gerektiğini unutmayın.
Maverick_Java

37
Yeni oluşturulan grup için getUpdatesistek getiri {"ok":true,"result":[]}ben aracılığı grubu ve söz konusu bota mesajların demet göndermeyi deneyin bile @ve bazı rastgele "komutları" /my_id, /start, /help. Ne yapacağınız hakkında bir fikriniz var mı? - GÜNCELLEME: Tamam, botu gruptan çıkarmak ve bot geri eklemek bu sorunu düzeltti (ayrıca gruptaki sohbet kimliğini yazdırdı) --- bot oluşturma sırasında bot eklenemiyor gibi görünüyor.
rutsky

8
bu döndürür: {"ok": true, "sonuç": []}
Tom

3
Selam tom. Rutsky çözümünü denediniz mi: "botu gruptan kaldırmak ve bot geri eklemek bu sorunu düzeltti (ayrıca grupta sohbet kimliği yazdırdı) --- bot grup oluşturma sırasında eklenemiyor gibi görünüyor?" Aynı problemle birkaç kez karşılaştım ve botu gruptan çıkararak tekrar ekleyerek sorunu her zaman çözdüm. Bu size yardımcı olmazsa bana bildirin.
Maverick_Java

136

Birkaç saat boyunca mücadele ettikten sonra benim için çalışan dizi:

Bot adının my_bot olduğunu varsayalım .

1- Botu gruba ekleyin.
Gruba gidin, grup adına tıklayın, Üye ekle'ye tıklayın, arama kutusunda botunuzu şu şekilde arayın: @ my_bot, botunuzu seçin ve ekle'yi tıklayın.

2- Bot'a kukla bir mesaj gönderin.
Bu örneği kullanabilirsiniz: /my_id @my_bot
(Birkaç mesaj denedim, tüm mesajlar işe yaramadı. Yukarıdaki örnek iyi çalışıyor. Belki mesaj / ile başlamalıdır)

3- Aşağıdaki URL'ye gidin: https://api.telegram.org/botXXX:YYYY/getUpdates
XXX: YYYY'yi bot simgenizle değiştirin

4- "chat"
ifadesini arayın: {"id": - zzzzzzzzzz, -zzzzzzzzzz (negatif işaretli) sohbet kimliğinizdir.

5- Test etme: Gruba bir kıvrımla mesaj göndermeyi test edebilirsiniz:

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

2. adımı kaçırırsanız, aradığınız grup için güncelleme olmaz. Ayrıca birden fazla grup varsa, yanıtta grup adını arayabilirsiniz ("title": " grup_adı ").

Bu yardımcı olur umarım.


2
YİD yapılandırılmış hale getirme konusunda mükemmel dağılım
fear_matrix

Bot'a bir mesaj gönderdim ama anında çalışmadı, birkaç saniye (veya muhtemelen dakika) bekledi ve kıvırmayı tekrar denedi.
LiveWireBT

4
Botumu grupta çalıştıramıyorum, tarayıcıda {"ok": true, "sonuç": []} alıyorum. Birisi bana yardımcı olabilir umut
TheMrkt

1
Bu benim için çalıştı. Bir şey, yapılandırılmış web kancalarınız varsa, devre dışı bırakmanız gerekir. Teşekkürler!
Erich García

3
@TheMrkt Görünüşe göre, apadana'nın dediği /gibi başlayan bir mesaj /test somethinggetUpdates'i mutlu ediyor.
e2-e4

100

Mart 2020 itibariyle, basitçe:

  • @RawDataBot adlı kişiyi grubunuza davet edin.

Katıldıktan sonra sohbet kimliğinizin message.chat.id adresinde bulunduğu bir JSON dosyası çıktılar .

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

Daha sonra grubunuzdan @RawDataBot'u tekmelediğinizden emin olun.


3
@RawDataBot bunu nereden çıkarmalı? Botu grubuma ekledim, ama hiçbir şey olmadı. Güncelleme: Telegram'da bir kullanıcı adınızın olması gerekir, aksi takdirde hiçbir şey olmaz.
Frank Meulenaar

1
Bunu başarmanın en kolay yolu. Teşekkürler!
suchanoob

1
@Cherona: Sadece doğruladım. Ancak web istemcisi bot davet eskisinden biraz daha zor olacak şekilde değişmiş gibi görünüyor. Bunu nasıl yapabileceğiniz aşağıda açıklanmıştır: Arama alanında RawDataBot'u arayın. Sohbet oturumu başlatmak için kişiyi tıklayın. "Kişi bilgileri" ni açmak için sohbet başlığını tıklayın. "Gruba ekle" yi tıklayın ve grubu seçin. Hemen bilgi eskisi gibi çıkacaktır. Umarım sizin için çalışır.
eivamu

42

2018'in ortasından sonra:
1 :) @getidsbo'yu veya @RawDataBotgrubunuzu davet edin ve grup kimliğinizi gönderilmiş sohbet kimliği alanına alın.

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 :) Plus Messenger gibi gayri resmi bir Messenger kullanın ve grup / kanal bilgilerinizde grup kimliğinizi görün.

2018'in ortasından önce: (Kullanma)
1: Git ( https://web.telegram.org )
2: Gorup'ınızı yapın ve Gorup bağlantınızı bulun ( https://web.telegram.org/#/im ? p = g154513121 )
3: Bu sayıyı g'den sonra kopyalayın ve bir (-) koyun. Bundan Önce -154513121
4: Mesajınızı Gorup'a Gönderin bot.sendMessage(-154513121, "Hi")
Şimdi Test Ettim ve Cazibe Gibi Çalışıyorum


1
Çok basit. Teşekkürler! Grafana Uyarı Bildiriminde test edilmiştir. Çok uzak çok iyi.
Adrian Nicolaiev

@Sedric Heidarizarei eğer bu böyle bir sayı değilse ( web.telegram.org/#/im?p=@welcomeworld )
Marx Babu

2
'@welcomeworld' kanal kullanıcı adınız, '@getidsbot' a mesaj iletebilir ve kimliğinizi alabilirsiniz
Sedric Heidarizarei

aynı şeyi yaptı ancak OverflowError hatasıyla karşılaştı: Python int, SQLite INTEGER'e dönüştürülemeyecek kadar büyük ... client.send_message (-1240933195_1386556410045688xx08.'Hi ')
vinod

Cevabımı güncelledim, Bu yöntem artık çalışmıyor, Geçici olarak After mid-2018yöntemi kullanın .
Sedric Heidarizarei

9

Sohbet Kimliğini bu şekilde alabilirsiniz.

Botunuzla özel sohbette rastgele bir mesaj gönderin. Bu mesajı daha sonra arayacaksınız.

API simgenizi bot_father'dan alın: XXXXXXXXX:YYYYYYY-YYYYYYYYYYYYYYYYY_YY

Ardından, tarayıcınızda bu URL ile bir istekte bulunun:

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

İstek bir json yanıtı döndürür random message.


8

Python ve telethon kullanarak sohbet kimliği almak çok kolaydır. Bu çözüm, telgraf API'siyle çalışanlar için en iyisidir.

Telefonunuz yoksa, şunu çalıştırın:

pip install telethon

Telegram ile kayıtlı bir uygulamanız yoksa, bir tane kaydedin: resim açıklamasını buraya girin Bağlantı şudur: https://my.telegram.org/

Ardından aşağıdaki kodu çalıştırın:

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))

Grubun listenin en üstünde görünmesi için grubunuza bir mesaj göndermek isteyebilirsiniz.


7

Grup kimliğini aynı şekilde alabilirsiniz. İleti gövdesinde olarak görünür message.chat.idve genellikle normal sohbetlerin pozitif olduğu negatif bir sayıdır.

Grup kimlikleri ve sohbet kimlikleri yalnızca alınan bir mesajdan alınabilir, etkin grupları almak için kullanılabilir arama yoktur.


Herkes bunun doğru olduğunu onaylayabilir mi? Belgeleri okuduktan sonra evet demeye çok yakınım. Gereksinimlerimi yerine getirmek için chat_id'i grup bağlantısından alabilmek istiyorum.
PrimeTimeTran

1

bir bot oluşturun veya önceden oluşturulmuşsa aşağıdaki gibi ayarlayın:

mesajlara erişimi var

Görünüşe göre, Telegram grubunun kaç yaşında / yeni olduğuna bakılmaksızın:

  1. gruba bot ekle
  2. bot'u gruptan çıkar
  3. botu tekrar gruba ekle

  4. bir komut dosyası oluşturun ve getUpdatesyöntem örneğini çalıştırın :

    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. işlevi konsola aşağıdakileri kaydedecektir:
[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. Telegram grubu chat_id yukarıdaki mesajdan çıkarılabilir "chat":{"id":-1001202656383,"title"

Umut etmek bu yardım etmek (HTH)


0

bot, bir botun birlikte var olduğu bir Telegram grubundan kaynaklanan aşağıdaki mesajı alır:

verileri gerektiği gibi çıkarın

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 );
}  

/ * içindekiler

{
    "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 Bunu yapmanın en iyi yolu Yardım kampanyasının kullanarak, ama bu verilen cevap ile Apadananın onarılamayacak modası geçmiş, çalışıyorum çözümü burada yazacağım:

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())

bu snippet 10size Telegram'ınızdaki ilk sohbetleri verecektir .

Varsayımlar:

  • kurdun telethonve nest_asynciokurdun
  • Sahip api_idve api_hashgelen 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 );
}

Gruptan bir post kaynaklanır, bilginin çeşitli parçaları bir JSON nesnesi yoluyla ulaşılabilir olduğunda chat_id içeriklerini almak üzere verilmektedir yukarıda size kullanım için bir nesne örneğini ilgili bilgileri olduğunu çıkarabilir
Trajano Roberto

0

Botunuzu uyguluyorsanız, bir grup adı -> id tablosu saklayın ve komutla isteyin. Daha sonra her isim için gönderebilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.