私は telegram_bot を使用しており、 groupChat id を取得してグループチャットに通知を送信しようとしていますが、どの方法を使用する必要があるかわかりません。
チャットIDを取得するために、ボットがチャットに参加したときにmessage.chat.idに使用しますが、グループチャットIDを取得するために使用する必要があります/見つかりません
私は telegram_bot を使用しており、 groupChat id を取得してグループチャットに通知を送信しようとしていますが、どの方法を使用する必要があるかわかりません。
チャットIDを取得するために、ボットがチャットに参加したときにmessage.chat.idに使用しますが、グループチャットIDを取得するために使用する必要があります/見つかりません
グループ チャット ID を取得するには、次のようにします。
Telegram BOT をグループに追加します。
BOT の更新のリストを取得します。
https://api.telegram.org/bot<YourBOTToken>/getUpdates
元:
https://api.telegram.org/bot123456789:jbd78sadvbdy63d37gda37bd8/getUpdates
「チャット」オブジェクトを探します。
{"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 をグループに追加したときの応答のサンプルです。
「チャット」オブジェクトの「id」を使用してメッセージを送信します。
(ボットを使用して新しいグループを作成し、 のみが表示される場合は、ボットを{"ok":true,"result":[]}
削除してグループに再度追加します)
プライベート チャートは画像argoprojlabs/argocd-notifications:v1.1.0
以上でのみ機能します。
数時間苦労した後、私のために働いたシーケンスは次のとおりです。
ボット名が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 ")。
お役に立てれば。
2021 年 5 月現在、単純に:
参加すると、チャット IDがmessage.chat.idにある JSON ファイルが出力されます。
"message": {
"chat": {
"id": -210987654,
"title": ...,
"type": "group",
...
}
...
}
その後、必ず @RawDataBot をグループから除外してください。
これを行う最善の方法は 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 の最初のチャットを提供します。
仮定:
telethon
てnest_asyncio
インストールしたapi_id
ていますapi_hash