fix: improve error handling for write operation rate limits (retweet/like)

This commit is contained in:
jackwener
2026-03-09 20:22:46 +08:00
parent 27b02578c8
commit a6ad246071
3 changed files with 21 additions and 2 deletions

View File

@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
[project]
name = "twitter-cli"
version = "0.3.1"
version = "0.3.2"
description = "A CLI for Twitter/X — feed, bookmarks, and user timeline in terminal"
readme = "README.md"
license = "Apache-2.0"

View File

@@ -731,7 +731,26 @@ class TwitterClient:
)
time.sleep(wait)
continue
# Write operation rate limits (retweet/like/bookmark limits)
# Code 348 = "retweet limit", 327 = "already retweeted"
# Provide user-friendly message
if err_code in (348, 349):
raise TwitterAPIError(
429, "Rate limited: %s (try again later, recommended wait: 15+ minutes)" % err_msg
)
raise TwitterAPIError(0, "Twitter API returned errors: %s" % err_msg)
# GraphQL write mutations return errors in data.errors (separate from top-level)
if isinstance(parsed, dict) and "data" in parsed:
data_obj = parsed["data"]
if isinstance(data_obj, dict):
for key, val in data_obj.items():
if isinstance(val, dict) and val.get("errors"):
inner_errors = val["errors"]
if inner_errors:
inner_msg = inner_errors[0].get("message", "Unknown error")
raise TwitterAPIError(0, "Twitter API: %s" % inner_msg)
return parsed
# Should not be reached, but just in case

2
uv.lock generated
View File

@@ -1116,7 +1116,7 @@ wheels = [
[[package]]
name = "twitter-cli"
version = "0.3.0"
version = "0.3.1"
source = { editable = "." }
dependencies = [
{ name = "beautifulsoup4" },