Some improvements relating to the IRC module.
This commit is contained in:
parent
fd01772634
commit
4896f63129
4 changed files with 25 additions and 20 deletions
|
|
@ -177,7 +177,9 @@ Internet Protocols and Support
|
||||||
|
|
||||||
* `smtp <smtp.html>`_
|
* `smtp <smtp.html>`_
|
||||||
This module implement a simple SMTP client.
|
This module implement a simple SMTP client.
|
||||||
|
|
||||||
|
* `irc <irc.html>`_
|
||||||
|
This module implements an asynchronous IRC client.
|
||||||
|
|
||||||
Parsers
|
Parsers
|
||||||
-------
|
-------
|
||||||
|
|
|
||||||
|
|
@ -159,22 +159,6 @@ proc parseMessage(msg: string): TIRCEvent =
|
||||||
if msg[i] == ':':
|
if msg[i] == ':':
|
||||||
inc(i) # Skip `:`.
|
inc(i) # Skip `:`.
|
||||||
result.params.add(msg[i..msg.len-1])
|
result.params.add(msg[i..msg.len-1])
|
||||||
|
|
||||||
proc irc*(address: string, port: TPort = 6667.TPort,
|
|
||||||
nick = "NimrodBot",
|
|
||||||
user = "NimrodBot",
|
|
||||||
realname = "NimrodBot", serverPass = "",
|
|
||||||
joinChans: seq[string] = @[]): TIRC =
|
|
||||||
result.address = address
|
|
||||||
result.port = port
|
|
||||||
result.nick = nick
|
|
||||||
result.user = user
|
|
||||||
result.realname = realname
|
|
||||||
result.serverPass = serverPass
|
|
||||||
result.lastPing = epochTime()
|
|
||||||
result.lastPong = -1.0
|
|
||||||
result.lag = -1.0
|
|
||||||
result.channelsToJoin = joinChans
|
|
||||||
|
|
||||||
proc connect*(irc: var TIRC) =
|
proc connect*(irc: var TIRC) =
|
||||||
## Connects to an IRC server as specified by ``irc``.
|
## Connects to an IRC server as specified by ``irc``.
|
||||||
|
|
@ -188,6 +172,25 @@ proc connect*(irc: var TIRC) =
|
||||||
if irc.serverPass != "": irc.send("PASS " & irc.serverPass)
|
if irc.serverPass != "": irc.send("PASS " & irc.serverPass)
|
||||||
irc.send("NICK " & irc.nick)
|
irc.send("NICK " & irc.nick)
|
||||||
irc.send("USER $1 * 0 :$2" % [irc.user, irc.realname])
|
irc.send("USER $1 * 0 :$2" % [irc.user, irc.realname])
|
||||||
|
|
||||||
|
proc irc*(address: string, port: TPort = 6667.TPort,
|
||||||
|
nick = "NimrodBot",
|
||||||
|
user = "NimrodBot",
|
||||||
|
realname = "NimrodBot", serverPass = "",
|
||||||
|
joinChans: seq[string] = @[]): TIRC =
|
||||||
|
## This function calls `connect`, so you don't need to.
|
||||||
|
result.address = address
|
||||||
|
result.port = port
|
||||||
|
result.nick = nick
|
||||||
|
result.user = user
|
||||||
|
result.realname = realname
|
||||||
|
result.serverPass = serverPass
|
||||||
|
result.lastPing = epochTime()
|
||||||
|
result.lastPong = -1.0
|
||||||
|
result.lag = -1.0
|
||||||
|
result.channelsToJoin = joinChans
|
||||||
|
|
||||||
|
result.connect()
|
||||||
|
|
||||||
proc poll*(irc: var TIRC, ev: var TIRCEvent,
|
proc poll*(irc: var TIRC, ev: var TIRCEvent,
|
||||||
timeout: int = 500): bool =
|
timeout: int = 500): bool =
|
||||||
|
|
@ -236,8 +239,7 @@ proc getLastPong*(irc: var TIRC): float =
|
||||||
return irc.lastPong
|
return irc.lastPong
|
||||||
|
|
||||||
when isMainModule:
|
when isMainModule:
|
||||||
var client = irc("irc.freenode.net",joinChans = @["#nimrod"])
|
var client = irc("irc.freenode.net", nick="TestBot", joinChans = @["#nimrod"])
|
||||||
client.connect()
|
|
||||||
while True:
|
while True:
|
||||||
var event: TIRCEvent
|
var event: TIRCEvent
|
||||||
if client.poll(event):
|
if client.poll(event):
|
||||||
|
|
|
||||||
|
|
@ -73,6 +73,7 @@ Library Additions
|
||||||
- Added ``xmltree.innerText``.
|
- Added ``xmltree.innerText``.
|
||||||
- Added ``os.isAbsolute``.
|
- Added ``os.isAbsolute``.
|
||||||
- Added ``locks`` core module for more flexible locking support.
|
- Added ``locks`` core module for more flexible locking support.
|
||||||
|
- Added ``irc`` module.
|
||||||
|
|
||||||
|
|
||||||
2011-07-10 Version 0.8.12 released
|
2011-07-10 Version 0.8.12 released
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,7 @@ srcdoc: "pure/json;pure/base64;pure/scgi;pure/redis;impure/graphics"
|
||||||
srcdoc: "impure/rdstdin;wrappers/zmq;wrappers/sphinx"
|
srcdoc: "impure/rdstdin;wrappers/zmq;wrappers/sphinx"
|
||||||
srcdoc: "pure/collections/tables;pure/collections/sets;pure/collections/lists"
|
srcdoc: "pure/collections/tables;pure/collections/sets;pure/collections/lists"
|
||||||
srcdoc: "pure/collections/intsets;pure/collections/queues;pure/encodings"
|
srcdoc: "pure/collections/intsets;pure/collections/queues;pure/encodings"
|
||||||
srcdoc: "pure/events;pure/collections/sequtils"
|
srcdoc: "pure/events;pure/collections/sequtils;pure/irc"
|
||||||
|
|
||||||
webdoc: "wrappers/libcurl;pure/md5;wrappers/mysql;wrappers/iup"
|
webdoc: "wrappers/libcurl;pure/md5;wrappers/mysql;wrappers/iup"
|
||||||
webdoc: "wrappers/sqlite3;wrappers/postgres;wrappers/tinyc"
|
webdoc: "wrappers/sqlite3;wrappers/postgres;wrappers/tinyc"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue