@@ -78,44 +78,39 @@ instance IsEntity RoomName where
7878 toProperties reply = Map. fromList [(" name" , PropertyText $ unName reply)]
7979 fromProperties = fmap RoomName . extractProperty " name"
8080
81- getRoom :: Effect (Entity RoomName )
82- getRoom = do
83- reply <- listToMaybe <$> selectEntities P. Proxy (Take 1 All )
84- case reply of
85- Just reply' -> return reply'
86- Nothing -> createEntity P. Proxy $ RoomName " tsoding"
87-
88- setRoomName :: Reaction Message T. Text
89- setRoomName =
81+ getRoom :: Effect (Maybe (Entity RoomName ))
82+ getRoom =
83+ listToMaybe <$> selectEntities P. Proxy (Take 1 All )
84+
85+ setDubtrackRoom :: Reaction Message T. Text
86+ setDubtrackRoom =
9087 liftR
9188 (\ msg -> do
92- reply <- getRoom
93- void $ updateEntityById $ (\ a -> a {unName = msg}) <$> reply) $
94- cmapR (const " Updated room for dubtrack" ) $ Reaction replyMessage
89+ mayReply <- getRoom
90+ case mayReply of
91+ Just reply -> void $ updateEntityById $ (\ a -> a {unName = msg}) <$> reply
92+ Nothing -> void $ createEntity P. Proxy $ RoomName msg
93+ ) $ cmapR (const " Updated room for dubtrack" ) $ Reaction replyMessage
9594
9695-- TODO(#221): Dubtrack room is hardcode
9796currentSongCommand :: Reaction Message ()
9897currentSongCommand =
9998 Reaction $ \ Message {messageSender = sender} -> do
100- mahroom <- getRoom
101- request <-
102- parseRequest $
103- " https://api.dubtrack.fm/room/" <>
104- T. unpack (unName $ entityPayload mahroom)
105- response <- eitherDecode . getResponseBody <$> httpRequest request
106- case response of
107- Left message -> errorEff $ T. pack message
108- Right dubtrackResponse ->
109- maybe
110- (replyToSender sender " Nothing is playing right now" )
111- (\ song ->
112- replyToSender sender [qms |❝{songName song}❞: {songLink song}|])
113- (roomCurrentSong $ drData dubtrackResponse)
114-
115- setDubtrack :: Reaction Message T. Text
116- setDubtrack =
117- liftR
118- (\ msg -> do
119- reply <- getRoom
120- void $ updateEntityById $ fmap (\ a -> a {unName = msg}) reply) $
121- cmapR (const " Updated the dubtrack" ) $ Reaction replyMessage
99+ mayRoom <- getRoom
100+ case mayRoom of
101+ Nothing -> replyToSender sender
102+ " Dubtrack room not set, a mod can run '!config room name' to set it"
103+ Just mahroom -> do
104+ request <-
105+ parseRequest $
106+ " https://api.dubtrack.fm/room/" <>
107+ T. unpack (unName $ entityPayload mahroom)
108+ response <- eitherDecode . getResponseBody <$> httpRequest request
109+ case response of
110+ Left message -> errorEff $ T. pack message
111+ Right dubtrackResponse ->
112+ maybe
113+ (replyToSender sender " Nothing is playing right now" )
114+ (\ song ->
115+ replyToSender sender [qms |❝{songName song}❞: {songLink song}|])
116+ (roomCurrentSong $ drData dubtrackResponse)
0 commit comments