Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 9th, 2012  |  syntax: None  |  size: 1.44 KB  |  hits: 16  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. import events
  2. import sockets
  3. import strutils
  4.  
  5. type
  6.     TMessageReceivedEventArgs = object of TEventArgs
  7.         Nick*: string
  8.         Message*: string
  9.     TIRC = object
  10.         EventEmitter: TEventEmitter
  11.         MessageReceivedHandler*: TEventHandler
  12.         Socket: TSocket
  13.         IsConnected*: bool
  14.        
  15. proc initIRC*(): var TIRC =
  16.     var irc: TIRC
  17.     irc.IsConnected = false
  18.     irc.Socket = socket()
  19.     irc.EventEmitter = initEventEmitter()
  20.     irc.MessageReceivedHandler = initEventHandler("MessageReceived")
  21.    
  22. proc sendRaw*(irc: var TIRC, message: string) =
  23.     irc.Socket.send(message & "\r\n")
  24. proc handleData(irc: var TIRC) {.thread.} =
  25.     while irc.IsConnected:
  26.         var tup = @[irc.Socket]
  27.         var o = select(tup, 200)
  28.         echo($o)
  29.         echo($len(tup))
  30.         if len(tup) == 1:
  31.             #Connected
  32.             irc.IsConnected = True
  33.         else:
  34.             #Disconnected
  35.             irc.IsConnected = False
  36.    
  37. proc Connect*(irc: var TIRC, nick: string, host: string, port: int = 6667) =
  38.     connect(irc.Socket ,host ,TPort(port),TDomain.AF_INET)
  39.     send(irc.Socket,"USER " & nick & " " & nick & " "  & nick & " "  & nick &"\r\n")
  40.     send(irc.Socket,"NICK " & nick & "\r\n")
  41.     var thread: TThread[irc: var TIRC]
  42.     createThread(thread, handleData, irc)
  43.  
  44.  
  45.        
  46.        
  47. when isMainModule:
  48.     var irc = initIRC()
  49.     irc.Connect("AmryBot[Nim]","irc.freenode.net",6667)
  50.     irc.sendRaw("JOIN #nimrod")
  51.     os.Sleep(4000)