채팅 애플리케이션 구축을 위한 서비스인 Stream Chat용 공식 Python API 클라이언트입니다.
문서 살펴보기 »
코드 샘플 · 버그 신고 · 기능 요청
v4.0의 주요 업데이트 <
반환된 응답 객체는
StreamResponse
클래스의 인스턴스입니다.dict
에서 상속되므로 이전 버전과 완전히 호환됩니다. 또한 속도 제한 정보(resp.rate_limit()
), 응답 헤더(resp.headers()
) 또는 상태 코드(resp.status_code()
)와 같은 다른 이점도 제공합니다.
시작하기 페이지에서 Stream 계정에 가입할 수 있습니다.
이 라이브러리를 사용하여 서버 측 채팅 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를 방문하세요.
우리는 최근 3,800만 달러 규모의 시리즈 B 자금 조달 라운드를 마감했으며 계속 활발하게 성장하고 있습니다. 당사의 API는 10억 명 이상의 최종 사용자가 사용하고 있으며, 전 세계에서 가장 강력한 엔지니어로 구성된 팀 내에서 제품에 큰 영향을 줄 수 있는 기회를 갖게 됩니다.
현재 채용 공고를 확인하고 Stream 웹사이트를 통해 지원하세요.