
Untitled
By: a guest on
May 9th, 2012 | syntax:
None | size: 1.44 KB | hits: 16 | expires: Never
import events
import sockets
import strutils
type
TMessageReceivedEventArgs = object of TEventArgs
Nick*: string
Message*: string
TIRC = object
EventEmitter: TEventEmitter
MessageReceivedHandler*: TEventHandler
Socket: TSocket
IsConnected*: bool
proc initIRC*(): var TIRC =
var irc: TIRC
irc.IsConnected = false
irc.Socket = socket()
irc.EventEmitter = initEventEmitter()
irc.MessageReceivedHandler = initEventHandler("MessageReceived")
proc sendRaw*(irc: var TIRC, message: string) =
irc.Socket.send(message & "\r\n")
proc handleData(irc: var TIRC) {.thread.} =
while irc.IsConnected:
var tup = @[irc.Socket]
var o = select(tup, 200)
echo($o)
echo($len(tup))
if len(tup) == 1:
#Connected
irc.IsConnected = True
else:
#Disconnected
irc.IsConnected = False
proc Connect*(irc: var TIRC, nick: string, host: string, port: int = 6667) =
connect(irc.Socket ,host ,TPort(port),TDomain.AF_INET)
send(irc.Socket,"USER " & nick & " " & nick & " " & nick & " " & nick &"\r\n")
send(irc.Socket,"NICK " & nick & "\r\n")
var thread: TThread[irc: var TIRC]
createThread(thread, handleData, irc)
when isMainModule:
var irc = initIRC()
irc.Connect("AmryBot[Nim]","irc.freenode.net",6667)
irc.sendRaw("JOIN #nimrod")
os.Sleep(4000)