Documentation
¶
Index ¶
- func GetRootTweetID(tweetID string, tweetDetailsRes *TweetDetailsResponse) string
- func IsReply(tweetID string, tweetDetailsRes *TweetDetailsResponse) bool
- type Client
- func (c *Client) CreateTweet(tweetContent string, opts *TweetOptions) (*CreateTweetResponse, error)
- func (c *Client) FavoriteTweet(tweetID string) error
- func (c *Client) GetTweetDetails(tweetID string) (*TweetDetailsResponse, error)
- func (c *Client) ParseSearchTimelineResponse(res *SearchTimelineResponse) ([]*ParsedTweet, error)
- func (c *Client) ParseTweet(res *TweetDetailsResponse) (*ParsedTweet, error)
- func (c *Client) ParseTweetReplies(res *TweetDetailsResponse, userIDFilter string) ([]ParsedTweet, error)
- func (c *Client) SearchReplies(username string, limit int) (*SearchTimelineResponse, error)
- func (c *Client) SearchTimeline(accounts []string) (*SearchTimelineResponse, error)
- type CreateTweetFeatures
- type CreateTweetRequest
- type CreateTweetResponse
- type CreateTweetVariables
- type FavoriteTweetRequest
- type FavoriteTweetResponse
- type ParsedTweet
- type SearchTimelineResponse
- type TweetDetailsResponse
- type TweetOptions
- type TwitterCredential
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func GetRootTweetID ¶
func GetRootTweetID(tweetID string, tweetDetailsRes *TweetDetailsResponse) string
GetRootTweetID gets the tweet ID of the root tweet of a conversation
func IsReply ¶
func IsReply(tweetID string, tweetDetailsRes *TweetDetailsResponse) bool
IsReply checks if a tweet is a reply to another tweet
Types ¶
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
func (*Client) CreateTweet ¶
func (c *Client) CreateTweet(tweetContent string, opts *TweetOptions) (*CreateTweetResponse, error)
CreateTweet creates a tweet
func (*Client) FavoriteTweet ¶
FavoriteTweet favorites a tweet
func (*Client) GetTweetDetails ¶
func (c *Client) GetTweetDetails(tweetID string) (*TweetDetailsResponse, error)
GetTweetDetails gets the details of a tweet
func (*Client) ParseSearchTimelineResponse ¶
func (c *Client) ParseSearchTimelineResponse(res *SearchTimelineResponse) ([]*ParsedTweet, error)
func (*Client) ParseTweet ¶
func (c *Client) ParseTweet(res *TweetDetailsResponse) (*ParsedTweet, error)
ParseTweet parses a single tweet from a TweetDetailsResponse
func (*Client) ParseTweetReplies ¶
func (c *Client) ParseTweetReplies(res *TweetDetailsResponse, userIDFilter string) ([]ParsedTweet, error)
ParseTweetReplies parses the replies of a tweet. userIDFilter is the user ID of the user whose replies we want to parse. If userIDFilter is empty, all replies are parsed.
func (*Client) SearchReplies ¶
func (c *Client) SearchReplies(username string, limit int) (*SearchTimelineResponse, error)
SearchReplies searches for replies to the specified user
func (*Client) SearchTimeline ¶
func (c *Client) SearchTimeline(accounts []string) (*SearchTimelineResponse, error)
SearchTimeline searches the timeline for tweets from the given accounts
type CreateTweetFeatures ¶
type CreateTweetFeatures struct {
CommunitiesWebEnableTweetCommunityResultsFetch bool `json:"communities_web_enable_tweet_community_results_fetch"`
C9STweetAnatomyModeratorBadgeEnabled bool `json:"c9s_tweet_anatomy_moderator_badge_enabled"`
ResponsiveWebEditTweetAPIEnabled bool `json:"responsive_web_edit_tweet_api_enabled"`
GraphqlIsTranslatableRwebTweetIsTranslatableEnabled bool `json:"graphql_is_translatable_rweb_tweet_is_translatable_enabled"`
ViewCountsEverywhereAPIEnabled bool `json:"view_counts_everywhere_api_enabled"`
LongformNotetweetsConsumptionEnabled bool `json:"longform_notetweets_consumption_enabled"`
ResponsiveWebTwitterArticleTweetConsumptionEnabled bool `json:"responsive_web_twitter_article_tweet_consumption_enabled"`
TweetAwardsWebTippingEnabled bool `json:"tweet_awards_web_tipping_enabled"`
CreatorSubscriptionsQuoteTweetPreviewEnabled bool `json:"creator_subscriptions_quote_tweet_preview_enabled"`
LongformNotetweetsRichTextReadEnabled bool `json:"longform_notetweets_rich_text_read_enabled"`
LongformNotetweetsInlineMediaEnabled bool `json:"longform_notetweets_inline_media_enabled"`
ArticlesPreviewEnabled bool `json:"articles_preview_enabled"`
RwebVideoTimestampsEnabled bool `json:"rweb_video_timestamps_enabled"`
ProfileLabelImprovementsPcfLabelInPostEnabled bool `json:"profile_label_improvements_pcf_label_in_post_enabled"`
RwebTipjarConsumptionEnabled bool `json:"rweb_tipjar_consumption_enabled"`
ResponsiveWebGraphqlExcludeDirectiveEnabled bool `json:"responsive_web_graphql_exclude_directive_enabled"`
VerifiedPhoneLabelEnabled bool `json:"verified_phone_label_enabled"`
FreedomOfSpeechNotReachFetchEnabled bool `json:"freedom_of_speech_not_reach_fetch_enabled"`
StandardizedNudgesMisinfo bool `json:"standardized_nudges_misinfo"`
TweetWithVisibilityResultsPreferGqlLimitedActionsPolicyEnabled bool `json:"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled"`
ResponsiveWebGraphqlSkipUserProfileImageExtensionsEnabled bool `json:"responsive_web_graphql_skip_user_profile_image_extensions_enabled"`
ResponsiveWebEnhanceCardsEnabled bool `json:"responsive_web_enhance_cards_enabled"`
}
type CreateTweetRequest ¶
type CreateTweetRequest struct {
Variables CreateTweetVariables `json:"variables,omitempty"`
Features CreateTweetFeatures `json:"features,omitempty"`
QueryID string `json:"queryId,omitempty"`
}
type CreateTweetResponse ¶
type CreateTweetResponse struct {
Data struct {
CreateTweet struct {
TweetResults struct {
Result struct {
RestID string `json:"rest_id"`
Core struct {
UserResults struct {
Result struct {
Typename string `json:"__typename"`
ID string `json:"id"`
RestID string `json:"rest_id"`
AffiliatesHighlightedLabel struct {
} `json:"affiliates_highlighted_label"`
HasGraduatedAccess bool `json:"has_graduated_access"`
IsBlueVerified bool `json:"is_blue_verified"`
ProfileImageShape string `json:"profile_image_shape"`
Legacy struct {
Following bool `json:"following"`
CanDm bool `json:"can_dm"`
CanMediaTag bool `json:"can_media_tag"`
CreatedAt string `json:"created_at"`
DefaultProfile bool `json:"default_profile"`
DefaultProfileImage bool `json:"default_profile_image"`
Description string `json:"description"`
Entities struct {
Description struct {
Urls []any `json:"urls"`
} `json:"description"`
} `json:"entities"`
FastFollowersCount int `json:"fast_followers_count"`
FavouritesCount int `json:"favourites_count"`
FollowersCount int `json:"followers_count"`
FriendsCount int `json:"friends_count"`
HasCustomTimelines bool `json:"has_custom_timelines"`
IsTranslator bool `json:"is_translator"`
ListedCount int `json:"listed_count"`
Location string `json:"location"`
MediaCount int `json:"media_count"`
Name string `json:"name"`
NeedsPhoneVerification bool `json:"needs_phone_verification"`
NormalFollowersCount int `json:"normal_followers_count"`
PinnedTweetIdsStr []string `json:"pinned_tweet_ids_str"`
PossiblySensitive bool `json:"possibly_sensitive"`
ProfileImageURLHTTPS string `json:"profile_image_url_https"`
ProfileInterstitialType string `json:"profile_interstitial_type"`
ScreenName string `json:"screen_name"`
StatusesCount int `json:"statuses_count"`
TranslatorType string `json:"translator_type"`
Verified bool `json:"verified"`
WantRetweets bool `json:"want_retweets"`
WithheldInCountries []any `json:"withheld_in_countries"`
} `json:"legacy"`
TipjarSettings struct {
IsEnabled bool `json:"is_enabled"`
BitcoinHandle string `json:"bitcoin_handle"`
} `json:"tipjar_settings"`
} `json:"result"`
} `json:"user_results"`
} `json:"core"`
UnmentionData struct {
} `json:"unmention_data"`
EditControl struct {
EditTweetIds []string `json:"edit_tweet_ids"`
EditableUntilMsecs string `json:"editable_until_msecs"`
IsEditEligible bool `json:"is_edit_eligible"`
EditsRemaining string `json:"edits_remaining"`
} `json:"edit_control"`
IsTranslatable bool `json:"is_translatable"`
Views struct {
State string `json:"state"`
} `json:"views"`
Source string `json:"source"`
Legacy struct {
BookmarkCount int `json:"bookmark_count"`
Bookmarked bool `json:"bookmarked"`
CreatedAt string `json:"created_at"`
ConversationIDStr string `json:"conversation_id_str"`
DisplayTextRange []int `json:"display_text_range"`
Entities struct {
Hashtags []any `json:"hashtags"`
Symbols []any `json:"symbols"`
Timestamps []any `json:"timestamps"`
Urls []any `json:"urls"`
UserMentions []struct {
IDStr string `json:"id_str"`
Name string `json:"name"`
ScreenName string `json:"screen_name"`
Indices []int `json:"indices"`
} `json:"user_mentions"`
} `json:"entities"`
FavoriteCount int `json:"favorite_count"`
Favorited bool `json:"favorited"`
FullText string `json:"full_text"`
InReplyToScreenName string `json:"in_reply_to_screen_name"`
InReplyToStatusIDStr string `json:"in_reply_to_status_id_str"`
InReplyToUserIDStr string `json:"in_reply_to_user_id_str"`
IsQuoteStatus bool `json:"is_quote_status"`
Lang string `json:"lang"`
QuoteCount int `json:"quote_count"`
ReplyCount int `json:"reply_count"`
RetweetCount int `json:"retweet_count"`
Retweeted bool `json:"retweeted"`
UserIDStr string `json:"user_id_str"`
IDStr string `json:"id_str"`
} `json:"legacy"`
UnmentionInfo struct {
} `json:"unmention_info"`
} `json:"result"`
} `json:"tweet_results"`
} `json:"create_tweet"`
} `json:"data"`
}
type CreateTweetVariables ¶
type CreateTweetVariables struct {
TweetText string `json:"tweet_text,omitempty"`
Reply *struct {
InReplyToTweetID string `json:"in_reply_to_tweet_id,omitempty"`
ExcludeReplyUserIds []any `json:"exclude_reply_user_ids,omitempty"`
} `json:"reply,omitempty"`
DarkRequest bool `json:"dark_request,omitempty"`
Media struct {
MediaEntities []any `json:"media_entities,omitempty"`
PossiblySensitive bool `json:"possibly_sensitive,omitempty"`
} `json:"media,omitempty"`
SemanticAnnotationIds []any `json:"semantic_annotation_ids,omitempty"`
DisallowedReplyOptions any `json:"disallowed_reply_options,omitempty"`
}
type FavoriteTweetRequest ¶
type FavoriteTweetResponse ¶
type FavoriteTweetResponse struct {
Data struct {
FavoriteTweet string `json:"favorite_tweet,omitempty"`
} `json:"data,omitempty"`
}
type ParsedTweet ¶
type ParsedTweet struct {
// User Info
UserID string `json:"user_id,omitempty"`
UserName string `json:"user_name,omitempty"`
DisplayName string `json:"display_name,omitempty"`
// Tweet Info
TweetCreatedAt int64 `json:"tweet_created_at,omitempty"`
TweetID string `json:"tweet_id,omitempty"`
TweetConversationID string `json:"tweet_conversation_id,omitempty"`
TweetText string `json:"tweet_text,omitempty"`
TweetImages []string `json:"tweet_images,omitempty"`
TweetLinks []string `json:"tweet_links,omitempty"`
TweetReplies []ParsedTweet `json:"reply_tweets,omitempty"`
InReplyToTweetID string `json:"in_reply_to_tweet_id,omitempty"`
InReplyToScreenName string `json:"in_reply_to_screen_name,omitempty"`
}
type SearchTimelineResponse ¶
type SearchTimelineResponse struct {
Data struct {
SearchByRawQuery struct {
SearchTimeline struct {
Timeline struct {
Instructions []struct {
Type string `json:"type"`
Entries []struct {
EntryID string `json:"entryId"`
SortIndex string `json:"sortIndex"`
Content struct {
EntryType string `json:"entryType"`
Typename string `json:"__typename"`
ItemContent struct {
ItemType string `json:"itemType"`
Typename string `json:"__typename"`
TweetResults struct {
Result struct {
Typename string `json:"__typename"`
RestID string `json:"rest_id"`
Core struct {
UserResults struct {
Result struct {
Typename string `json:"__typename"`
ID string `json:"id"`
RestID string `json:"rest_id"`
AffiliatesHighlightedLabel struct {
} `json:"affiliates_highlighted_label"`
HasGraduatedAccess bool `json:"has_graduated_access"`
IsBlueVerified bool `json:"is_blue_verified"`
ProfileImageShape string `json:"profile_image_shape"`
Legacy struct {
FollowedBy bool `json:"followed_by"`
Following bool `json:"following"`
CanDm bool `json:"can_dm"`
CanMediaTag bool `json:"can_media_tag"`
CreatedAt string `json:"created_at"`
DefaultProfile bool `json:"default_profile"`
DefaultProfileImage bool `json:"default_profile_image"`
Description string `json:"description"`
Entities struct {
Description struct {
Urls []struct {
DisplayURL string `json:"display_url"`
ExpandedURL string `json:"expanded_url"`
URL string `json:"url"`
Indices []int `json:"indices"`
} `json:"urls"`
} `json:"description"`
URL struct {
Urls []struct {
DisplayURL string `json:"display_url"`
ExpandedURL string `json:"expanded_url"`
URL string `json:"url"`
Indices []int `json:"indices"`
} `json:"urls"`
} `json:"url"`
} `json:"entities"`
FastFollowersCount int `json:"fast_followers_count"`
FavouritesCount int `json:"favourites_count"`
FollowersCount int `json:"followers_count"`
FriendsCount int `json:"friends_count"`
HasCustomTimelines bool `json:"has_custom_timelines"`
IsTranslator bool `json:"is_translator"`
ListedCount int `json:"listed_count"`
Location string `json:"location"`
MediaCount int `json:"media_count"`
Name string `json:"name"`
NormalFollowersCount int `json:"normal_followers_count"`
PinnedTweetIdsStr []string `json:"pinned_tweet_ids_str"`
PossiblySensitive bool `json:"possibly_sensitive"`
ProfileBannerURL string `json:"profile_banner_url"`
ProfileImageURLHTTPS string `json:"profile_image_url_https"`
ProfileInterstitialType string `json:"profile_interstitial_type"`
ScreenName string `json:"screen_name"`
StatusesCount int `json:"statuses_count"`
TranslatorType string `json:"translator_type"`
URL string `json:"url"`
Verified bool `json:"verified"`
WantRetweets bool `json:"want_retweets"`
WithheldInCountries []interface{} `json:"withheld_in_countries"`
} `json:"legacy"`
Professional struct {
RestID string `json:"rest_id"`
ProfessionalType string `json:"professional_type"`
Category []struct {
ID int `json:"id"`
Name string `json:"name"`
IconName string `json:"icon_name"`
} `json:"category"`
} `json:"professional"`
TipjarSettings struct {
IsEnabled bool `json:"is_enabled"`
EthereumHandle string `json:"ethereum_handle"`
} `json:"tipjar_settings"`
SuperFollowEligible bool `json:"super_follow_eligible"`
} `json:"result"`
} `json:"user_results"`
} `json:"core"`
UnmentionData struct {
} `json:"unmention_data"`
EditControl struct {
EditTweetIds []string `json:"edit_tweet_ids"`
EditableUntilMsecs string `json:"editable_until_msecs"`
IsEditEligible bool `json:"is_edit_eligible"`
EditsRemaining string `json:"edits_remaining"`
} `json:"edit_control"`
IsTranslatable bool `json:"is_translatable"`
Views struct {
Count string `json:"count"`
State string `json:"state"`
} `json:"views"`
Source string `json:"source"`
Legacy struct {
BookmarkCount int `json:"bookmark_count"`
Bookmarked bool `json:"bookmarked"`
CreatedAt string `json:"created_at"`
ConversationIDStr string `json:"conversation_id_str"`
DisplayTextRange []int `json:"display_text_range"`
Entities struct {
Hashtags []interface{} `json:"hashtags"`
Media []struct {
DisplayURL string `json:"display_url"`
ExpandedURL string `json:"expanded_url"`
IDStr string `json:"id_str"`
Indices []int `json:"indices"`
MediaKey string `json:"media_key"`
MediaURLHTTPS string `json:"media_url_https"`
Type string `json:"type"`
URL string `json:"url"`
ExtMediaAvailability struct {
Status string `json:"status"`
} `json:"ext_media_availability"`
Features struct {
Large struct {
Faces []struct {
X int `json:"x"`
Y int `json:"y"`
H int `json:"h"`
W int `json:"w"`
} `json:"faces"`
} `json:"large"`
Medium struct {
Faces []struct {
X int `json:"x"`
Y int `json:"y"`
H int `json:"h"`
W int `json:"w"`
} `json:"faces"`
} `json:"medium"`
Small struct {
Faces []struct {
X int `json:"x"`
Y int `json:"y"`
H int `json:"h"`
W int `json:"w"`
} `json:"faces"`
} `json:"small"`
Orig struct {
Faces []struct {
X int `json:"x"`
Y int `json:"y"`
H int `json:"h"`
W int `json:"w"`
} `json:"faces"`
} `json:"orig"`
} `json:"features"`
Sizes struct {
Large struct {
H int `json:"h"`
W int `json:"w"`
Resize string `json:"resize"`
} `json:"large"`
Medium struct {
H int `json:"h"`
W int `json:"w"`
Resize string `json:"resize"`
} `json:"medium"`
Small struct {
H int `json:"h"`
W int `json:"w"`
Resize string `json:"resize"`
} `json:"small"`
Thumb struct {
H int `json:"h"`
W int `json:"w"`
Resize string `json:"resize"`
} `json:"thumb"`
} `json:"sizes"`
OriginalInfo struct {
Height int `json:"height"`
Width int `json:"width"`
FocusRects []struct {
X int `json:"x"`
Y int `json:"y"`
W int `json:"w"`
H int `json:"h"`
} `json:"focus_rects"`
} `json:"original_info"`
AllowDownloadStatus struct {
AllowDownload bool `json:"allow_download"`
} `json:"allow_download_status"`
MediaResults struct {
Result struct {
MediaKey string `json:"media_key"`
} `json:"result"`
} `json:"media_results"`
} `json:"media"`
Symbols []interface{} `json:"symbols"`
Timestamps []interface{} `json:"timestamps"`
Urls []interface{} `json:"urls"`
UserMentions []struct {
IDStr string `json:"id_str"`
Name string `json:"name"`
ScreenName string `json:"screen_name"`
Indices []int `json:"indices"`
} `json:"user_mentions"`
} `json:"entities"`
ExtendedEntities struct {
Media []struct {
DisplayURL string `json:"display_url"`
ExpandedURL string `json:"expanded_url"`
IDStr string `json:"id_str"`
Indices []int `json:"indices"`
MediaKey string `json:"media_key"`
MediaURLHTTPS string `json:"media_url_https"`
Type string `json:"type"`
URL string `json:"url"`
ExtMediaAvailability struct {
Status string `json:"status"`
} `json:"ext_media_availability"`
Features struct {
Large struct {
Faces []struct {
X int `json:"x"`
Y int `json:"y"`
H int `json:"h"`
W int `json:"w"`
} `json:"faces"`
} `json:"large"`
Medium struct {
Faces []struct {
X int `json:"x"`
Y int `json:"y"`
H int `json:"h"`
W int `json:"w"`
} `json:"faces"`
} `json:"medium"`
Small struct {
Faces []struct {
X int `json:"x"`
Y int `json:"y"`
H int `json:"h"`
W int `json:"w"`
} `json:"faces"`
} `json:"small"`
Orig struct {
Faces []struct {
X int `json:"x"`
Y int `json:"y"`
H int `json:"h"`
W int `json:"w"`
} `json:"faces"`
} `json:"orig"`
} `json:"features"`
Sizes struct {
Large struct {
H int `json:"h"`
W int `json:"w"`
Resize string `json:"resize"`
} `json:"large"`
Medium struct {
H int `json:"h"`
W int `json:"w"`
Resize string `json:"resize"`
} `json:"medium"`
Small struct {
H int `json:"h"`
W int `json:"w"`
Resize string `json:"resize"`
} `json:"small"`
Thumb struct {
H int `json:"h"`
W int `json:"w"`
Resize string `json:"resize"`
} `json:"thumb"`
} `json:"sizes"`
OriginalInfo struct {
Height int `json:"height"`
Width int `json:"width"`
FocusRects []struct {
X int `json:"x"`
Y int `json:"y"`
W int `json:"w"`
H int `json:"h"`
} `json:"focus_rects"`
} `json:"original_info"`
AllowDownloadStatus struct {
AllowDownload bool `json:"allow_download"`
} `json:"allow_download_status"`
MediaResults struct {
Result struct {
MediaKey string `json:"media_key"`
} `json:"result"`
} `json:"media_results"`
} `json:"media"`
} `json:"extended_entities"`
FavoriteCount int `json:"favorite_count"`
Favorited bool `json:"favorited"`
FullText string `json:"full_text"`
InReplyToScreenName string `json:"in_reply_to_screen_name,omitempty"`
InReplyToStatusIDStr string `json:"in_reply_to_status_id_str,omitempty"`
IsQuoteStatus bool `json:"is_quote_status"`
Lang string `json:"lang"`
PossiblySensitive bool `json:"possibly_sensitive"`
PossiblySensitiveEditable bool `json:"possibly_sensitive_editable"`
QuoteCount int `json:"quote_count"`
ReplyCount int `json:"reply_count"`
RetweetCount int `json:"retweet_count"`
Retweeted bool `json:"retweeted"`
UserIDStr string `json:"user_id_str"`
IDStr string `json:"id_str"`
} `json:"legacy"`
} `json:"result"`
} `json:"tweet_results"`
TweetDisplayType string `json:"tweetDisplayType"`
} `json:"itemContent"`
ClientEventInfo struct {
Component string `json:"component"`
Element string `json:"element"`
Details struct {
TimelinesDetails struct {
ControllerData string `json:"controllerData"`
} `json:"timelinesDetails"`
} `json:"details"`
} `json:"clientEventInfo"`
} `json:"content"`
} `json:"entries"`
} `json:"instructions"`
} `json:"timeline"`
} `json:"search_timeline"`
} `json:"search_by_raw_query"`
} `json:"data"`
}
type TweetDetailsResponse ¶
type TweetDetailsResponse struct {
Data struct {
ThreadedConversationWithInjectionsV2 struct {
Instructions []struct {
Type string `json:"type,omitempty"`
Entries []struct {
EntryID string `json:"entryId,omitempty"`
SortIndex string `json:"sortIndex,omitempty"`
Content struct {
EntryType string `json:"entryType,omitempty"`
Typename string `json:"__typename,omitempty"`
ItemContent struct {
ItemType string `json:"itemType,omitempty"`
Typename string `json:"__typename,omitempty"`
TweetResults struct {
Result struct {
Typename string `json:"__typename,omitempty"`
RestID string `json:"rest_id,omitempty"`
HasBirdwatchNotes bool `json:"has_birdwatch_notes,omitempty"`
Core struct {
UserResults struct {
Result struct {
Typename string `json:"__typename,omitempty"`
ID string `json:"id,omitempty"`
RestID string `json:"rest_id,omitempty"`
AffiliatesHighlightedLabel struct {
} `json:"affiliates_highlighted_label,omitempty"`
HasGraduatedAccess bool `json:"has_graduated_access,omitempty"`
IsBlueVerified bool `json:"is_blue_verified,omitempty"`
ProfileImageShape string `json:"profile_image_shape,omitempty"`
Legacy struct {
FollowedBy bool `json:"followed_by,omitempty"`
Following bool `json:"following,omitempty"`
CanDm bool `json:"can_dm,omitempty"`
CanMediaTag bool `json:"can_media_tag,omitempty"`
CreatedAt string `json:"created_at,omitempty"`
DefaultProfile bool `json:"default_profile,omitempty"`
DefaultProfileImage bool `json:"default_profile_image,omitempty"`
Description string `json:"description,omitempty"`
Entities struct {
Description struct {
Urls []struct {
DisplayURL string `json:"display_url,omitempty"`
ExpandedURL string `json:"expanded_url,omitempty"`
URL string `json:"url,omitempty"`
Indices []int `json:"indices,omitempty"`
} `json:"urls,omitempty"`
} `json:"description,omitempty"`
URL struct {
Urls []struct {
DisplayURL string `json:"display_url,omitempty"`
ExpandedURL string `json:"expanded_url,omitempty"`
URL string `json:"url,omitempty"`
Indices []int `json:"indices,omitempty"`
} `json:"urls,omitempty"`
} `json:"url,omitempty"`
} `json:"entities,omitempty"`
FastFollowersCount int `json:"fast_followers_count,omitempty"`
FavouritesCount int `json:"favourites_count,omitempty"`
FollowersCount int `json:"followers_count,omitempty"`
FriendsCount int `json:"friends_count,omitempty"`
HasCustomTimelines bool `json:"has_custom_timelines,omitempty"`
IsTranslator bool `json:"is_translator,omitempty"`
ListedCount int `json:"listed_count,omitempty"`
Location string `json:"location,omitempty"`
MediaCount int `json:"media_count,omitempty"`
Name string `json:"name,omitempty"`
NormalFollowersCount int `json:"normal_followers_count,omitempty"`
PinnedTweetIdsStr []string `json:"pinned_tweet_ids_str,omitempty"`
PossiblySensitive bool `json:"possibly_sensitive,omitempty"`
ProfileBannerURL string `json:"profile_banner_url,omitempty"`
ProfileImageURLHTTPS string `json:"profile_image_url_https,omitempty"`
ProfileInterstitialType string `json:"profile_interstitial_type,omitempty"`
ScreenName string `json:"screen_name,omitempty"`
StatusesCount int `json:"statuses_count,omitempty"`
TranslatorType string `json:"translator_type,omitempty"`
URL string `json:"url,omitempty"`
Verified bool `json:"verified,omitempty"`
WantRetweets bool `json:"want_retweets,omitempty"`
WithheldInCountries []any `json:"withheld_in_countries,omitempty"`
} `json:"legacy,omitempty"`
Professional struct {
RestID string `json:"rest_id,omitempty"`
ProfessionalType string `json:"professional_type,omitempty"`
Category []struct {
ID int `json:"id,omitempty"`
Name string `json:"name,omitempty"`
IconName string `json:"icon_name,omitempty"`
} `json:"category,omitempty"`
} `json:"professional,omitempty"`
TipjarSettings struct {
IsEnabled bool `json:"is_enabled,omitempty"`
EthereumHandle string `json:"ethereum_handle,omitempty"`
} `json:"tipjar_settings,omitempty"`
SuperFollowEligible bool `json:"super_follow_eligible,omitempty"`
} `json:"result,omitempty"`
} `json:"user_results,omitempty"`
} `json:"core,omitempty"`
UnmentionData struct {
} `json:"unmention_data,omitempty"`
EditControl struct {
EditTweetIds []string `json:"edit_tweet_ids,omitempty"`
EditableUntilMsecs string `json:"editable_until_msecs,omitempty"`
IsEditEligible bool `json:"is_edit_eligible,omitempty"`
EditsRemaining string `json:"edits_remaining,omitempty"`
} `json:"edit_control,omitempty"`
IsTranslatable bool `json:"is_translatable,omitempty"`
Views struct {
Count string `json:"count,omitempty"`
State string `json:"state,omitempty"`
} `json:"views,omitempty"`
Source string `json:"source,omitempty"`
Legacy struct {
BookmarkCount int `json:"bookmark_count,omitempty"`
Bookmarked bool `json:"bookmarked,omitempty"`
CreatedAt string `json:"created_at,omitempty"`
ConversationIDStr string `json:"conversation_id_str,omitempty"`
DisplayTextRange []int `json:"display_text_range,omitempty"`
Entities struct {
Hashtags []any `json:"hashtags,omitempty"`
Media []struct {
DisplayURL string `json:"display_url,omitempty"`
ExpandedURL string `json:"expanded_url,omitempty"`
IDStr string `json:"id_str,omitempty"`
Indices []int `json:"indices,omitempty"`
MediaKey string `json:"media_key,omitempty"`
MediaURLHTTPS string `json:"media_url_https,omitempty"`
Type string `json:"type,omitempty"`
URL string `json:"url,omitempty"`
ExtMediaAvailability struct {
Status string `json:"status,omitempty"`
} `json:"ext_media_availability,omitempty"`
Features struct {
Large struct {
Faces []any `json:"faces,omitempty"`
} `json:"large,omitempty"`
Medium struct {
Faces []any `json:"faces,omitempty"`
} `json:"medium,omitempty"`
Small struct {
Faces []any `json:"faces,omitempty"`
} `json:"small,omitempty"`
Orig struct {
Faces []any `json:"faces,omitempty"`
} `json:"orig,omitempty"`
} `json:"features,omitempty"`
Sizes struct {
Large struct {
H int `json:"h,omitempty"`
W int `json:"w,omitempty"`
Resize string `json:"resize,omitempty"`
} `json:"large,omitempty"`
Medium struct {
H int `json:"h,omitempty"`
W int `json:"w,omitempty"`
Resize string `json:"resize,omitempty"`
} `json:"medium,omitempty"`
Small struct {
H int `json:"h,omitempty"`
W int `json:"w,omitempty"`
Resize string `json:"resize,omitempty"`
} `json:"small,omitempty"`
Thumb struct {
H int `json:"h,omitempty"`
W int `json:"w,omitempty"`
Resize string `json:"resize,omitempty"`
} `json:"thumb,omitempty"`
} `json:"sizes,omitempty"`
OriginalInfo struct {
Height int `json:"height,omitempty"`
Width int `json:"width,omitempty"`
FocusRects []struct {
X int `json:"x,omitempty"`
Y int `json:"y,omitempty"`
W int `json:"w,omitempty"`
H int `json:"h,omitempty"`
} `json:"focus_rects,omitempty"`
} `json:"original_info,omitempty"`
AllowDownloadStatus struct {
AllowDownload bool `json:"allow_download,omitempty"`
} `json:"allow_download_status,omitempty"`
MediaResults struct {
Result struct {
MediaKey string `json:"media_key,omitempty"`
} `json:"result,omitempty"`
} `json:"media_results,omitempty"`
} `json:"media,omitempty"`
Symbols []struct {
Indices []int `json:"indices,omitempty"`
Text string `json:"text,omitempty"`
} `json:"symbols,omitempty"`
Timestamps []any `json:"timestamps,omitempty"`
Urls []struct {
DisplayURL string `json:"display_url,omitempty"`
ExpandedURL string `json:"expanded_url,omitempty"`
URL string `json:"url,omitempty"`
Indices []int `json:"indices,omitempty"`
} `json:"urls,omitempty"`
UserMentions []struct {
IDStr string `json:"id_str,omitempty"`
Name string `json:"name,omitempty"`
ScreenName string `json:"screen_name,omitempty"`
Indices []int `json:"indices,omitempty"`
} `json:"user_mentions,omitempty"`
} `json:"entities,omitempty"`
ExtendedEntities struct {
Media []struct {
DisplayURL string `json:"display_url,omitempty"`
ExpandedURL string `json:"expanded_url,omitempty"`
IDStr string `json:"id_str,omitempty"`
Indices []int `json:"indices,omitempty"`
MediaKey string `json:"media_key,omitempty"`
MediaURLHTTPS string `json:"media_url_https,omitempty"`
Type string `json:"type,omitempty"`
URL string `json:"url,omitempty"`
ExtMediaAvailability struct {
Status string `json:"status,omitempty"`
} `json:"ext_media_availability,omitempty"`
Features struct {
Large struct {
Faces []any `json:"faces,omitempty"`
} `json:"large,omitempty"`
Medium struct {
Faces []any `json:"faces,omitempty"`
} `json:"medium,omitempty"`
Small struct {
Faces []any `json:"faces,omitempty"`
} `json:"small,omitempty"`
Orig struct {
Faces []any `json:"faces,omitempty"`
} `json:"orig,omitempty"`
} `json:"features,omitempty"`
Sizes struct {
Large struct {
H int `json:"h,omitempty"`
W int `json:"w,omitempty"`
Resize string `json:"resize,omitempty"`
} `json:"large,omitempty"`
Medium struct {
H int `json:"h,omitempty"`
W int `json:"w,omitempty"`
Resize string `json:"resize,omitempty"`
} `json:"medium,omitempty"`
Small struct {
H int `json:"h,omitempty"`
W int `json:"w,omitempty"`
Resize string `json:"resize,omitempty"`
} `json:"small,omitempty"`
Thumb struct {
H int `json:"h,omitempty"`
W int `json:"w,omitempty"`
Resize string `json:"resize,omitempty"`
} `json:"thumb,omitempty"`
} `json:"sizes,omitempty"`
OriginalInfo struct {
Height int `json:"height,omitempty"`
Width int `json:"width,omitempty"`
FocusRects []struct {
X int `json:"x,omitempty"`
Y int `json:"y,omitempty"`
W int `json:"w,omitempty"`
H int `json:"h,omitempty"`
} `json:"focus_rects,omitempty"`
} `json:"original_info,omitempty"`
AllowDownloadStatus struct {
AllowDownload bool `json:"allow_download,omitempty"`
} `json:"allow_download_status,omitempty"`
MediaResults struct {
Result struct {
MediaKey string `json:"media_key,omitempty"`
} `json:"result,omitempty"`
} `json:"media_results,omitempty"`
} `json:"media,omitempty"`
} `json:"extended_entities,omitempty"`
FavoriteCount int `json:"favorite_count,omitempty"`
Favorited bool `json:"favorited,omitempty"`
FullText string `json:"full_text,omitempty"`
IsQuoteStatus bool `json:"is_quote_status,omitempty"`
Lang string `json:"lang,omitempty"`
PossiblySensitive bool `json:"possibly_sensitive,omitempty"`
PossiblySensitiveEditable bool `json:"possibly_sensitive_editable,omitempty"`
QuoteCount int `json:"quote_count,omitempty"`
ReplyCount int `json:"reply_count,omitempty"`
RetweetCount int `json:"retweet_count,omitempty"`
Retweeted bool `json:"retweeted,omitempty"`
UserIDStr string `json:"user_id_str,omitempty"`
IDStr string `json:"id_str,omitempty"`
InReplyToScreenName string `json:"in_reply_to_screen_name,omitempty"`
InReplyToStatusIDStr string `json:"in_reply_to_status_id_str,omitempty"`
} `json:"legacy,omitempty"`
QuickPromoteEligibility struct {
Eligibility string `json:"eligibility,omitempty"`
} `json:"quick_promote_eligibility,omitempty"`
} `json:"result,omitempty"`
} `json:"tweet_results,omitempty"`
TweetDisplayType string `json:"tweetDisplayType,omitempty"`
HasModeratedReplies bool `json:"hasModeratedReplies,omitempty"`
} `json:"itemContent,omitempty"`
Items []struct {
EntryID string `json:"entryId,omitempty"`
Item struct {
ItemContent struct {
ItemType string `json:"itemType,omitempty"`
Typename string `json:"__typename,omitempty"`
TweetResults struct {
Result struct {
Typename string `json:"__typename,omitempty"`
RestID string `json:"rest_id,omitempty"`
HasBirdwatchNotes bool `json:"has_birdwatch_notes,omitempty"`
Core struct {
UserResults struct {
Result struct {
Typename string `json:"__typename,omitempty"`
ID string `json:"id,omitempty"`
RestID string `json:"rest_id,omitempty"`
AffiliatesHighlightedLabel struct {
} `json:"affiliates_highlighted_label,omitempty"`
HasGraduatedAccess bool `json:"has_graduated_access,omitempty"`
IsBlueVerified bool `json:"is_blue_verified,omitempty"`
ProfileImageShape string `json:"profile_image_shape,omitempty"`
Legacy struct {
FollowedBy bool `json:"followed_by,omitempty"`
Following bool `json:"following,omitempty"`
CanDm bool `json:"can_dm,omitempty"`
CanMediaTag bool `json:"can_media_tag,omitempty"`
CreatedAt string `json:"created_at,omitempty"`
DefaultProfile bool `json:"default_profile,omitempty"`
DefaultProfileImage bool `json:"default_profile_image,omitempty"`
Description string `json:"description,omitempty"`
Entities struct {
Description struct {
Urls []struct {
DisplayURL string `json:"display_url,omitempty"`
ExpandedURL string `json:"expanded_url,omitempty"`
URL string `json:"url,omitempty"`
Indices []int `json:"indices,omitempty"`
} `json:"urls,omitempty"`
} `json:"description,omitempty"`
URL struct {
Urls []struct {
DisplayURL string `json:"display_url,omitempty"`
ExpandedURL string `json:"expanded_url,omitempty"`
URL string `json:"url,omitempty"`
Indices []int `json:"indices,omitempty"`
} `json:"urls,omitempty"`
} `json:"url,omitempty"`
} `json:"entities,omitempty"`
FastFollowersCount int `json:"fast_followers_count,omitempty"`
FavouritesCount int `json:"favourites_count,omitempty"`
FollowersCount int `json:"followers_count,omitempty"`
FriendsCount int `json:"friends_count,omitempty"`
HasCustomTimelines bool `json:"has_custom_timelines,omitempty"`
IsTranslator bool `json:"is_translator,omitempty"`
ListedCount int `json:"listed_count,omitempty"`
Location string `json:"location,omitempty"`
MediaCount int `json:"media_count,omitempty"`
Name string `json:"name,omitempty"`
NormalFollowersCount int `json:"normal_followers_count,omitempty"`
PinnedTweetIdsStr []string `json:"pinned_tweet_ids_str,omitempty"`
PossiblySensitive bool `json:"possibly_sensitive,omitempty"`
ProfileBannerURL string `json:"profile_banner_url,omitempty"`
ProfileImageURLHTTPS string `json:"profile_image_url_https,omitempty"`
ProfileInterstitialType string `json:"profile_interstitial_type,omitempty"`
ScreenName string `json:"screen_name,omitempty"`
StatusesCount int `json:"statuses_count,omitempty"`
TranslatorType string `json:"translator_type,omitempty"`
URL string `json:"url,omitempty"`
Verified bool `json:"verified,omitempty"`
WantRetweets bool `json:"want_retweets,omitempty"`
WithheldInCountries []any `json:"withheld_in_countries,omitempty"`
} `json:"legacy,omitempty"`
Professional struct {
RestID string `json:"rest_id,omitempty"`
ProfessionalType string `json:"professional_type,omitempty"`
Category []struct {
ID int `json:"id,omitempty"`
Name string `json:"name,omitempty"`
IconName string `json:"icon_name,omitempty"`
} `json:"category,omitempty"`
} `json:"professional,omitempty"`
TipjarSettings struct {
IsEnabled bool `json:"is_enabled,omitempty"`
EthereumHandle string `json:"ethereum_handle,omitempty"`
} `json:"tipjar_settings,omitempty"`
SuperFollowEligible bool `json:"super_follow_eligible,omitempty"`
} `json:"result,omitempty"`
} `json:"user_results,omitempty"`
} `json:"core,omitempty"`
UnmentionData struct {
} `json:"unmention_data,omitempty"`
EditControl struct {
EditTweetIds []string `json:"edit_tweet_ids,omitempty"`
EditableUntilMsecs string `json:"editable_until_msecs,omitempty"`
IsEditEligible bool `json:"is_edit_eligible,omitempty"`
EditsRemaining string `json:"edits_remaining,omitempty"`
} `json:"edit_control,omitempty"`
IsTranslatable bool `json:"is_translatable,omitempty"`
Views struct {
Count string `json:"count,omitempty"`
State string `json:"state,omitempty"`
} `json:"views,omitempty"`
Source string `json:"source,omitempty"`
Legacy struct {
BookmarkCount int `json:"bookmark_count,omitempty"`
Bookmarked bool `json:"bookmarked,omitempty"`
CreatedAt string `json:"created_at,omitempty"`
ConversationIDStr string `json:"conversation_id_str,omitempty"`
DisplayTextRange []int `json:"display_text_range,omitempty"`
Entities struct {
Media []struct {
DisplayURL string `json:"display_url"`
ExpandedURL string `json:"expanded_url"`
IDStr string `json:"id_str"`
Indices []int `json:"indices"`
MediaKey string `json:"media_key"`
MediaURLHTTPS string `json:"media_url_https"`
Type string `json:"type"`
URL string `json:"url"`
ExtMediaAvailability struct {
Status string `json:"status"`
} `json:"ext_media_availability"`
Features struct {
Large struct {
Faces []struct {
X int `json:"x"`
Y int `json:"y"`
H int `json:"h"`
W int `json:"w"`
} `json:"faces"`
} `json:"large"`
Medium struct {
Faces []struct {
X int `json:"x"`
Y int `json:"y"`
H int `json:"h"`
W int `json:"w"`
} `json:"faces"`
} `json:"medium"`
Small struct {
Faces []struct {
X int `json:"x"`
Y int `json:"y"`
H int `json:"h"`
W int `json:"w"`
} `json:"faces"`
} `json:"small"`
Orig struct {
Faces []struct {
X int `json:"x"`
Y int `json:"y"`
H int `json:"h"`
W int `json:"w"`
} `json:"faces"`
} `json:"orig"`
} `json:"features"`
Sizes struct {
Large struct {
H int `json:"h"`
W int `json:"w"`
Resize string `json:"resize"`
} `json:"large"`
Medium struct {
H int `json:"h"`
W int `json:"w"`
Resize string `json:"resize"`
} `json:"medium"`
Small struct {
H int `json:"h"`
W int `json:"w"`
Resize string `json:"resize"`
} `json:"small"`
Thumb struct {
H int `json:"h"`
W int `json:"w"`
Resize string `json:"resize"`
} `json:"thumb"`
} `json:"sizes"`
OriginalInfo struct {
Height int `json:"height"`
Width int `json:"width"`
FocusRects []struct {
X int `json:"x"`
Y int `json:"y"`
W int `json:"w"`
H int `json:"h"`
} `json:"focus_rects"`
} `json:"original_info"`
AllowDownloadStatus struct {
AllowDownload bool `json:"allow_download"`
} `json:"allow_download_status"`
MediaResults struct {
Result struct {
MediaKey string `json:"media_key"`
} `json:"result"`
} `json:"media_results"`
} `json:"media"`
Hashtags []any `json:"hashtags,omitempty"`
Symbols []any `json:"symbols,omitempty"`
Timestamps []any `json:"timestamps,omitempty"`
Urls []struct {
DisplayURL string `json:"display_url,omitempty"`
ExpandedURL string `json:"expanded_url,omitempty"`
URL string `json:"url,omitempty"`
Indices []int `json:"indices,omitempty"`
} `json:"urls,omitempty"`
UserMentions []struct {
IDStr string `json:"id_str,omitempty"`
Name string `json:"name,omitempty"`
ScreenName string `json:"screen_name,omitempty"`
Indices []int `json:"indices,omitempty"`
} `json:"user_mentions,omitempty"`
} `json:"entities,omitempty"`
FavoriteCount int `json:"favorite_count,omitempty"`
Favorited bool `json:"favorited,omitempty"`
FullText string `json:"full_text,omitempty"`
InReplyToScreenName string `json:"in_reply_to_screen_name,omitempty"`
InReplyToStatusIDStr string `json:"in_reply_to_status_id_str,omitempty"`
InReplyToUserIDStr string `json:"in_reply_to_user_id_str,omitempty"`
IsQuoteStatus bool `json:"is_quote_status,omitempty"`
Lang string `json:"lang,omitempty"`
PossiblySensitive bool `json:"possibly_sensitive,omitempty"`
PossiblySensitiveEditable bool `json:"possibly_sensitive_editable,omitempty"`
QuoteCount int `json:"quote_count,omitempty"`
ReplyCount int `json:"reply_count,omitempty"`
RetweetCount int `json:"retweet_count,omitempty"`
Retweeted bool `json:"retweeted,omitempty"`
UserIDStr string `json:"user_id_str,omitempty"`
IDStr string `json:"id_str,omitempty"`
} `json:"legacy,omitempty"`
QuickPromoteEligibility struct {
Eligibility string `json:"eligibility,omitempty"`
} `json:"quick_promote_eligibility,omitempty"`
} `json:"result,omitempty"`
} `json:"tweet_results,omitempty"`
TweetDisplayType string `json:"tweetDisplayType,omitempty"`
} `json:"itemContent,omitempty"`
ClientEventInfo struct {
Details struct {
ConversationDetails struct {
ConversationSection string `json:"conversationSection,omitempty"`
} `json:"conversationDetails,omitempty"`
TimelinesDetails struct {
ControllerData string `json:"controllerData,omitempty"`
} `json:"timelinesDetails,omitempty"`
} `json:"details,omitempty"`
} `json:"clientEventInfo,omitempty"`
} `json:"item,omitempty"`
}
} `json:"content,omitempty"`
} `json:"entries,omitempty"`
Direction string `json:"direction,omitempty"`
} `json:"instructions,omitempty"`
Metadata struct {
ReaderModeConfig struct {
IsReaderModeAvailable bool `json:"is_reader_mode_available,omitempty"`
} `json:"reader_mode_config,omitempty"`
} `json:"metadata,omitempty"`
} `json:"threaded_conversation_with_injections_v2,omitempty"`
} `json:"data,omitempty"`
}
type TweetOptions ¶
type TweetOptions struct {
ReplyToTweetID string // ID of tweet to reply to, if this is a reply
}
TweetOptions contains optional parameters for creating a tweet