Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FR] 연령 제한이 있는 방송에 대한 예외처리 혹은 기능 추가 #39

Open
zer0ken opened this issue Jan 11, 2025 · 3 comments
Labels
bug Something isn't working

Comments

@zer0ken
Copy link

zer0ken commented Jan 11, 2025

연령 제한이 있는 방송에서 몇몇 기능이 정상적으로 동작되지 않았으며 이에 관한 예외처리도 별도로 존재하지 않는 것 처럼 보입니다. 적절한 예외를 추가하거나 기능을 수정해주셨으면 좋겠습니다. 감사합니다.

@zer0ken zer0ken added the enhancement New feature or request label Jan 11, 2025
@zer0ken zer0ken changed the title [FR] 연령 제한이 있는 방송의 경우에 대한 처리 [FR] 연령 제한이 있는 방송에 대한 예외처리 혹은 기능 추가 Jan 11, 2025
@gunyu1019
Copy link
Owner

연령 제한이 있는 방송에서 무슨 기능이 정상적으로 작동하지 않았는지 자세한 설명이 필요합니다. 어떠한 기능을 이용하였을 때, 무슨 예외(Exception)가 발생하였는지 자세한 서술 부탁드립니다.

@zer0ken
Copy link
Author

zer0ken commented Jan 11, 2025

연령 제한이 켜진 방송에서의 테스트

1. 치지직 Studio > 방송하기 > 연령 제한 설정 켜짐

image

2. 코드 실행

테스트에는 이 저장소의 Quick examples에 있는 코드를 그대로 사용했습니다. 테스트 환경에서 해당 코드가 저장된 파일의 이름은 test2.py입니다. <...>와 같이, 문자열 내에서 꺽쇄로 감싼 부분은 실제로 실행할 때 유효한 값으로 대체했습니다. 여기에서는 보안을 위해 값을 가려두겠습니다.

from chzzkpy.chat import ChatClient, ChatMessage, DonationMessage

client = ChatClient("<channel-id>")


@client.event
async def on_chat(message: ChatMessage):
    if message.content == "!안녕":
        await client.send_chat("%s님, 안녕하세요!" % message.profile.nickname)


@client.event
async def on_donation(message: DonationMessage):
    await client.send_chat("%s님, %d원 후원 감사합니다." % (message.profile.nickname, message.extras.pay_amount))


# 챗봇 기능을 이용하기 위해서는 네이버 사용자 인증이 필요합니다.
# 웹브라우저의 쿠키 값에 있는 NID_AUT와 NID_SES 값으로 로그인을 대체할 수 있습니다.
client.run('<NID_AUT>', '<NID_SES>')

3. 출력

Traceback (most recent call last):
  File "g:\zer0ken\kyla-chzzk\test2.py", line 19, in <module>
    client.run("<NID_AUT>", "<NID_SES>")
  File "g:\zer0ken\kyla-chzzk\.venv\Lib\site-packages\chzzkpy\chat\chat_client.py", line 105, in run
    self.loop.run_until_complete(wrapper)
  File "C:\Users\a3759\AppData\Local\Programs\Python\Python312\Lib\asyncio\base_events.py", line 687, in run_until_complete
    return future.result()
           ^^^^^^^^^^^^^^^
  File "g:\zer0ken\kyla-chzzk\.venv\Lib\site-packages\chzzkpy\chat\chat_client.py", line 113, in start
    await self.connect()
  File "g:\zer0ken\kyla-chzzk\.venv\Lib\site-packages\chzzkpy\chat\chat_client.py", line 133, in connect
    status = await self.live_status(channel_id=self.channel_id)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "g:\zer0ken\kyla-chzzk\.venv\Lib\site-packages\chzzkpy\chat\chat_client.py", line 509, in live_status
    return await super().live_status(channel_id)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "g:\zer0ken\kyla-chzzk\.venv\Lib\site-packages\chzzkpy\client.py", line 126, in live_status
    res = await self._api_session.live_status(channel_id=channel_id)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "g:\zer0ken\kyla-chzzk\.venv\Lib\site-packages\ahttp_client\request.py", line 551, in __call__
    response = await self._after_hook(self.session, response)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "g:\zer0ken\kyla-chzzk\.venv\Lib\site-packages\ahttp_client\extension.py", line 103, in wrapper
    _args = await func(wrapped_instance, *_args)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "g:\zer0ken\kyla-chzzk\.venv\Lib\site-packages\ahttp_client\extension.py", line 234, in wrapper
    result = _parsing_json_to_model(
             ^^^^^^^^^^^^^^^^^^^^^^^
  File "g:\zer0ken\kyla-chzzk\.venv\Lib\site-packages\ahttp_client\extension.py", line 153, in _parsing_json_to_model
    validated_data = model.model_validate(
                     ^^^^^^^^^^^^^^^^^^^^^
  File "g:\zer0ken\kyla-chzzk\.venv\Lib\site-packages\pydantic\main.py", line 568, in model_validate
    return cls.__pydantic_validator__.validate_python(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
pydantic_core._pydantic_core.ValidationError: 1 validation error for Content[Union[LiveStatus, NoneType]]
content.chatChannelId
  Input should be a valid string [type=string_type, input_value=None, input_type=NoneType]
    For further information visit https://errors.pydantic.dev/2.8/v/string_type

연령 제한이 꺼진 방송에서의 테스트

동일한 방송에서 연령 제한을 끈 뒤에 같은 코드를 실행하면, CLI에서는 별다른 출력이 없으며, 기능이 정상적으로 동작하는 것처럼 보입니다.
image

@gunyu1019
Copy link
Owner

확인감사합니다. 빠른 시일 내에 조치해드리도록 하겠습니다.

@gunyu1019 gunyu1019 added bug Something isn't working and removed enhancement New feature or request labels Jan 11, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants