ไคลเอ็นต์ Python API อย่างเป็นทางการสำหรับ Stream Chat ซึ่งเป็นบริการสำหรับการสร้างแอปพลิเคชันแชท
สำรวจเอกสาร »
ตัวอย่างโค้ด · รายงานข้อผิดพลาด · คุณสมบัติคำขอ
การอัปเดตที่สำคัญใน v4.0 <
ออบเจ็กต์การตอบสนองที่ส่งคืนเป็นอินสแตนซ์ของคลาส
StreamResponse
มันสืบทอดมาจากdict
ดังนั้นจึงเข้ากันได้แบบย้อนหลังโดยสมบูรณ์ นอกจากนี้ยังให้ประโยชน์อื่นๆ เช่น ข้อมูลขีดจำกัดอัตรา (resp.rate_limit()
) ส่วนหัวการตอบกลับ (resp.headers()
) หรือรหัสสถานะ (resp.status_code()
)
คุณสามารถลงทะเบียนบัญชีสตรีมได้ที่หน้าเริ่มต้นใช้งานของเรา
คุณสามารถใช้ไลบรารีนี้เพื่อเข้าถึงตำแหน่งข้อมูล Chat API ฝั่งเซิร์ฟเวอร์ได้
สำหรับการผสานรวมฝั่งไคลเอ็นต์ (เว็บและอุปกรณ์เคลื่อนที่) โปรดดูที่ไลบรารี JavaScript, iOS และ Android SDK (เอกสาร)
$ pip install stream-chat
ห้องสมุดมีการพิมพ์เกือบ 100% อย่าลังเลที่จะเปิดใช้งาน mypy สำหรับห้องสมุดของเรา เราจะแนะนำการปรับปรุงเพิ่มเติมในด้านนี้ในอนาคต
from stream_chat import StreamChat
chat = StreamChat ( api_key = "STREAM_KEY" , api_secret = "STREAM_SECRET" )
# add a user
chat . upsert_user ({ "id" : "chuck" , "name" : "Chuck" })
# create a channel about kung-fu
channel = chat . channel ( "messaging" , "kung-fu" )
channel . create ( "chuck" )
# add a first message to the channel
channel . send_message ({ "text" : "AMA about kung-fu" }, "chuck" )
# we also expose some response metadata through a custom dictionary
resp = chat . deactivate_user ( "bruce_lee" )
print ( type ( resp )) # <class 'stream_chat.types.stream_response.StreamResponse'>
print ( resp [ "user" ][ "id" ]) # bruce_lee
rate_limit = resp . rate_limit ()
print ( f" { rate_limit . limit } / { rate_limit . remaining } / { rate_limit . reset } " ) # 60 / 59 /2022-01-06 12:35:00+00:00
headers = resp . headers ()
print ( headers ) # { 'Content-Encoding': 'gzip', 'Content-Length': '33', ... }
status_code = resp . status_code ()
print ( status_code ) # 200
import asyncio
from stream_chat import StreamChatAsync
async def main ():
async with StreamChatAsync ( api_key = "STREAM_KEY" , api_secret = "STREAM_SECRET" ) as chat :
# add a user
await chat . upsert_user ({ "id" : "chuck" , "name" : "Chuck" })
# create a channel about kung-fu
channel = chat . channel ( "messaging" , "kung-fu" )
await channel . create ( "chuck" )
# add a first message to the channel
await channel . send_message ({ "text" : "AMA about kung-fu" }, "chuck" )
# we also expose some response metadata through a custom dictionary
resp = await chat . deactivate_user ( "bruce_lee" )
print ( type ( resp )) # <class 'stream_chat.types.stream_response.StreamResponse'>
print ( resp [ "user" ][ "id" ]) # bruce_lee
rate_limit = resp . rate_limit ()
print ( f" { rate_limit . limit } / { rate_limit . remaining } / { rate_limit . reset } " ) # 60 / 59 / 2022-01-06 12:35:00+00:00
headers = resp . headers ()
print ( headers ) # { 'Content-Encoding': 'gzip', 'Content-Length': '33', ... }
status_code = resp . status_code ()
print ( status_code ) # 200
if __name__ == '__main__' :
loop = asyncio . get_event_loop ()
try :
loop . run_until_complete ( main ())
finally :
loop . run_until_complete ( loop . shutdown_asyncgens ())
loop . close ()
เรายินดีรับการเปลี่ยนแปลงโค้ดที่ช่วยปรับปรุงไลบรารีนี้หรือแก้ไขปัญหา โปรดตรวจสอบให้แน่ใจว่าได้ปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุดทั้งหมดและเพิ่มการทดสอบหากมีก่อนส่งคำขอดึงข้อมูลบน Github เรายินดีเป็นอย่างยิ่งที่จะรวมโค้ดของคุณเข้ากับพื้นที่เก็บข้อมูลอย่างเป็นทางการ ตรวจสอบให้แน่ใจว่าได้ลงนามในข้อตกลงใบอนุญาตผู้สนับสนุน (CLA) ของเราก่อน ดูไฟล์ใบอนุญาตของเราสำหรับรายละเอียดเพิ่มเติม
ไปที่ CONTRIBUTING.md เพื่อดูเคล็ดลับในการพัฒนา
เมื่อเร็วๆ นี้เราได้ปิดการระดมทุน Series B มูลค่า 38 ล้านดอลลาร์ และเรายังเติบโตอย่างต่อเนื่อง API ของเรามีผู้ใช้ปลายทางมากกว่าพันล้านคน และคุณจะมีโอกาสที่จะสร้างผลกระทบอย่างใหญ่หลวงต่อผลิตภัณฑ์ภายในทีมวิศวกรที่แข็งแกร่งที่สุดทั่วโลก
ตรวจสอบการเปิดรับสมัครในปัจจุบันของเราและสมัครผ่านทางเว็บไซต์ของ Stream