diff options
| author | Teddy Wing | 2017-08-16 21:00:54 +0200 | 
|---|---|---|
| committer | Teddy Wing | 2017-08-16 21:00:54 +0200 | 
| commit | 20b0d046c2a19ec567a1d61af07bfaec143d8b70 (patch) | |
| tree | 76df0ca05b955fbaf9c7ec176e9b609f5eaa776e /src | |
| parent | 1311706d7cca3cd67af5c974c763aba53b0011a9 (diff) | |
| download | sorbot-20b0d046c2a19ec567a1d61af07bfaec143d8b70.tar.bz2 | |
IRC.hs: Handle `Nothing` branches
Handle our un-handled `Nothing` branches. Make `privmsgFromPlugin`
return a `Maybe` so we can decide whether or not to send a message
upstream.
If we do get a `Nothing` from `privmsgFromPlugin`, just return unit and
don't send any chat message, since no plugin matched and thus none could
respond.
Diffstat (limited to 'src')
| -rw-r--r-- | src/IRC.hs | 13 | 
1 files changed, 7 insertions, 6 deletions
| @@ -53,19 +53,20 @@ handlePrivmsg = IRC.EventHandler              -- msg  -> IRC.send msg          -- response <- privmsgFromPlugin message          response <- liftIO $ privmsgFromPlugin message -        IRC.send response +        case response of +            Nothing -> return () +            Just r  -> r -privmsgFromPlugin :: Message -> IO (IRC.Message T.Text) +privmsgFromPlugin :: Message -> IO (Maybe (IRC.StatefulIRC s ()))  privmsgFromPlugin message = do      case matchPlugin message of -        -- Nothing ->  +        Nothing     -> return Nothing          Just plugin -> do -            -- let response = liftIO $ performPlugin plugin message in              response <- liftIO $ performPlugin plugin message              return $ case response of -                Left err -> IRC.Privmsg +                Left err -> Just $ IRC.send $ IRC.Privmsg                      (T.pack (channel message))                      (Right (T.pack err)) -                Right r  -> IRC.Privmsg +                Right r  -> Just $ IRC.send $ IRC.Privmsg                      (T.pack (channel message))                      (Right (T.pack r)) | 
