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
class UpdateEvent(BaseModel):
broadcaster_user_id: str
title: str
category_name: str
class StateManager:
COLLECTION_NAME = "stream_twitch_state"

View File

@@ -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)
)
)

View File

@@ -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))