@@ -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,54 @@ 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
+ fmt .Println (parsed )
225
+
226
+ channel := chat .GetChannelByName (fmt .Sprintf ("#clan_%v" , parsed .ClanId ))
227
+
228
+ if channel == nil {
229
+ return
230
+ }
231
+
232
+ winStatus := "won"
233
+
234
+ if ! parsed .Won {
235
+ winStatus = "lost"
236
+ }
237
+
238
+ message := fmt .Sprintf ("You have %v first place on: %v - %v [%v] by %v (#%v)." ,
239
+ winStatus , parsed .Map .Artist , parsed .Map .Title , parsed .Map .DifficultyName , parsed .Map .CreatorName ,
240
+ parsed .Map .Id )
241
+
242
+ chat .SendMessage (chat .Bot , channel .Name , message )
243
+ }
0 commit comments