私が使用してきたtelegram_botを、グループチャットに通知を送信するためにグループチャットIDを取得しようとしているが、私はそれを使用する必要がどの方法を知りません。
チャットIDを取得するために、ボットがチャットに参加したときにmessage.chat.idを使用しましたが、グループチャットIDを取得するために使用する必要があるのは、見つかりません/
私が使用してきたtelegram_botを、グループチャットに通知を送信するためにグループチャット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" :, "タイトル":" "}、" date ":25497、" new_chat_participant ":{" id ":71、" first_name ":" NAME "、" username ":" YOUR_BOT_NAME "}}}
これは、BOTをグループに追加したときの応答のサンプルです。
getUpdates
要求に戻り{"ok":true,"result":[]}
、私は経由グループと言及ボットへのメッセージの束を送信しようとした場合でも@
、いくつかのランダムな「コマンド」/my_id
、/start
、/help
。何かアイデアはありますか?-更新:OK、グループからボットを削除し、ボットを追加してこの問題を修正しました(グループのチャットIDも出力されました)---グループの作成中にボットを追加できないようです。
数時間苦労した後私のために働いたシーケンスはここにあります:
ボット名が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 ")。
お役に立てれば。
/
よう /test something
です。
2020年3月の時点で、単に次のようになります。
参加すると、チャットIDがmessage.chat.idにあるJSONファイルが出力されます。
"message": {
"chat": {
"id": -210987654,
"title": ...,
"type": "group",
...
}
...
}
後でグループから@RawDataBotをキックしてください。
2018年半ば以降:
1 :) @getidsboまたは@RawDataBot
グループに招待し、送信されたチャットIDフィールドでグループIDを取得します。
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のような非公式なMessengerを使用し、グループ/チャネル情報でグループIDを確認します。
2018年中頃まで:(使用しないでください)
1:Goto(https://web.telegram.org)
2:Gorupにアクセスして Gorupのリンクを検索(https://web.telegram.org/#/im ?p = g154513121)
3:gの後にその番号をコピーし、(-)を入れますその前に-154513121
4:メッセージをGorup bot.sendMessage(-154513121, "Hi")
に送信し
ます。
After mid-2018
。
この方法でチャットIDを取得できます。
ボットとのプライベートチャットで、ランダムなメッセージを送信します。このメッセージは後で検索します。
bot_fatherからAPIトークンを取得します。 XXXXXXXXX:YYYYYYY-YYYYYYYYYYYYYYYYY_YY
次に、ブラウザでそのURLを使用してリクエストを行います。
https://api.telegram.org/botXXXXXXXXX:YYYYYYY-YYYYYYYYYYYYYYYYY_YY/getUpdates
リクエストはjsonレスポンスを返し、jsonテキスト検索random message
でそのオブジェクトのチャットIDを取得します。
PythonとTelethonを使用すると、チャットIDを取得するのは非常に簡単です。このソリューションは、テレグラムAPIを使用するユーザーに最適です。
テレソンがない場合は、次のコマンドを実行します。
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))
グループにメッセージを送信すると、グループがリストの一番上に表示されます。
同じ方法でグループIDを取得できます。メッセージ本文に表示され、message.chat.id
通常は負の数です。通常のチャットは正の数です。
グループIDとチャットIDは、受信したメッセージからのみ取得できます。アクティブなグループを取得するための呼び出しはありません。メッセージを受信してキャッシュまたは類似のものに保存する場合、グループIDを覚えておく必要があります。
ボットを作成するか、すでに作成されている場合は次のように設定します。
メッセージにアクセスできます
どうやら、Telegramグループの新旧に関係なく:
グループに再度ボットを追加する
スクリプトファイルを作成し、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());
}
[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"}]}}]}
"chat":{"id":-1001202656383,"title"
これが役に立てば幸い(HTH)
ボットは、ボットが共存しているテレグラムグループから発信された次のメッセージを受信します。
必要に応じてデータを抽出する
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"
}
}
IMHOこれを行うための最善の方法は、テレソンを使用しますが、その与えられた答えによってアパダナは修復不可能古いですが、私は作業溶液をここに書きます:
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
とmy.telegram.orgapi_hash
から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 );
}
ボットを実装している場合は、グループ名-> idテーブルを保存しておいて、コマンドで確認してください。その後、名前ごとに送信することもできます。