Detect completed drops via notifications feed

This commit is contained in:
DevilXD
2023-11-04 15:31:39 +01:00
parent eded7edda8
commit 5271d6aa2d
2 changed files with 47 additions and 5 deletions

View File

@@ -790,6 +790,9 @@ class Twitch:
self.websocket.add_topics([
WebsocketTopic("User", "Drops", auth_state.user_id, self.process_drops),
WebsocketTopic("User", "CommunityPoints", auth_state.user_id, self.process_points),
WebsocketTopic(
"User", "Notifications", auth_state.user_id, self.process_notifications
),
])
full_cleanup: bool = False
channels: Final[OrderedDict[int, Channel]] = self.channels
@@ -1391,6 +1394,18 @@ class Twitch:
self._drop_update.set_result(False)
self._drop_update = None
@task_wrapper
async def process_notifications(self, user_id: int, message: JsonType):
if message["type"] == "create-notification":
data: JsonType = message["data"]["notification"]
if data["type"] == "user_drop_reward_reminder_notification":
self.change_state(State.INVENTORY_FETCH)
await self.gql_request(
GQL_OPERATIONS["NotificationsDelete"].with_variables(
{"input": {"id": data["id"]}}
)
)
@task_wrapper
async def process_points(self, user_id: int, message: JsonType):
# Example payloads: