@@ -18,6 +18,7 @@ func AddRedisHandlers() {
18
18
db .AddRedisSubscriberHandler (db .RedisChannelMultiplayerMapShares , HandleMultiplayerMapShares )
19
19
db .AddRedisSubscriberHandler (db .RedisChannelFirstPlaceScores , HandleFirstPlaceScores )
20
20
db .AddRedisSubscriberHandler (db .RedisChannelRankedClanMap , HandleRankedClanMap )
21
+ db .AddRedisSubscriberHandler (db .RedisChannelClanFirstPlace , HandleClanFirstPlace )
21
22
}
22
23
23
24
func HandleTwitchSongRequest (msg * redis.Message ) {
@@ -189,10 +190,52 @@ func HandleRankedClanMap(msg *redis.Message) {
189
190
continue
190
191
}
191
192
192
- msg := fmt .Sprintf ("New %v Clan Ranked Map: %v - %v [%v] by %v (#%v)." ,
193
+ message := fmt .Sprintf ("New %v Clan Ranked Map: %v - %v [%v] by %v (#%v)." ,
193
194
parsed .Map .Mode , parsed .Map .Artist , parsed .Map .Title , parsed .Map .DifficultyName , parsed .Map .CreatorName ,
194
195
parsed .Map .Id )
195
196
196
- chat .SendMessage (chat .Bot , channel .Name , msg )
197
+ chat .SendMessage (chat .Bot , channel .Name , message )
197
198
}
198
199
}
200
+
201
+ func HandleClanFirstPlace (msg * redis.Message ) {
202
+ type payload struct {
203
+ ClanId int `json:"clan_id"`
204
+ Won bool `json:"won"`
205
+ Map struct {
206
+ Id int `json:"id"`
207
+ Artist string `json:"artist"`
208
+ Title string `json:"title"`
209
+ DifficultyName string `json:"difficulty_name"`
210
+ CreatorName string `json:"creator_name"`
211
+ Mode string `json:"mode"`
212
+ } `json:"map"`
213
+ }
214
+
215
+ var parsed payload
216
+
217
+ err := json .Unmarshal ([]byte (msg .Payload ), & parsed )
218
+
219
+ if err != nil {
220
+ log .Printf ("Failed to parse ranked clan map - %v - %v\n " , msg .Payload , err )
221
+ return
222
+ }
223
+
224
+ channel := chat .GetChannelByName (fmt .Sprintf ("#clan_%v" , parsed .ClanId ))
225
+
226
+ if channel == nil {
227
+ return
228
+ }
229
+
230
+ winStatus := "won"
231
+
232
+ if ! parsed .Won {
233
+ winStatus = "lost"
234
+ }
235
+
236
+ message := fmt .Sprintf ("You have %v first place on: %v - %v [%v] by %v (#%v)." ,
237
+ winStatus , parsed .Map .Artist , parsed .Map .Title , parsed .Map .DifficultyName , parsed .Map .CreatorName ,
238
+ parsed .Map .Id )
239
+
240
+ chat .SendMessage (chat .Bot , channel .Name , message )
241
+ }
0 commit comments