From 2c57d135c97e339e5c782c2fdfd1a4e76925863a Mon Sep 17 00:00:00 2001 From: Interitio Date: Mon, 28 Jul 2025 22:16:44 +1000 Subject: [PATCH] Add subscription messages to sub tracker. --- src/modules/subathons/component.py | 36 ++++++++++++++++++++++++++++++ src/modules/tracker/component.py | 1 + 2 files changed, 37 insertions(+) diff --git a/src/modules/subathons/component.py b/src/modules/subathons/component.py index f743f5e..bb60386 100644 --- a/src/modules/subathons/component.py +++ b/src/modules/subathons/component.py @@ -263,6 +263,42 @@ class SubathonComponent(cmds.Component): # Check goals await self.goalcheck(active, gift_payload.broadcaster) + @cmds.Component.listener() + async def event_safe_subscription_message(self, payload): + event_row, detail_row, sub_payload = payload + + if (active := await self.get_active_subathon(event_row['communityid'])) is not None: + data = active.subathondata + # In an active subathon + pid = event_row['profileid'] + tier = int(sub_payload.tier) + + if tier == 1000: + mult = data.sub1_score + elif tier == 2000: + mult = data.sub2_score + elif tier == 3000: + mult = data.sub3_score + else: + raise ValueError(f"Unknown sub tier {sub_payload.tier}") + + score = mult * 1 + + await active.add_contribution(pid, score, event_row['event_id']) + + # Send message to channel + added_min = int(active.get_score_time(score) // 60) + added = f"{added_min} minutes" + name = sub_payload.user.name + pl = 's' if score > 1 else '' + await sub_payload.broadcaster.send_message( + f"{name} contributed {score} sub{pl} and added {added} to the timer! Thank you <3", + sender=self.bot.bot_id + ) + await self.channel.send_updates() + # Check goals + await self.goalcheck(active, sub_payload.broadcaster) + # end stream => Automatically pause the timer @cmds.Component.listener() async def event_stream_offline(self, payload: twitchio.StreamOffline): diff --git a/src/modules/tracker/component.py b/src/modules/tracker/component.py index 5e062e9..f78d13d 100644 --- a/src/modules/tracker/component.py +++ b/src/modules/tracker/component.py @@ -316,6 +316,7 @@ class TrackerComponent(cmds.Component): streak_months=payload.streak_months, message=payload.text, ) + self.bot.safe_dispatch('subscription_message', payload=(event_row, detail_row, payload)) @cmds.Component.listener() async def event_stream_online(self, payload: twitchio.StreamOnline):