This commit is contained in:
2024-12-29 22:36:57 +01:00
parent 13c1b4aad4
commit d248e27c06
3 changed files with 18 additions and 9 deletions

View File

@@ -12,6 +12,12 @@ class State(BaseModel):
last_live_at: datetime last_live_at: datetime
class UpdateEvent(BaseModel):
broadcaster_user_id: str
title: str
category_name: str
class StateManager: class StateManager:
COLLECTION_NAME = "stream_twitch_state" COLLECTION_NAME = "stream_twitch_state"

View File

@@ -1,12 +1,11 @@
from datetime import datetime, timezone from datetime import datetime, timezone
from twitchAPI.helper import first from twitchAPI.helper import first
from twitchAPI.object.eventsub import ChannelUpdateEvent
from core.broker import broker from core.broker import broker
from repositories.streamers import StreamerConfigRepository from repositories.streamers import StreamerConfigRepository
from .state import State from .state import State, UpdateEvent
from .watcher import StateWatcher from .watcher import StateWatcher
from .twitch.authorize import authorize from .twitch.authorize import authorize
@@ -15,18 +14,18 @@ from .twitch.authorize import authorize
"stream_notifications.twitch.on_stream_state_change_with_check", "stream_notifications.twitch.on_stream_state_change_with_check",
retry_on_error=True 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() 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: if stream is None:
return return
await on_stream_state_change.kiq( await on_stream_state_change.kiq(
int(event.event.broadcaster_user_id), int(event.broadcaster_user_id),
State( State(
title=event.event.title, title=event.title,
category=event.event.category_name, category=event.category_name,
last_live_at=datetime.now(timezone.utc) last_live_at=datetime.now(timezone.utc)
) )
) )

View File

@@ -10,7 +10,7 @@ from twitchAPI.oauth import validate_token
from core.config import config from core.config import config
from repositories.streamers import StreamerConfigRepository, StreamerConfig 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.tasks import on_stream_state_change, on_stream_state_change_with_check
from modules.stream_notifications.state import UpdateEvent
from .authorize import authorize from .authorize import authorize
@@ -26,7 +26,11 @@ class TwitchService:
self.failed = False self.failed = False
async def on_channel_update(self, event: ChannelUpdateEvent): 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): async def on_stream_online(self, event: StreamOnlineEvent):
await on_stream_state_change.kiq(int(event.event.broadcaster_user_id)) await on_stream_state_change.kiq(int(event.event.broadcaster_user_id))