diff --git a/twitter.lib.php b/twitter.lib.php
index e03c475..ba399a0 100644
--- a/twitter.lib.php
+++ b/twitter.lib.php
@@ -153,10 +153,15 @@ class Twitter {
     else {
       $error = $response->error;
       $data = $this->parse_response($response->data);
-      if (isset($data['error'])) {
-        $error = $data['error'];
+      if ($data['errors'][0]['code'] == TWITTER_DUPLICATE_CODE) {
+        return TWITTER_DUPLICATE_CODE;
+      }
+      else {
+        if (isset($data['error'])) {
+          $error = $data['error'];
+        }
+        throw new TwitterException($error);
       }
-      throw new TwitterException($error);
     }
   }
   
@@ -405,7 +410,8 @@ class Twitter {
   public function statuses_update($status, $params = array()) {
     $params['status'] = $status;
     $values = $this->call('statuses/update', $params, 'POST');
-    return new TwitterStatus($values);
+
+    return $values == TWITTER_DUPLICATE_CODE ? $values : new TwitterStatus($values);
   }
 
   /**
@@ -1277,8 +1283,13 @@ class Twitter {
       return FALSE;
     }
 
-    if (!$response) {
-      return FALSE;
+    if ($response == TWITTER_DUPLICATE_CODE) {
+      return TWITTER_DUPLICATE_CODE;
+    }
+    else {
+      if (!$response) {
+        return FALSE;
+      }
     }
 
     return $this->parse_response($response);
diff --git a/twitter.module b/twitter.module
index c3b46c1..96b4dda 100644
--- a/twitter.module
+++ b/twitter.module
@@ -9,6 +9,7 @@ define ('TWITTER_API',          'https://api.twitter.com');
 define ('TWITTER_SEARCH',       'https://search.twitter.com');
 define ('TWITTER_TINYURL',      'http://tinyurl.com');
 define ('TWITTER_OAUTH_CALLBACK_URL', 'twitter/oauth');
+define ('TWITTER_DUPLICATE_CODE', '187');
 
 /**
  * Implements hook_entity_info().
@@ -675,8 +676,9 @@ class TwitterStatus extends Entity {
     if (isset($values['retweeted_status'])) {
       $this->retweeted_status = new TwitterStatus($values['retweeted_status']);
     }
-
-    parent::__construct($values, 'twitter_status');
+    if(is_array($values)) {
+      parent::__construct($values, 'twitter_status');
+    }
   }
 }
 
diff --git a/twitter_post/twitter_post.module b/twitter_post/twitter_post.module
index 09e301b..33a6e02 100644
--- a/twitter_post/twitter_post.module
+++ b/twitter_post/twitter_post.module
@@ -62,11 +62,18 @@ function twitter_post_entity_insert($entity, $entity_type) {
             module_load_include('inc', 'twitter');
             $message = token_replace($message, array($entity_type => $entity));
             $status = twitter_set_status($twitter_account, $message);
-            if ($status) {
-              drupal_set_message(t('Successfully posted "%node" to Twitter: <a href="@status" target="_blank">@status</a>', array(
-                '%node' => isset($entity->title) ? $entity->title : '',
-                '@status' => _twitter_status_url($status),
-              )));
+            if ($status == TWITTER_DUPLICATE_CODE) {
+              drupal_set_message(t('Twitter post "%message" is a duplicate.', array(
+                '%message' => $message,
+              )), 'warning');
+            }
+            else {
+              if ($status) {
+                drupal_set_message(t('Successfully posted "%node" to Twitter: <a href="@status" target="_blank">@status</a>', array(
+                  '%node' => isset($entity->title) ? $entity->title : '',
+                  '@status' => _twitter_status_url($status),
+                )));
+              }
             }
           }
         }
