By | fr33domlover |
At | 2015-07-05 |
Title | add IRC support for any channel, by joining, sending and instantly parting |
Description |
Edit file src/Hpaste/Types/Announcer.hs 33188 → 33188
17 17 , annConfig :: AnnounceConfig
18 18 }
19 19 20 20 -- | An annoucement.
21 21 data Announcement = Announcement
- 22 { annFrom :: Text
+ 22 { annFrom :: Text
23 23 , annContent :: Text
+ 24 , annChannel :: Text
24 25 }
… … … … Edit file src/Hpaste/Model/Announcer.hs 33188 → 33188
46 46 announcements <- getChanContents ans
47 47 forM_ announcements $ \ann ->
48 48 E.catch (sendIfNickExists config ann)
49 49 (\(e::IOError) -> return ())
50 50 - 51 sendIfNickExists AnnounceConfig{..} (Announcement origin line) = do
+ 51 sendIfNickExists AnnounceConfig{..} (Announcement origin msg channel) = do
52 52 handle <- connectTo announceHost (PortNumber $ fromIntegral announcePort)
53 53 hSetBuffering handle LineBuffering
54 54 let send = B.hPutStrLn handle . encodeUtf8
+ 55 line = "PRIVMSG " ++ channel ++ " :" ++ msg
55 56 send $ "PASS " ++ pack announcePass
56 57 send $ "USER " ++ pack announceUser ++ " * * *"
57 58 send $ "NICK " ++ pack announceUser
- 58 send $ "JOIN " ++ pack "#freepost"
+ 59 send $ "JOIN " ++ channel
59 60 send $ "WHOIS :" ++ origin
60 61 fix $ \loop -> do
61 62 incoming <- T.hGetLine handle
62 63 T.putStrLn incoming
63 64 case T.takeWhile isDigit (T.drop 1 (T.dropWhile (/=' ') incoming)) of
… … … … 66 67 _ -> loop
67 68 68 69 -- | Announce something to the IRC.
69 70 announce :: Announcer -> Text -> Text -> Text -> IO ()
70 71 announce Announcer{annChan=chan} nick channel line = do
- 71 io $ writeChan chan $ Announcement nick ("PRIVMSG " ++ channel ++ " :" ++ line)
+ 72 io $ writeChan chan $ Announcement nick line channel
… … … …