code: def ip(self):
          
          if not self._ip:
              if 'ip' in self.config:
                  ip = self.config['ip']
              else:
                  ip = self.protocol.transport.get_extra_info('sockname')[0]
              ip = ip_address(ip)
              if ip.version == 4:
                  self._ip = ip
              else:  # pragma: no cover
                  response = urlopen('http://ipv4.icanhazip.com/')
                  ip = response.read().strip().decode()
                  ip = ip_address(ip)
                  self._ip = ip
          return self._ip
docs: return bot's ip as an ``ip_address`` object