Skip to content

Commit f3c578c

Browse files
authored
Merge pull request #50 from Quaver/clan-first-place-msg
Send first place won/lost msg to clan chat
2 parents 4907265 + e9d1733 commit f3c578c

File tree

2 files changed

+48
-3
lines changed

2 files changed

+48
-3
lines changed

db/redis.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ var (
1717
RedisChannelMultiplayerMapShares = "quaver:multiplayer_map_shares"
1818
RedisChannelFirstPlaceScores = "quaver:first_place_scores"
1919
RedisChannelRankedClanMap = "quaver:ranked_clan_map"
20+
RedisChannelClanFirstPlace = "quaver:clan_first_place"
2021
)
2122

2223
// InitializeRedis Initializes a Redis client
@@ -40,7 +41,8 @@ func InitializeRedis() {
4041
log.Fatalln(result.Err())
4142
}
4243

43-
sub := Redis.Subscribe(RedisCtx, RedisChannelSongRequests, RedisChannelTwitchConnection, RedisChannelMultiplayerMapShares, RedisChannelFirstPlaceScores, RedisChannelRankedClanMap)
44+
sub := Redis.Subscribe(RedisCtx, RedisChannelSongRequests, RedisChannelTwitchConnection, RedisChannelMultiplayerMapShares, RedisChannelFirstPlaceScores, RedisChannelRankedClanMap,
45+
RedisChannelClanFirstPlace)
4446

4547
go func() {
4648
for {

handlers/RedisSubHandler.go

Lines changed: 45 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ func AddRedisHandlers() {
1818
db.AddRedisSubscriberHandler(db.RedisChannelMultiplayerMapShares, HandleMultiplayerMapShares)
1919
db.AddRedisSubscriberHandler(db.RedisChannelFirstPlaceScores, HandleFirstPlaceScores)
2020
db.AddRedisSubscriberHandler(db.RedisChannelRankedClanMap, HandleRankedClanMap)
21+
db.AddRedisSubscriberHandler(db.RedisChannelClanFirstPlace, HandleClanFirstPlace)
2122
}
2223

2324
func HandleTwitchSongRequest(msg *redis.Message) {
@@ -189,10 +190,52 @@ func HandleRankedClanMap(msg *redis.Message) {
189190
continue
190191
}
191192

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).",
193194
parsed.Map.Mode, parsed.Map.Artist, parsed.Map.Title, parsed.Map.DifficultyName, parsed.Map.CreatorName,
194195
parsed.Map.Id)
195196

196-
chat.SendMessage(chat.Bot, channel.Name, msg)
197+
chat.SendMessage(chat.Bot, channel.Name, message)
197198
}
198199
}
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

Comments
 (0)