irc-fun-messages-0.2.0.0: Types and functions for working with the IRC protocol.

Safe HaskellSafe
LanguageHaskell2010

Network.IRC.Fun.Messages.Types

Contents

Description

This module provides datatypes for modeling parts of IRC messages.

Synopsis

Message Parts

data Prefix Source

IRC message prefix.

Constructors

Server ServerName

The server which sends the message

Nick NickName (Maybe UserName) (Maybe Host)

The user which sends the message (if the message comes from a user)

data UserAddr Source

User address containing a name part (as in "user") and an optional host part (as in "user@host").

Constructors

UserAddr UserName (Maybe Host) 

data Address Source

An IP address.

Constructors

IPv4 String 
IPv6 String 

data Host Source

A host, either a hostname (e.g. irc.freenode.net) or an IP address, or a cloak assigned by the server.

Mask

data MaskPart Source

Part of a Mask.

Constructors

MaskChar Char

A literal character.

MaskWildOne

A wildcard which matches a single character.

MaskWildMany

A wildcard which matches zero or more characters.

newtype Mask Source

A pattern for matching host and server names. A mask in the protocol is a string which consists of literal characters and wildcards. There are two wildcards: ?, which matches a single character; *, which matches any number of characters (zero or more).

Constructors

Mask [MaskPart] 

data TargetMask Source

Some IRC command parameters are targets, and one way to specify a target is using a Mask.

Constructors

HostMask Mask

Host mask, prefixed with '#' in the protocol. Selects all the users whose host matches the mask.

ServerMask Mask

Server mask, prefixed with $ in the protocol. Selects all the users connected to a server which matches the mask.

Message

data GenericMessage Source

A generic IRC message. It consists of a sender prefix, command name (string or numeric) and optionally a list of parameters.

data SpecificMessage Source

An IRC message of a specific type. This includes only messages whose command is a name. Messages with a numeric command are handled in the Network.IRC.Fun.Messages.Reply module.

data MessageTarget Source

Some IRC commands have targets. For example, to which channel to send a given text message. Targets are specified as parameters in IRC messages.

Constructors

ChannelTarget ChannelName

An IRC channel.

UserTarget (Maybe NickName) (Maybe UserAddr) (Maybe ServerName)

An IRC user. Possible combinations in the protocol are:

  • Address (address host is required)
  • Address and server (address host is optional)
  • Nickname
  • Nickname and address (address host is required)
MaskTarget TargetMask

A mask which matches the server or host of the users to whom the message should be sent.

data Message Source

An IRC message of specific type (excluding the optional sender prefix, see SpecificMessage).

Constructors

PassMessage Password 
NickMessage NickName 
UserMessage UserName Bool Bool RealName

first bool = whether invisible, second bool = whether sees wallops

OperMessage UserName Password 
UserModeMessage NickName [UserMode] [UserMode]

first list: modes to remove (-), second list: modes to add (+)

ServiceMessage NickName Mask String 
QuitMessage (Maybe String) 
SQuitMessage ServerName String 
JoinMessage (Maybe ([ChannelName], [ChannelKey])) 
PartMessage [ChannelName] (Maybe String) 
ChannelModeMessage [ChannelMode] [ChannelMode] 
TopicMessage ChannelName (Maybe ChannelTopic) 
NamesMessage [ChannelName] (Maybe ServerName) 
ListMessage [ChannelName] (Maybe ServerName) 
InviteMessage NickName ChannelName 
KickMessage [ChannelName] [UserName] (Maybe Comment) 
PrivMsgMessage MessageTarget String 
PrivActionMessage MessageTarget String 
NoticeMessage MessageTarget String 
MotdMessage (Maybe ServerName) 
LusersMessage (Maybe (Mask, Maybe ServerName)) 
VersionMessage (Maybe (Either ServerName Mask)) 
StatsMessage (Maybe (Query, Maybe (Either ServerName Mask))) 
LinksMessage (Maybe (Maybe (Either ServerName Mask), Mask)) 
TimeMessage (Maybe (Either ServerName Mask)) 
ConnectMessage ServerName PortNumber (Either ServerName Mask) 
TraceMessage (Maybe Target) 
AdminMessage (Maybe Target) 
InfoMessage (Maybe Target) 
ServlistMessage (Maybe (Mask, Maybe String)) 
SQueryMessage ServiceName String 
WhoMessage (Maybe (Mask, Bool)) 
WhoisMessage (Maybe ServerName) [Mask] 
WhowasMessage [NickName] (Maybe (Int, Maybe ServerName)) 
KillMessage NickName Comment 
PingMessage ServerName (Maybe ServerName) 
PongMessage ServerName (Maybe ServerName) 
ErrorMessage String 
AwayMessage (Maybe String) 
RehashMessage 
DieMessage 
RestartMessage 
SummonMessage UserName (Maybe (ServerName, Maybe ChannelName)) 
UsersMessage (Maybe ServerName) 
WallopsMessage String 
UserhostMessage [NickName] 
IsonMessage [NickName] 

Instances

Modes

Reply

data CommandResponseCode Source

TODO

Constructors

ReplyWelcome

TODO

ReplyYourHost

TODO

ReplyCreated

TODO

ReplyMyInfo

TODO

ReplyBounce

TODO

ReplyUserHost

TODO

ReplyIsOn

TODO

ReplyAway

TODO

ReplyUnAway

TODO

ReplyNoAway

TODO

ReplyWhoIsUser

TODO

ReplyWhoIsServer

TODO

ReplyWhoIsOperator

TODO

ReplyWhoIsIdle

TODO

ReplyEndOfWhoIs

TODO

ReplyWhoIsChannels

TODO

ReplyWhoWasUser

TODO

ReplyEndOfWhoWas

TODO

ReplyListStart

TODO

ReplyList

TODO

ReplyListEnd

TODO

ReplyUniqueOpIs

TODO

ReplyChannelModeIs

TODO

ReplyNoTopic

TODO

ReplyTopic

TODO

ReplyInviting

TODO

ReplySummoning

TODO

ReplyInviteList

TODO

ReplyEndOfInviteList

TODO

ReplyExceptList

TODO

ReplyEndOfExceptList

TODO

ReplyVersion

TODO

ReplyWhoReply

TODO

ReplyEndOfWho

TODO

ReplyNameReply

TODO

ReplyEndOfNames

TODO

ReplyLinks

TODO

ReplyEndOfLinks

TODO

ReplyBanList

TODO

ReplyEndOfBanList

TODO

ReplyInfo

TODO

ReplyEndOfInfo

TODO

ReplyMotdStart

TODO

ReplyMessageOfTheDay

TODO

ReplyEndOfMessageOfTheDay

TODO

ReplyYoureOper

TODO

ReplyRehashing

TODO

ReplyYoureService

TODO

ReplyTime

TODO

ReplyUsersStart

TODO

ReplyUsers

TODO

ReplyEndOfUsers

TODO

ReplyNoUsers

TODO

ReplyTraceLink

TODO

ReplyTraceConnecting

TODO

ReplyTraceHandshake

TODO

ReplyTraceUnknown

TODO

ReplyTraceOperator

TODO

ReplyTraceUser

TODO

ReplyTraceServer

TODO

ReplyTraceService

TODO

ReplyTraceNewType

TODO

ReplyTraceClass

TODO

ReplyTraceReconnect

TODO

ReplyTraceLog

TODO

ReplyTraceEnd

TODO

ReplyStatsLinkInfo

TODO

ReplyStatsCommands

TODO

ReplyEndOfStats

TODO

ReplyStatsUptime

TODO

ReplyStatsOLine

TODO

ReplyUModeIs

TODO

ReplyServList

TODO

ReplyServListEnd

TODO

ReplyLuserClient

TODO

ReplyLuserOp

TODO

ReplyLuserUnknown

TODO

ReplyLuserChannels

TODO

ReplyLuserMe

TODO

ReplyAdminMe

TODO

ReplyAdminLocation1

TODO

ReplyAdminLocation2

TODO

ReplyAdminEmail

TODO

ReplyTryAgain

TODO

ReplyFreenodeISupport

TODO

data Reply Source

TODO

Constructors

WelcomeReply

TODO

YourHostReply

TODO

CreatedReply

TODO

MyInfoReply

TODO

BounceReply

TODO

ISupportReply

TODO

UserHostReply

TODO

IsOnReply

TODO

AwayReply

TODO

UnAwayReply

TODO

NoAwayReply

TODO

WhoIsUserReply

TODO

WhoIsServerReply

TODO

WhoIsOperatorReply

TODO

WhoIsIdleReply

TODO

EndOfWhoIsReply

TODO

WhoIsChannelsReply

TODO

WhoWasUserReply

TODO

EndOfWhoWasReply

TODO

ListStartReply

TODO

ListReply

TODO

ListEndReply

TODO

UniqueOpIsReply

TODO

ChannelModeIsReply

TODO

NoTopicReply

TODO

TopicReply

TODO

InvitingReply

TODO

SummoningReply

TODO

InviteListReply

TODO

EndOfInviteListReply

TODO

ExceptListReply

TODO

EndOfExceptListReply

TODO

VersionReply

TODO

WhoReply

TODO

EndOfWhoReply

TODO

NamesReply ChannelPrivacy ChannelName [(Privilege, NickName)]

Lists members of IRC channels. Sent when JOINing a channel to list the users in that channel, or as a response to the NAMES command.

EndOfNamesReply

Sent after a sequence of 0 or more NameReplys, to signal that the list transmission is finished.

LinksReply

TODO

EndOfLinksReply

TODO

BanListReply

TODO

EndOfBanListReply

TODO

InfoReply

TODO

EndOfInfoReply

TODO

MotdStartReply

TODO

MessageOfTheDayReply

TODO

EndOfMessageOfTheDayReply

TODO

YoureOperReply

TODO

RehashingReply

TODO

YoureServiceReply

TODO

TimeReply

TODO

UsersStartReply

TODO

UsersReply

TODO

EndOfUsersReply

TODO

NoUsersReply

TODO

TraceLinkReply

TODO

TraceConnectingReply

TODO

TraceHandshakeReply

TODO

TraceUnknownReply

TODO

TraceOperatorReply

TODO

TraceUserReply

TODO

TraceServerReply

TODO

TraceServiceReply

TODO

TraceNewTypeReply

TODO

TraceClassReply

TODO

TraceReconnectReply

TODO

TraceLogReply

TODO

TraceEndReply

TODO

StatsLinkInfoReply

TODO

StatsCommandsReply

TODO

EndOfStatsReply

TODO

StatsUptimeReply

TODO

StatsOLineReply

TODO

UModeIsReply

TODO

ServListReply

TODO

ServListEndReply

TODO

LuserClientReply

TODO

LuserOpReply

TODO

LuserUnknownReply

TODO

LuserChannelsReply

TODO

LuserMeReply

TODO

AdminMeReply

TODO

AdminLocation1Reply

TODO

AdminLocation2Reply

TODO

AdminEmailReply

TODO

TryAgainReply

TODO

data SpecificReply Source

An IRC server numeric reply of a specific type.