diff --git a/erpnext/crm/doctype/twitter_settings/twitter_settings.py b/erpnext/crm/doctype/twitter_settings/twitter_settings.py
index 42874dd..442aa77 100644
--- a/erpnext/crm/doctype/twitter_settings/twitter_settings.py
+++ b/erpnext/crm/doctype/twitter_settings/twitter_settings.py
@@ -10,7 +10,6 @@
 from frappe.model.document import Document
 from frappe.utils import get_url_to_form
 from frappe.utils.file_manager import get_file_path
-from tweepy.error import TweepError
 
 
 class TwitterSettings(Document):
@@ -21,20 +20,22 @@
 				frappe.utils.get_url()
 			)
 		)
-		auth = tweepy.OAuthHandler(
+		auth = tweepy.OAuth1UserHandler(
 			self.consumer_key, self.get_password(fieldname="consumer_secret"), callback_url
 		)
 		try:
 			redirect_url = auth.get_authorization_url()
 			return redirect_url
-		except tweepy.TweepError as e:
+		except (tweepy.TweepyException, tweepy.HTTPException) as e:
 			frappe.msgprint(_("Error! Failed to get request token."))
 			frappe.throw(
 				_("Invalid {0} or {1}").format(frappe.bold("Consumer Key"), frappe.bold("Consumer Secret Key"))
 			)
 
 	def get_access_token(self, oauth_token, oauth_verifier):
-		auth = tweepy.OAuthHandler(self.consumer_key, self.get_password(fieldname="consumer_secret"))
+		auth = tweepy.OAuth1UserHandler(
+			self.consumer_key, self.get_password(fieldname="consumer_secret")
+		)
 		auth.request_token = {"oauth_token": oauth_token, "oauth_token_secret": oauth_verifier}
 
 		try:
@@ -59,13 +60,15 @@
 
 			frappe.local.response["type"] = "redirect"
 			frappe.local.response["location"] = get_url_to_form("Twitter Settings", "Twitter Settings")
-		except TweepError as e:
+		except (tweepy.TweepyException, tweepy.HTTPException) as e:
 			frappe.msgprint(_("Error! Failed to get access token."))
 			frappe.throw(_("Invalid Consumer Key or Consumer Secret Key"))
 
 	def get_api(self):
 		# authentication of consumer key and secret
-		auth = tweepy.OAuthHandler(self.consumer_key, self.get_password(fieldname="consumer_secret"))
+		auth = tweepy.OAuth1UserHandler(
+			self.consumer_key, self.get_password(fieldname="consumer_secret")
+		)
 		# authentication of access token and secret
 		auth.set_access_token(self.access_token, self.access_token_secret)
 
@@ -96,21 +99,21 @@
 
 			return response
 
-		except TweepError as e:
+		except (tweepy.TweepyException, tweepy.HTTPException) as e:
 			self.api_error(e)
 
 	def delete_tweet(self, tweet_id):
 		api = self.get_api()
 		try:
 			api.destroy_status(tweet_id)
-		except TweepError as e:
+		except (tweepy.TweepyException, tweepy.HTTPException) as e:
 			self.api_error(e)
 
 	def get_tweet(self, tweet_id):
 		api = self.get_api()
 		try:
 			response = api.get_status(tweet_id, trim_user=True, include_entities=True)
-		except TweepError as e:
+		except (tweepy.TweepyException, tweepy.HTTPException) as e:
 			self.api_error(e)
 
 		return response._json
diff --git a/pyproject.toml b/pyproject.toml
index 3e0dfb2..7841c92 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -20,7 +20,7 @@
     "googlemaps",
     "plaid-python~=7.2.1",
     "python-youtube~=0.8.0",
-    "tweepy~=3.10.0",
+    "tweepy~=4.14.0",
 
     # Not used directly - required by PyQRCode for PNG generation
     "pypng~=0.20220715.0",
