ú΄¸a      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`None _Make a getter which returns the current time, and a formatted time string for use in IRC logs.abc   abc Safe -Check if a message mentions a given nickname.ÿThis isn't the same as substring search, since the nickname could appear inside a longer word. For example, "ron" isn't really mentioned in "asynchronic". Therefore, this function is a bit smarter about this, trying to capturing real mentions, and works quite well in practice.d Message contentNickname  d None1Check whether a nickname is present in a channel.1Check whether a nickname is present in a channel..Check in which channels a nickname is present.2Record a channel with the given present nicknames.Create new tracker.-Record a nickname being present in a channel.-Record a nickname being present in a channel.yRecord a nickname change. Remove old nickname from the channels in which it's present, and add the new nickname to them.2Record a channel with the given present nicknames.5Record a channel not having a given nickname anymore.5Record a channel not having a given nickname anymore.;Record a nickname not being present in any channel anymore."Remove a channel from the tracker.!Remove channels from the tracker. e     eNone!Details of the connection to IRC.IRC Server address, e.g. "irc.freenode.net" IRC server port, 6667 should be a safe default!AWhether to make an encrypted connection via TLS (not implemented)"IRC nickname for the bot, e.g. "funbot"#6Connection password, use if the nickname is registered$­Connect to an IRC server using the given connection parameters, and return a handle to the open socket. This just opens a TCP connection, without sending any IRC commands.%æDisconnect from IRC by closing the client's side of the connection. This function is mainly provided for completeness. You should probably use the QUIT command of IRC to quit the network in a manner coordinated with the server.&sSend an IRC command, given in string form, to the server. The given command string shouldn't contain any newlines.'>Send an IRC message represented in generic form to the server.("Send an IRC message to the server.)lReceive an IRC message, given in string form, from the server. The resulting string won't contain newlines.*lReceive an IRC message in generic form from the server. If parsing the message read from the server fails, f is returned.+ZReceive the next valid (successfully parsed) IRC message in generic form from the server.,\Receive an IRC message from the server. If parsing the message read from the server fails, f is returned.-IReceive the next valid (successfully parsed) IRC message from the server. !"#$%&'()*+,- !"#$%&'()*+,- !"#$%&'()*+,-  !"#$%&'()*+,-None.:An event triggered by an IRC message sent from the server./¬A ping was sent to the bot. The parameters are the server name and optionally a server to forward the response to. They can be passed as-is directly to the PONG response.0#A ping response sent by the server.1zOne or more users have been kicked from a channel for an optionally given reason. Parameters: Channel, nicknames, reason.27A user joined a channel. Parameters: Channel, nickname.3^A user left a channel, optionally with a given reason. Parameters: Channel, nickname, reason.4WA user left the network, optonally for the given reason. Parameters: Nickname, reason.5TODO6âMessage sent in a channel by a user. The last parameter indicates whether the message is actually a notice. If yes, the client shouldn't automatically send a response. Parameters: Channel, nickname, message, whether notice.71A channel message that is a virtual action (/me).8ñA private message sent specifically to the client from a user. The last parameter indicates whether the message is actually a notice. If yes, the client shouldn't send any automatic response. Parameters: Nickname, message, whether notice.91A private message that is a virtual action (/me).:>A user's nickname has changed. Parameters: Old nick, new nick.;gChannel topic change. Parameterss: Channel, nickname of user who changed the topic, new topic content.<jThe client has been invited to a channel by another user. Parameters: Channel, nickname of inviting user.=ÖThe server sent a list of nicknames present in a channel. Parameters: Channel privacy mode, channel name, list of users. Each list item is a pair of a user privilege level in the channel, and the user's nickname.?9Try to generate events from an IRC message. If it fails, g+ an error message is returned. Otherwise, h) a list of generated events is returned.@?Receive IRC events. If parsing and detecting the events fails, f is returned.APReceive the next valid (successfully parsed and detected) series of IRC events../0123456789:;<=>ij?@A./0123456789:;<=>?@A./0123456789:;<=>?@A./0123456789:;<=>ij?@ANone BbLog in as an IRC user with nickname and optional password, using the given connection parameters.CÿIRC servers send PING messages at regular intervals to test the presence of an active client, at least if no other activity is detected on the connection. The server closes the connection automatically if a PONG response isn't sent from the client within a certain amount of time.ºTherefore, an IRC client usually listens to these PINGs and sends back PONG messages. This function sends a PONG. The parameters should simply be the ones received in the PING message.DJoin an IRC channel.EJoin one or more IRC channels.FLeave an IRC channel.GLeave one or more IRC channels.H"Leave all IRC channels you joined.I&Send a private message to an IRC user.J*Send a private /me message to an IRC user.K!Send a message to an IRC channel.L%Send a /me message to an IRC channel.MBFinish the IRC session, asking the server to close the connection. B*Handle to the open socket, returned from $Connection configuration'Whether you want to be invisible (mode +i)&Whether you want to see wallops (mode +w)CHandle to the open socket Server nameOptional server to forward toDHandle to the open socket Channel nameOptional channel key (password)EHandle to the open socket%List of channels and optional keysFGHIHandle to the open socketThe user's nicknameThe message to sendJHandle to the open socketThe user's nicknameThe message to sendKHandle to the open socketThe channel nameThe message to sendLHandle to the open socketThe channel nameThe message to sendMHandle to the open socket*Optional message, e.g. the reason you quit BCDEFGHIJKLM BCDEFGHIJKLM BCDEFGHIJKLMNone\)Utility for constructing a log file path.](Create a logger for a given IRC channel.^$Flush buffers and release resources.çWhen the logger is paused for a long period of time (i.e. not momentarily - e.g. by a user disabling channel logging via UI), you can use this to release resources. Later, when logging is needed again, create a fresh new logger.‰If your client joins many channels but log few of them, you can save resources by keeping open loggers only for the few logged channels._3Write a log message corresponding to a given event.`rIf an IRC client event can be logged, return a matching log event and the channel in which the event has occured.NOPQRSTUVWXYZ[klm\aDirectory in which to place log files. Relative to the program's working directory, or absolute.Server label, e.g.  "freenode"IRC channel name, e.g.  "#freepost"];Action which returns a formatted time string. You can use Network.IRC.Fun.Client.Time to create such an action.Path of the log file^no_`NOPQRSTUVWXYZ[\]^_`[UVWXYZNOPQRST\]^_` NOPQRSTUVWXYZ[klm\]^no_`Nonep          !"#$%&'(()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno pq rs rtuvewxyz{ircfu_7VQ3Vn7rAnLFW8JtIQeWajNetwork.IRC.Fun.Client.IONetwork.IRC.Fun.Client.EventsNetwork.IRC.Fun.Client.TimeNetwork.IRC.Fun.Client.Util"Network.IRC.Fun.Client.NickTrackerNetwork.IRC.Fun.Client.Commands$Network.IRC.Fun.Client.ChannelLoggerNetwork.IRC.Fun.ClientbaseGHC.IO.Handle.TypesHandleircfu_ISJAL1bMPfe4UaEVqcwHUM'Network.IRC.Fun.Messages.Internal.TypesOperatorVoiceRegular PrivilegePublicPrivateSecretChannelPrivacycurrentTimeGettermentionsNetworkTrackerChannelTracker isMemberOf isInChannelpresence newChannel newNetwork addMember addToChannel changeNick addChannel removeMemberremoveFromChannelremoveFromNetwork removeChannelremoveChannels Connectionserverporttlsnickpassword ircConnect ircDisconnect hPutIrcRawhPutIrcGenerichPutIrc hGetIrcRawhGetIrcGenericOncehGetIrcGeneric hGetIrcOncehGetIrcEventPingPongKickJoinPartQuitModeChannelMessage ChannelActionPrivateMessage PrivateAction NickChangeTopicInviteNames OtherEvent detectEventshGetIrcEventsOnce hGetIrcEventsircLoginircPongircJoin ircJoinMultiircPart ircPartMulti ircPartAll ircSendToUser ircActToUserircSendToChannelircActToChannelircQuitLogEventEnterLeaveLeaveAllMessageActionRename ChanLogEvent EnterChan LeaveChan MessageChan ActInChan RenameInChanLogger logFilePath newLogger removeLoggerlogEventfromClientEventformatactionsettings isNameCharapplySndGHC.BaseNothing Data.EitherLeftRightdetectMessageEventsdetectReplyEvents loggerSet loggerGetTime formatEvent formatLine