Telegram Bot API 10.2 Communities: วิธีจัดการเหตุการณ์เพิ่มและนำแชตออก
Telegram Communities ใน Bot API 10.2 เชื่อมหลาย supergroup, channel และ bot ไว้ภายใต้หัวข้อเดียวกัน เมื่อแชตปัจจุบันถูกเพิ่มเข้า Community บอตจะได้รับ Message ปกติที่มี community_chat_added; เมื่อนำออกจะได้รับ community_chat_removed ควรใช้ทั้งสองเป็นสัญญาณวงจรชีวิตของโครงสร้าง เก็บความสัมพันธ์ระหว่าง chat กับ Community แต่ยังคงส่งต่อข้อความตาม chat ID แยกกัน เพราะ Community ไม่ได้รวมทุกแชตเป็นสตรีมเดียว
ประเด็นสำคัญ
- Telegram เปิดตัว Communities และการรองรับ Bot API ขั้นต้นเมื่อวันที่ 14 กรกฎาคม 2026
community_chat_addedมีออบเจ็กต์Communityใหม่ ส่วนcommunity_chat_removedยังไม่มีฟิลด์ข้อมูล- ทั้งคู่เป็นฟิลด์ service message ภายใน
Messageไม่ใช่Updateระดับบนชนิดใหม่ - ต้องบันทึกความสัมพันธ์ตั้งแต่เหตุการณ์เพิ่ม เพราะเหตุการณ์นำออกไม่ส่ง Community ซ้ำมาให้
- โครงสร้าง Telegram Community กับคิวบริการลูกค้าจาก Telegram, LINE, WhatsApp และช่องทางอื่นเป็นคนละชั้นกัน
Bot API 10.2 เปิดข้อมูลอะไรของ Telegram Communities
ตามประกาศอย่างเป็นทางการของ Telegram Community เชื่อม group, channel และ bot ที่เกี่ยวข้องกับหัวข้อเดียวกัน สมาชิกค้นหาและเข้าร่วมแชตที่มองเห็นได้โดยไม่ต้องใช้ invite link แยกแต่ละห้อง แชตยังตั้งเป็น hidden ได้ โดยให้เห็นเฉพาะสมาชิกของแชตนั้นและผู้ดูแล Community ค่าเริ่มต้นอนุญาตให้สมาชิกเพิ่มแชต แต่ผู้ดูแลจำกัดสิทธิ์ให้การเพิ่มกลายเป็นข้อเสนอได้
Bot API 10.2 ระบุว่านี่คือ การรองรับขั้นต้น ขอบเขตปัจจุบันมีดังนี้:
| ส่วนของ Bot API | บอกอะไรได้ | บอกอะไรไม่ได้ |
|---|---|---|
Message.community_chat_added | แชตปัจจุบันถูกเพิ่ม พร้อมออบเจ็กต์ Community ใหม่ | ประวัติครบทุกแชตใน Community |
Message.community_chat_removed | แชตปัจจุบันถูกนำออก | ถูกนำออกจาก Community ใด เพราะออบเจ็กต์ยังว่าง |
ChatFullInfo.community | Community ปัจจุบันที่ getChat ส่งกลับ หากมี | inbox ร่วมหรือสิทธิ์รวมทุกแชต |
ฟีเจอร์นี้ต่างจากข้อความบอตแบบชั่วคราวในกลุ่ม Telegramที่กำหนดว่าใครเห็นคำตอบ และต่างจาก Bot API 10.1 Rich Messagesที่กำหนดรูปแบบข้อความ Communities อธิบายความสัมพันธ์ระหว่างแชต
วิธีจัดการ community_chat_added และ community_chat_removed
1. ตรวจว่า client Bot API ไม่ทิ้งฟิลด์ใหม่
อัปเดต type หรือไลบรารีให้รองรับ Bot API 10.2 หาก framework ลบฟิลด์ Message ที่ไม่รู้จักระหว่าง deserialize Telegram อาจส่ง Update สำเร็จแต่แอปไม่เห็นสัญญาณ Community
หากจำกัด allowed_updates ให้คง message ไว้อย่างน้อย และเมื่อ Community มี channel ให้ทดสอบ channel_post ด้วย เพราะ Telegram เพิ่มฟิลด์ไว้บนชนิด Message ร่วม ไม่ได้สร้าง Update ระดับบนใหม่
2. บันทึกเหตุการณ์เพิ่มทันที
ตัวอย่าง Node.js นี้ใช้เฉพาะฟิลด์ที่เอกสารทางการระบุ และเก็บออบเจ็กต์ Community ทั้งก้อนโดยไม่สมมติฟิลด์ภายใน:
async function handleTelegramUpdate(update, store) {
const message = update.message ?? update.channel_post;
if (!message) return;
if (message.community_chat_added) {
await store.upsertCommunityMembership({
chatId: String(message.chat.id),
community: message.community_chat_added.community,
updateId: update.update_id,
observedAt: new Date(message.date * 1000).toISOString(),
});
}
if (Object.hasOwn(message, "community_chat_removed")) {
await store.removeCommunityMembership({
chatId: String(message.chat.id),
updateId: update.update_id,
});
}
}
เก็บ update_id เป็น idempotency key Telegram ระบุว่า ID โดยปกติเพิ่มตามลำดับและใช้ตัดรายการซ้ำหรือกู้ลำดับได้ Update ที่ยังไม่ได้รับจะถูกเก็บไม่เกิน 24 ชั่วโมง ดังนั้นคิว webhook ไม่ใช่ฐานข้อมูลประวัติของคุณ
3. ตอนนำออกให้ค้นความสัมพันธ์เดิมด้วย chat ID
CommunityChatRemoved ยังเป็นออบเจ็กต์ว่าง Handler จึงต้องใช้ message.chat.id ค้นความสัมพันธ์ที่บันทึกไว้ ไม่สามารถอ่าน Community ID จากเหตุการณ์นำออกได้ การเพิ่มและนำออกควร idempotent: การเพิ่มซ้ำอัปเดตระเบียนเดิม ส่วนการนำออกซ้ำหลังลบแล้วไม่ควรเปลี่ยนอะไร
4. ตรวจสถานะปัจจุบันด้วย getChat
Bot API 10.2 เพิ่มฟิลด์ community แบบ optional ใน ChatFullInfo ที่ getChat ส่งกลับ ใช้ตรวจเทียบหลัง webhook เชื่อมต่อใหม่ หลังอัปเดตไลบรารี หรือเมื่อพบช่องว่างของ update_id โดยไม่จำเป็นต้อง polling ทุกแชตตลอดเวลา
ใน Community สำหรับทดสอบ ควรครอบคลุมการเพิ่ม supergroup, การนำออก, การส่ง update_id เดิมซ้ำ, การเทียบกับ getChat และทั้งแชต visible กับ hidden ภายใต้บทบาทผู้ดูแลจริง
แยกโครงสร้าง Community ออกจากการส่งต่อข้อความ
Community ช่วยค้นหาและจัดระเบียบภายใน Telegram แต่ไม่รวมประวัติข้อความ สิทธิ์ chat ID หรือการเข้าถึงของบอต
| ความต้องการ | แหล่งข้อมูลที่ถูกต้อง |
|---|---|
| แชตถูกเพิ่มหรือนำออกจาก Telegram Community | service message ของ Bot API 10.2 และ getChat อย่างเป็นทางการ |
| บอตรับข้อความ Telegram ปกติ | Bot API Update และสิทธิ์ของแชต |
| ทีมรับข้อความลูกค้าจากบัญชีทั่วไปหลายแพลตฟอร์ม | ชั้น inbound มาตรฐาน เช่น UnifyPort message.received |
สำหรับทีมไทยที่ใช้ LINE ควบคู่กับ Telegram, WhatsApp หรือแพลตฟอร์มอื่น Telegram Community ไม่ได้ทำให้ช่องทางเหล่านั้นเป็นมาตรฐานเดียวกัน คู่มือ Telegram automation และคิวข้ามช่องทางอธิบายเส้นแบ่งนี้
UnifyPort อยู่ตรงไหน
UnifyPort ไม่ได้สร้าง Telegram Communities ไม่ได้ส่ง CommunityChatAdded ไม่ได้จัดการการมองเห็น Community และไม่แทนวงจรชีวิตของ Bot API อย่างเป็นทางการ หากต้องใช้ความสามารถเหล่านี้ ให้ใช้ API ทางการของ Telegram
UnifyPort รองรับอีกโจทย์หนึ่ง: ทำให้ข้อความ inbound จากบัญชี Telegram ทั่วไปและแพลตฟอร์มที่รองรับเข้ามาในสตรีมเหตุการณ์มาตรฐานเดียว ข้อความที่รองรับมาถึงเป็น message.received พร้อม envelope id, type, provider, account_id, occurred_at และ data เมื่อ webhook endpoint มี signing_secret สามารถตรวจ HMAC-SHA256 ผ่าน X-Device-Timestamp และ X-Device-Signature
เก็บ Community membership ในตารางโครงสร้าง Telegram และเก็บบทสนทนาลูกค้าในคิวตาม provider, account และ conversation อย่าแปลง community_chat_added เป็น message.received เพราะอธิบายคนละเหตุการณ์
ข้อจำกัดและสิ่งที่ต้องแลก
Bot API 10.2 ให้ข้อมูลวงจรชีวิตขั้นต้น ไม่ใช่ Community management API ที่สมบูรณ์ ออบเจ็กต์นำออกว่าง และเอกสารไม่ได้รับรอง endpoint ประวัติ แอปจึงต้องมี cache และทดสอบ Update จริงของแต่ละชนิดแชต
Bot API ทางการเหมาะกับ bot, Community, บทบาท Telegram และ hidden chat ส่วนอินเทอร์เฟซไม่เป็นทางการไม่สามารถให้สิทธิ์ทางการเหล่านี้ได้ ในอีกด้านหนึ่ง Community ก็ไม่สามารถสร้างคิว inbound ข้ามแพลตฟอร์มนอก Telegram ได้
คำถามที่พบบ่อย
Telegram Community ใน Bot API 10.2 คืออะไร
เป็นการเชื่อมหลาย supergroup, channel หรือ bot ภายใต้หัวข้อเดียว Bot API 10.2 เปิดข้อมูลขั้นต้นผ่าน Community, service message เพิ่ม/นำออก และ ChatFullInfo.community
community_chat_added อยู่ตรงไหนใน webhook
อยู่ภายใน Bot API Message ที่ส่งมากับ Update ไม่ใช่ฟิลด์ Update ระดับบนใหม่ และมี Community ใหม่ของแชตปัจจุบัน
community_chat_removed มีข้อมูลอะไร
ปัจจุบันไม่มีฟิลด์ ให้ลบความสัมพันธ์เดิมด้วย message.chat.id ของแชตปัจจุบัน
Communities รวมข้อความทุกแชตหรือไม่
ไม่ แต่ละแชตยังมีข้อความ สิทธิ์ ตัวระบุ และข้อกำหนดการเข้าถึงของบอตแยกกัน
UnifyPort รับเหตุการณ์วงจรชีวิต Community หรือไม่
UnifyPort API Reference ปัจจุบันไม่ได้ระบุสองฟิลด์นี้เป็นเหตุการณ์มาตรฐาน ใช้ Bot API ทางการสำหรับ Community และใช้ UnifyPort สำหรับชั้น inbound มาตรฐานที่มีเอกสารรองรับ
ขั้นตอนถัดไป
หากเป้าหมายคือคิวบริการลูกค้าข้ามช่องทาง ให้ตรวจตารางรองรับข้อความตาม provider แล้วพัฒนาตาม message.received API Reference โดยแยกจากสถานะ Telegram Community
แหล่งข้อมูล
ตรวจแหล่งข้อมูลทางการเมื่อ 26 กรกฎาคม 2026: