irc-core-2.7.2: IRC core library for glirc

Copyright(c) Eric Mertens 2016
LicenseISC
Maintaineremertens@gmail.com
Safe HaskellNone
LanguageHaskell2010

Irc.Message

Contents

Description

This module defines high-level IRC commands. Commands are interpreted and their arguments are extracted into the appropriate types.

Synopsis

High-level messages

data IrcMsg Source #

High-level IRC message representation

Constructors

UnknownMsg !RawIrcMsg

pass-through for unhandled messages

Reply !ReplyCode [Text]

code arguments

Nick !UserInfo !Identifier

old new

Join !UserInfo !Identifier !Text

user channel account(extended-join)

Part !UserInfo !Identifier (Maybe Text)

user channel reason

Quit !UserInfo (Maybe Text)

user reason

Kick !UserInfo !Identifier !Identifier !Text

kicker channel kickee comment

Topic !UserInfo !Identifier !Text

user channel topic

Privmsg !UserInfo !Identifier !Text

source target txt

Ctcp !UserInfo !Identifier !Text !Text

source target command txt

CtcpNotice !UserInfo !Identifier !Text !Text

source target command txt

Notice !UserInfo !Identifier !Text

source target txt

Mode !UserInfo !Identifier [Text]

source target txt

Authenticate !Text

parameters

Cap !CapCmd

cap command and parameters

Ping [Text]

parameters

Pong [Text]

parameters

Error !Text

message

BatchStart !Text !Text [Text]

reference-id type parameters

BatchEnd !Text

reference-id

Account !UserInfo !Text

user account name changed (account-notify extension)

Chghost !UserInfo !Text !Text

Target, new username and new hostname

Wallops !UserInfo !Text

Braodcast message: Source, message

Instances
Show IrcMsg Source # 
Instance details

Defined in Irc.Message

data CapCmd Source #

Sub-commands of the CAP command sent by server

Constructors

CapLs !CapMore [(Text, Maybe Text)]

list of supported caps

CapList [Text]

list of active caps

CapAck [Text]

request accepted

CapNak [Text]

request denied

CapNew [(Text, Maybe Text)]

new capability available (cap-notify extension)

CapDel [Text]

capability removed (cap-notify extension)

Instances
Eq CapCmd Source # 
Instance details

Defined in Irc.Message

Methods

(==) :: CapCmd -> CapCmd -> Bool #

(/=) :: CapCmd -> CapCmd -> Bool #

Ord CapCmd Source # 
Instance details

Defined in Irc.Message

Read CapCmd Source # 
Instance details

Defined in Irc.Message

Show CapCmd Source # 
Instance details

Defined in Irc.Message

data CapMore Source #

Constructors

CapMore 
CapDone 
Instances
Eq CapMore Source # 
Instance details

Defined in Irc.Message

Methods

(==) :: CapMore -> CapMore -> Bool #

(/=) :: CapMore -> CapMore -> Bool #

Ord CapMore Source # 
Instance details

Defined in Irc.Message

Read CapMore Source # 
Instance details

Defined in Irc.Message

Show CapMore Source # 
Instance details

Defined in Irc.Message

cookIrcMsg :: RawIrcMsg -> IrcMsg Source #

Interpret a low-level RawIrcMsg as a high-level IrcMsg. Messages that can't be understood are wrapped in UnknownMsg.

Properties of messages

data MessageTarget Source #

Targets used to direct a message to a window for display

Constructors

TargetUser !Identifier

Metadata update for a user

TargetWindow !Identifier

Directed message to channel or from user

TargetNetwork

Network-level message

TargetHidden

Completely hidden message

Instances
Show MessageTarget Source # 
Instance details

Defined in Irc.Message

ircMsgText :: IrcMsg -> Text Source #

Text representation of an IRC message to be used for matching with regular expressions.

msgTarget :: Identifier -> IrcMsg -> MessageTarget Source #

Target information for the window that could be appropriate to display this message in.

msgActor :: IrcMsg -> Maybe UserInfo Source #

UserInfo of the user responsible for a message.

Helper functions

nickSplit :: Text -> [Text] Source #

Split a nick into text parts group by whether or not those parts are valid nickname characters.

computeMaxMessageLength :: UserInfo -> Text -> Int Source #

Maximum length computation for the message part for privmsg and notice. Note that the need for the limit is because the server will limit the length of the message sent out to each client, not just the length of the messages it will recieve.

Note that the length is on the *encoded message* which is UTF-8 The calculation isn't using UTF-8 on the userinfo part because I'm assuming that the channel name and userinfo are all ASCII

:my!user@info PRIVMSG #channel :messagebodyrn