doCallerId ::
  Identifier {- ^ nick -} ->
  ByteString {- ^ user\@host -} ->
  IrcConnection -> Logic IrcConnection
doCallerId nick mask conn =
  do stamp <- getStamp
     let (user,host) = B8.break (=='@') mask
     let mesg = defaultIrcMessage
           { _mesgType    = CallerIdMsgType
           , _mesgSender  = UserInfo nick (Just user) (Just (B8.drop 1 host))
           , _mesgStamp   = stamp
           }
     recordMessage mesg nick conn
doCallerId ::
  Identifier {- ^ nick -} ->
  ByteString {- ^ user\@host -} ->
  IrcConnection -> Logic IrcConnection
doCallerId nick mask conn =
  do stamp <- getStamp
     let (user,host) = B8.break (=='@') mask
     let mesg = defaultIrcMessage
           { _mesgType    = CallerIdMsgType
           , _mesgSender  = UserInfo nick (Just user) (Just (B8.drop 1 host))
           , _mesgStamp   = stamp
           }
     recordMessage mesg nick conn
doCallerId nick mask conn =
  do stamp <- getStamp
     let (user,host) = B8.break (=='@') mask
     let mesg = defaultIrcMessage
           { _mesgType    = CallerIdMsgType
           , _mesgSender  = UserInfo nick (Just user) (Just (B8.drop 1 host))
           , _mesgStamp   = stamp
           }
     recordMessage mesg nick conn