title: Python : Check if IRC connection is lost (PING PONG?)
body: <p>So my question is, how would i get my bot to listen if there is a PING and if there's no ping in an interval of a minute, it will react as though the connection has been lost. How would one go about doing that?</p>
  
  <p><strong>EDIT:</strong> </p>
  
  <p>This is the working code for registering the connection fallout (although having trouble with reconnecting):</p>
  
  <pre><code>#!/usr/bin/env python
  # -*- coding: utf-8 -*-
  
  import sys
  import socket
  import string
  import os
  import platform
  import time
  
  # Variables
  HOST = "irc.channel.net"
  PORT = 6667
  NICK = "Botname"
  IDENT = "Botname"
  REALNAME = os.getenv('USER')
  CHAN = "##ChannelName"
  readbuffer = ""
  
  # Our IRC connection
  irc = socket.socket()
  irc.settimeout(300)
  connected = False
  def connection(host, port, nick, ident, realname, chan):
      while connected is False:
          try:
              irc.connect((host, port))
              irc.send("NICK %s\r\n" % nick)
              irc.send("USER %s %s bla :%s\r\n" % (ident, host, realname))
              irc.send("JOIN :%s\r\n" % chan)
              # Initial msg to send when bot connects
              irc.send("PRIVMSG %s :%s\r\n" % (chan, "TehBot: "+ nick + " Realname: " + realname + " ."))
              global connected
              connected = True
          except socket.error:
              print "Attempting to connect..."
              time.sleep(5)
              continue
  connection(HOST, PORT, NICK, IDENT, REALNAME, CHAN)
  
  while connected:
      try:
          data = irc.recv ( 4096 )
          # If connection is lost
          if len(data) == 0:
              break
          print data
          # If Nick is in use
          if data.find ( "Nickname is already in use" ) != -1:
              NICK = NICK + str(time.time())
              connection(HOST, PORT, NICK, IDENT, REALNAME, CHAN)
          # Ping Pong so we don't get disconnected
          if data[0:4] == "PING":
              irc.send ( "PONG " + data.split() [ 1 ] + "\r\n" )
      except socket.timeout:
          global connected
          connected = False
          print connected
          break
  print "Out of loop"
  connection(HOST, PORT, NICK, IDENT, REALNAME, CHAN)
  </code></pre>