Skip to content

Commit 7bbf2b8

Browse files
committed
Made an error appear if dubtrackroom not set
1 parent e790da7 commit 7bbf2b8

File tree

2 files changed

+30
-35
lines changed

2 files changed

+30
-35
lines changed

src/Bot.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -485,7 +485,7 @@ builtinCommands =
485485
[ ("link", setNoTrustLinkReplyCommand)
486486
, ("command", setNoTrustCommandReplyCommand)
487487
])
488-
, ("dubtrack", setDubtrack)
488+
, ("dubtrack", setDubtrackRoom)
489489
]))
490490
, ( "version"
491491
, mkBuiltinCommand

src/Bot/Dubtrack.hs

Lines changed: 29 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -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
9796
currentSongCommand :: Reaction Message ()
9897
currentSongCommand =
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

Comments
 (0)