telegram_bot을 사용 하고 groupChat ID를 가져와 그룹 채팅에 알림을 보내려고했지만 어떤 방법을 사용 해야하는지 모르겠습니다.
봇이 채팅에 참여했지만 그룹 채팅 ID를 얻는 데 사용해야하는 채팅 ID를 얻으려면 message.chat.id에 사용합니다.
telegram_bot을 사용 하고 groupChat ID를 가져와 그룹 채팅에 알림을 보내려고했지만 어떤 방법을 사용 해야하는지 모르겠습니다.
봇이 채팅에 참여했지만 그룹 채팅 ID를 얻는 데 사용해야하는 채팅 ID를 얻으려면 message.chat.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
. 어떤 아이디어를해야합니까? -업데이트 : 좋아, 그룹에서 봇을 제거하고 봇을 다시 추가하면이 문제가 해결되었습니다 (그룹에서 채팅 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 -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 와 같은 비 충족 메신저를 사용하고 그룹 / 채널 정보에서 그룹 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
. 일시적으로 방법을 사용하십시오 .
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)
bot은 봇이 공존하는 Telegram 그룹에서 시작된 다음 메시지를 수신합니다.
필요에 따라 데이터를 추출
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를 사용하는 가장 좋은 방법은 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
텔레 그램 채팅을 제공합니다.
가정 :
telethon
있고nest_asyncio
설치했습니다api_id
와 api_hash
에서 my.telegram.orgfunction 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 테이블을 저장하고 명령으로 요청하십시오. 그런 다음 이름별로 보낼 수도 있습니다.