diff --git a/src/modules/stream_notifications/state.py b/src/modules/stream_notifications/state.py index 0cffbb7..c44aa1b 100644 --- a/src/modules/stream_notifications/state.py +++ b/src/modules/stream_notifications/state.py @@ -12,6 +12,12 @@ class State(BaseModel): last_live_at: datetime +class UpdateEvent(BaseModel): + broadcaster_user_id: str + title: str + category_name: str + + class StateManager: COLLECTION_NAME = "stream_twitch_state" diff --git a/src/modules/stream_notifications/tasks.py b/src/modules/stream_notifications/tasks.py index 18e6e7b..2d69aef 100644 --- a/src/modules/stream_notifications/tasks.py +++ b/src/modules/stream_notifications/tasks.py @@ -1,12 +1,11 @@ from datetime import datetime, timezone from twitchAPI.helper import first -from twitchAPI.object.eventsub import ChannelUpdateEvent from core.broker import broker from repositories.streamers import StreamerConfigRepository -from .state import State +from .state import State, UpdateEvent from .watcher import StateWatcher from .twitch.authorize import authorize @@ -15,18 +14,18 @@ from .twitch.authorize import authorize "stream_notifications.twitch.on_stream_state_change_with_check", retry_on_error=True ) -async def on_stream_state_change_with_check(event: ChannelUpdateEvent): +async def on_stream_state_change_with_check(event: UpdateEvent): twitch = await authorize() - stream = await first(twitch.get_streams(user_id=[event.event.broadcaster_user_id])) + stream = await first(twitch.get_streams(user_id=[event.broadcaster_user_id])) if stream is None: return await on_stream_state_change.kiq( - int(event.event.broadcaster_user_id), + int(event.broadcaster_user_id), State( - title=event.event.title, - category=event.event.category_name, + title=event.title, + category=event.category_name, last_live_at=datetime.now(timezone.utc) ) ) diff --git a/src/modules/stream_notifications/twitch/webhook.py b/src/modules/stream_notifications/twitch/webhook.py index e28aeed..f891d32 100644 --- a/src/modules/stream_notifications/twitch/webhook.py +++ b/src/modules/stream_notifications/twitch/webhook.py @@ -10,7 +10,7 @@ from twitchAPI.oauth import validate_token from core.config import config from repositories.streamers import StreamerConfigRepository, StreamerConfig from modules.stream_notifications.tasks import on_stream_state_change, on_stream_state_change_with_check - +from modules.stream_notifications.state import UpdateEvent from .authorize import authorize @@ -26,7 +26,11 @@ class TwitchService: self.failed = False async def on_channel_update(self, event: ChannelUpdateEvent): - await on_stream_state_change_with_check.kiq(event) + await on_stream_state_change_with_check.kiq(UpdateEvent( + broadcaster_user_id=event.event.broadcaster_user_id, + title=event.event.title, + category_name=event.event.category_name + )) async def on_stream_online(self, event: StreamOnlineEvent): await on_stream_state_change.kiq(int(event.event.broadcaster_user_id))