ฉันใช้telegram_botและพยายามรับ groupChat id เพื่อส่งการแจ้งเตือนไปยังการแชทเป็นกลุ่ม แต่ไม่ทราบวิธีการที่ฉันต้องใช้
ในการรับ ID แชทฉันใช้เพื่อส่งข้อความ chat.id เมื่อบอตเข้าร่วมแชท แต่ฉันต้องใช้เพื่อรับ ID แชทกลุ่มไม่สามารถค้นหา /
ฉันใช้telegram_botและพยายามรับ groupChat id เพื่อส่งการแจ้งเตือนไปยังการแชทเป็นกลุ่ม แต่ไม่ทราบวิธีการที่ฉันต้องใช้
ในการรับ ID แชทฉันใช้เพื่อส่งข้อความ chat.id เมื่อบอตเข้าร่วมแชท แต่ฉันต้องใช้เพื่อรับ ID แชทกลุ่มไม่สามารถค้นหา /
คำตอบ:
เพื่อให้ได้ ID การแชทเป็นกลุ่มให้ทำดังนี้:
เพิ่ม Telegram BOT ให้กับกลุ่ม
รับรายการอัปเดตสำหรับ BOT ของคุณ:
https://api.telegram.org/bot<YourBOTToken>/getUpdates
Ex:
https://api.telegram.org/bot123456789:jbd78sadvbdy63d37gda37bd8/getUpdates
มองหาวัตถุ "แชท":
{ "update_id": 8393 "ข้อความ": { "Message_id": 3, "จาก": { "id": 7474 "first_name": "AAA"}, "แชท": { "id": "ชื่อ ":" "}," วันที่ ": 25497" new_chat_participant ": {" id ": 71" first_name ":" NAME", "ชื่อผู้ใช้": "YOUR_BOT_NAME"}}}
นี่คือตัวอย่างของการตอบสนองเมื่อคุณเพิ่ม BOT ของคุณลงในกลุ่ม
getUpdates
ผลตอบแทนที่ร้องขอ{"ok":true,"result":[]}
แม้ว่าผมจะพยายามที่จะส่งพวงของข้อความไปยังกลุ่มและกล่าวถึง ธ ปทผ่าน@
และบางส่วน /my_id
"คำสั่ง" สุ่ม/start
, /help
, ความคิดใดที่จะทำอย่างไร - อัปเดต: ตกลงลบบ็อตออกจากกลุ่มและเพิ่มบอทกลับมาแก้ไขปัญหานี้ (รวมถึงพิมพ์รหัสแชทในกลุ่ม) --- ดูเหมือนว่าบอทไม่สามารถเพิ่มได้ในระหว่างการสร้างกลุ่ม
นี่คือลำดับที่ทำงานให้ฉันหลังจากดิ้นรนเป็นเวลาหลายชั่วโมง:
สมมติชื่อบอทเป็นmy_bot
1- เพิ่มบอทไปยังกลุ่ม
ไปที่กลุ่มคลิกที่ชื่อกลุ่มคลิกที่เพิ่มสมาชิกในการค้นหาช่องค้นหาบ็อตของคุณเช่นนี้: @my_bot เลือกบอทของคุณและคลิกเพิ่ม
2- ส่งข้อความจำลองไปยังบอท
คุณสามารถใช้ตัวอย่างนี้: /my_id @my_bot
(ฉันพยายามข้อความไม่กี่ข้อความบางข้อความไม่ทำงานตัวอย่างข้างต้นใช้งานได้ดีบางทีข้อความควรเริ่มต้นด้วย /)
3- ไปที่ URL ต่อไปนี้: https://api.telegram.org/botXXX:YYYY/getUpdates
แทนที่ XXX: YYYY ด้วยโทเค็นบ็อตของคุณ
4- ค้นหา "แชท": {"id": - zzzzzzzzzz,
-zzzzzzzzzz เป็นรหัสแชทของคุณ (พร้อมเครื่องหมายลบ)
5- การทดสอบ:คุณสามารถทดสอบการส่งข้อความไปยังกลุ่มด้วย curl:
curl -X POST "https://api.telegram.org/botXXX:YYYY/sendMessage" -d "chat_id=-zzzzzzzzzz&text=my sample text"
หากคุณพลาดขั้นตอนที่ 2 จะไม่มีการอัปเดตสำหรับกลุ่มที่คุณกำลังมองหา นอกจากนี้หากมีหลายกลุ่มคุณสามารถค้นหาชื่อกลุ่มในการตอบกลับ ("ชื่อ": " group_name ")
หวังว่านี่จะช่วยได้
/
like /test something
ทำให้ getUpdates มีความสุข
เมื่อวันที่มีนาคม 2563 เพียง:
เมื่อเข้าร่วมก็จะส่งออกเป็นไฟล์ JSON ที่คุณID แชทจะตั้งอยู่ที่message.chat.id
"message": {
"chat": {
"id": -210987654,
"title": ...,
"type": "group",
...
}
...
}
ให้แน่ใจว่าได้เตะ @RawDataBot จากกลุ่มของคุณในภายหลัง
หลังกลางปี 2018:
1 :) เชิญ@getidsboหรือ@RawDataBot
กลุ่มของคุณและรับรหัสกลุ่มของคุณในช่อง 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 :) ใช้ Unofficicl Messenger อย่าง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")
I ที่ทดสอบแล้วและทำงานเหมือนเครื่องราง
After mid-2018
วิธีชั่วคราว
คุณสามารถรับ ID แชทด้วยวิธีนี้
ในการแชทส่วนตัวด้วยบอตของคุณส่งข้อความแบบสุ่ม คุณจะค้นหาข้อความนี้ในภายหลัง
รับโทเค็น API ของคุณจาก bot_father: XXXXXXXXX:YYYYYYY-YYYYYYYYYYYYYYYYY_YY
จากนั้นบนเบราว์เซอร์ของคุณทำการร้องขอด้วย url นั้น:
https://api.telegram.org/botXXXXXXXXX:YYYYYYY-YYYYYYYYYYYYYYYYY_YY/getUpdates
คำขอส่งคืนการตอบสนอง json ในข้อความ json ค้นหาของคุณrandom message
และได้รับ ID การแชทในวัตถุนั้น
การใช้ python และ telethon เป็นเรื่องง่ายมากที่จะได้รับ ID การแชท วิธีนี้เหมาะสำหรับผู้ที่ทำงานกับ telegram API
หากคุณไม่มี telethon ให้เรียกใช้สิ่งนี้:
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 ได้รับข้อความต่อไปนี้เกิดขึ้นในกลุ่มโทรเลขที่มีบอตอยู่ร่วมกัน:
ดึงข้อมูลตามต้องการ
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 และถามด้วยคำสั่ง จากนั้นคุณสามารถส่งต่อชื่อ