Add subscription messages to sub tracker.
This commit is contained in:
@@ -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):
|
||||
|
||||
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user