310

私は telegram_bot を使用しており groupChat id を取得してグループチャットに通知を送信しようとしていますが、どの方法を使用する必要があるかわかりません。

チャットIDを取得するために、ボットがチャットに参加したときにmessage.chat.idに使用しますが、グループチャットIDを取得するために使用する必要があります/見つかりません

4

16 に答える 16

404

グループ チャット ID を取得するには、次のようにします。

  1. Telegram BOT をグループに追加します。

  2. BOT の更新のリストを取得します。

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

    元:

     https://api.telegram.org/bot123456789:jbd78sadvbdy63d37gda37bd8/getUpdates
    
  3. 「チャット」オブジェクトを探します。

{"update_id":8393,"message":{"message_id":3,"from":{"id":7474,"first_name":"AAA"},"chat":{"id":<group_ID> ,"タイトル":""},"日付":25497,"new_chat_participant":{"id":71,"first_name":"NAME","username":"YOUR_BOT_NAME"}}}

これは、BOT をグループに追加したときの応答のサンプルです。

  1. 「チャット」オブジェクトの「id」を使用してメッセージを送信します。

  2. (ボットを使用して新しいグループを作成し、 のみが表示される場合は、ボットを{"ok":true,"result":[]}削除してグループに再度追加します)

  3. プライベート チャートは画像argoprojlabs/argocd-notifications:v1.1.0以上でのみ機能します。

于 2015-09-14T19:10:07.577 に答える
219

数時間苦労した後、私のために働いたシーケンスは次のとおりです。

ボット名がmy_botであるとします。

1-ボットをグループに追加します。
グループに移動し、グループ名をクリックし、[メンバーの追加] をクリックします。検索ボックスで、@my_bot のようにボットを検索し、ボットを選択して [追加] をクリックします。

2- ボットにダミー メッセージを送信します。
次の例を使用できます/my_id @my_bot

3- 次の URL に移動します: https://api.telegram.org/botXXX:YYYY/getUpdates
XXX:YYYY をボット トークンに置き換えます。

4- "chat":{"id":-zzzzzzzzzz を
探します。-zzzzzzzzzz はチャット ID (マイナス記号付き) です。

5-テスト: curl を使用してグループにメッセージを送信するテストを実行できます。

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

手順 2 を実行しないと、探しているグループの更新はありません。また、複数のグループがある場合は、応答でグループ名を探すことができます ("title":" group_name ")。

お役に立てれば。

于 2016-07-15T06:01:34.170 に答える
198

2021 年 5 月現在、単純に:

  • @RawDataBotをグループに招待します。

参加すると、チャット IDmessage.chat.idにある JSON ファイルが出力されます。

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

その後、必ず @RawDataBot をグループから除外してください。

于 2017-09-15T20:28:09.070 に答える
1

これを行う最善の方法は TeleThon を使用することですが、apadanaによる回答が古すぎて修復できないことを考えると、ここに実際の解決策を書きます。

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、Telegram の最初のチャットを提供します。

仮定:

  • あなたが持っtelethonnest_asyncioインストールした
  • あなたはmy.telegram.orgから持っapi_idていますapi_hash
于 2020-04-01T23:59:01.853 に答える