Class TweetService

Handles interacting with resources related to tweets.

Hierarchy (View Summary)

Constructors

Properties

config: RettiwtConfig

The config object.

Methods

  • Get the details of one or more tweets.

    Type Parameters

    • T extends string | string[]

    Parameters

    • id: T

      The ID/IDs of the target tweet/tweets.

    Returns Promise<T extends string ? undefined | Tweet : Tweet[]>

    The details of the tweet with the given ID.

    If more than one ID is provided, returns a list.

    If no tweet/tweets matches the given ID/IDs, returns undefined/[].

    import { Rettiwt } from 'rettiwt-api';

    // Creating a new Rettiwt instance using the given 'API_KEY'
    const rettiwt = new Rettiwt({ apiKey: API_KEY });

    // Fetching the details of the tweet with the id '1234567890'
    rettiwt.tweet.details('1234567890')
    .then(res => {
    console.log(res); # 'res' is a single tweet
    })
    .catch(err => {
    console.log(err);
    });
    import { Rettiwt } from 'rettiwt-api';

    // Creating a new Rettiwt instance using the given 'API_KEY'
    const rettiwt = new Rettiwt({ apiKey: API_KEY });

    // Fetching the details of the tweets with IDs '123', '456', '789'
    rettiwt.tweet.details(['123', '456', '789'])
    .then(res => {
    console.log(res); # 'res' is an array of tweets
    })
    .catch(err => {
    console.log(err);
    });
  • Like a tweet.

    Parameters

    • id: string

      The ID of the tweet to be liked.

    Returns Promise<boolean>

    Whether liking was successful or not.

    import { Rettiwt } from 'rettiwt-api';

    // Creating a new Rettiwt instance using the given 'API_KEY'
    const rettiwt = new Rettiwt({ apiKey: API_KEY });

    // Liking the Tweet with id '1234567890'
    rettiwt.tweet.like('1234567890')
    .then(res => {
    console.log(res);
    })
    .catch(err => {
    console.log(err);
    });
  • Get the list of users who liked a tweet. Only works for your own tweets.

    Parameters

    • id: string

      The ID of the target tweet.

    • Optionalcount: number

      The number of likers to fetch, must be <= 100.

    • Optionalcursor: string

      The cursor to the batch of likers to fetch.

    Returns Promise<CursoredData<User>>

    The list of users who liked the given tweet.

    import { Rettiwt } from 'rettiwt-api';

    // Creating a new Rettiwt instance using the given 'API_KEY'
    const rettiwt = new Rettiwt({ apiKey: API_KEY });

    // Fetching the most recent 100 likers of the Tweet with id '1234567890'
    rettiwt.tweet.likers('1234567890')
    .then(res => {
    console.log(res);
    })
    .catch(err => {
    console.log(err);
    });
  • Post a tweet.

    Parameters

    • options: INewTweet

      The options describing the tweet to be posted. Check TweetArgs for available options.

    Returns Promise<undefined | string>

    The ID of the posted tweet.

    import { Rettiwt } from 'rettiwt-api';

    // Creating a new Rettiwt instance using the given 'API_KEY'
    const rettiwt = new Rettiwt({ apiKey: API_KEY });

    // Posting a tweet to twitter
    rettiwt.tweet.post({ text: 'Hello World!' })
    .then(res => {
    console.log(res);
    })
    .catch(err => {
    console.log(err);
    });
    import { Rettiwt } from 'rettiwt-api';

    // Creating a new Rettiwt instance using the given 'API_KEY'
    const rettiwt = new Rettiwt({ apiKey: API_KEY });

    // Posting a tweet, containing an image with ID '1234567890', to twitter
    rettiwt.tweet.post({ text: 'What a nice view!', media: [{ id: '1234567890' }] })
    .then(res => {
    console.log(res);
    })
    .catch(err => {
    console.log(err);
    });
    import { Rettiwt } from 'rettiwt-api';

    // Creating a new Rettiwt instance using the given 'API_KEY'
    const rettiwt = new Rettiwt({ apiKey: API_KEY });

    // Posting a simple text reply, to a tweet with id "1234567890"
    rettiwt.tweet.post({ text: 'Hello!', replyTo: "1234567890" })
    .then(res => {
    console.log(res);
    })
    .catch(err => {
    console.log(err);
    });
    import { Rettiwt } from 'rettiwt-api';

    // Creating a new Rettiwt instance using the given 'API_KEY'
    const rettiwt = new Rettiwt({ apiKey: API_KEY });

    // Posting a simple text tweet, quoting a tweet with id "1234567890"
    rettiwt.tweet.post({ text: 'Hello!', quote: "1234567890" })
    .then(res => {
    console.log(res);
    })
    .catch(err => {
    console.log(err);
    });
  • Get the list of replies to a tweet.

    Parameters

    • id: string

      The ID of the target tweet.

    • Optionalcursor: string

      The cursor to the batch of replies to fetch.

    • sortBy: ETweetRepliesSortType = ETweetRepliesSortType.LATEST

      The sorting order of the replies to fetch. Default is ETweetRepliesSortType.RECENT.

    Returns Promise<CursoredData<Tweet>>

    The list of replies to the given tweet.

    import { Rettiwt } from 'rettiwt-api';

    // Creating a new Rettiwt instance using the given 'API_KEY'
    const rettiwt = new Rettiwt({ apiKey: API_KEY });

    // Fetching the first 100 replies to the Tweet with id '1234567890'
    rettiwt.tweet.replies('1234567890')
    .then(res => {
    console.log(res);
    })
    .catch(err => {
    console.log(err);
    });

    If the given tweet is the start of/part of a thread, the first batch always contains all the tweets in the thread.

  • Makes an HTTP request according to the given parameters.

    Type Parameters

    • T = unknown

      The type of the returned response data.

    Parameters

    Returns Promise<T>

    The raw data response received.

    import { FetcherService, EResourceType } from 'rettiwt-api';

    // Creating a new FetcherService instance using the given 'API_KEY'
    const fetcher = new FetcherService({ apiKey: API_KEY });

    // Fetching the details of the User with username 'user1'
    fetcher.request(EResourceType.USER_DETAILS_BY_USERNAME, { id: 'user1' })
    .then(res => {
    console.log(res);
    })
    .catch(err => {
    console.log(err);
    });
  • Retweet a tweet.

    Parameters

    • id: string

      The ID of the target tweet.

    Returns Promise<boolean>

    Whether retweeting was successful or not.

    import { Rettiwt } from 'rettiwt-api';

    // Creating a new Rettiwt instance using the given 'API_KEY'
    const rettiwt = new Rettiwt({ apiKey: API_KEY });

    // Retweeting the Tweet with id '1234567890'
    rettiwt.tweet.retweet('1234567890')
    .then(res => {
    console.log(res);
    })
    .catch(err => {
    console.log(err);
    });
  • Get the list of users who retweeted a tweet.

    Parameters

    • id: string

      The ID of the target tweet.

    • Optionalcount: number

      The number of retweeters to fetch, must be <= 100.

    • Optionalcursor: string

      The cursor to the batch of retweeters to fetch.

    Returns Promise<CursoredData<User>>

    The list of users who retweeted the given tweet.

    import { Rettiwt } from 'rettiwt-api';

    // Creating a new Rettiwt instance using the given 'API_KEY'
    const rettiwt = new Rettiwt({ apiKey: API_KEY });

    // Fetching the most recent 100 retweeters of the Tweet with id '1234567890'
    rettiwt.tweet.retweeters('1234567890')
    .then(res => {
    console.log(res);
    })
    .catch(err => {
    console.log(err);
    });
  • Schedule a tweet.

    Parameters

    • options: INewTweet

      The options describing the tweet to be posted. Check TweetArgs for available options.

    Returns Promise<undefined | string>

    The ID of the schedule.

    import { Rettiwt } from 'rettiwt-api';

    // Creating a new Rettiwt instance using the given 'API_KEY'
    const rettiwt = new Rettiwt({ apiKey: API_KEY });

    // Scheduling a tweet to posted at 19th of August, 2024, at 11:59:00 AM, in local time
    rettiwt.tweet.schedule({ text: 'Hello World!', scheduleFor: new Date('2024-08-19 23:59:00') })
    .then(res => {
    console.log(res);
    })
    .catch(err => {
    console.log(err);
    });

    Scheduling a tweet is similar to posting, except that an extra parameter called scheduleFor is used.

  • Search for tweets using a filter.

    Parameters

    • filter: ITweetFilter

      The filter to be used for searching the tweets.

    • Optionalcount: number

      The number of tweets to fetch, must be <= 20.

    • Optionalcursor: string

      The cursor to the batch of tweets to fetch.

    Returns Promise<CursoredData<Tweet>>

    The list of tweets that match the given filter.

    import { Rettiwt } from 'rettiwt-api';

    // Creating a new Rettiwt instance using the given 'API_KEY'
    const rettiwt = new Rettiwt({ apiKey: API_KEY });

    // Fetching the most recent 5 tweets from user 'user1'
    rettiwt.tweet.search({ fromUsers: ['user1'] }, 5)
    .then(res => {
    console.log(res);
    })
    .catch(err => {
    console.log(err);
    });

    For details about available filters, refer to TweetFilter

  • Stream tweets in pseudo real-time using a filter.

    Parameters

    • filter: ITweetFilter

      The filter to be used for searching the tweets.

    • pollingInterval: number = 60000

      The interval in milliseconds to poll for new tweets. Default interval is 60000 ms.

    Returns AsyncGenerator<Tweet>

    An async generator that yields matching tweets as they are found.

    import { Rettiwt } from 'rettiwt-api';

    // Creating a new Rettiwt instance using the given 'API_KEY'
    const rettiwt = new Rettiwt({ apiKey: API_KEY });

    // Creating a function that streams all new tweets from the user 'user1'
    async function streamTweets() {
    try {
    // Awaiting for the tweets returned by the AsyncGenerator returned by the method
    for await (const tweet of rettiwt.tweet.stream({ fromUsers: ['user1'] }, 5000)) {
    console.log(tweet.fullText);
    }
    }
    catch (err) {
    console.log(err);
    }
    }

    // Calling the function
    streamTweets();
  • Unlike a tweet.

    Parameters

    • id: string

      The ID of the target tweet.

    Returns Promise<boolean>

    Whether unliking was successful or not.

    import { Rettiwt } from 'rettiwt-api';

    // Creating a new Rettiwt instance using the given 'API_KEY'
    const rettiwt = new Rettiwt({ apiKey: API_KEY });

    // Unliking the Tweet with id '1234567890'
    rettiwt.tweet.unlike('1234567890')
    .then(res => {
    console.log(res);
    })
    .catch(err => {
    console.log(err);
    });
  • Unpost a tweet.

    Parameters

    • id: string

      The ID of the target tweet.

    Returns Promise<boolean>

    Whether unposting was successful or not.

    import { Rettiwt } from 'rettiwt-api';

    // Creating a new Rettiwt instance using the given 'API_KEY'
    const rettiwt = new Rettiwt({ apiKey: API_KEY });

    // Unposting the Tweet with id '1234567890'
    rettiwt.tweet.unpost('1234567890')
    .then(res => {
    console.log(res);
    })
    .catch(err => {
    console.log(err);
    });
  • Unretweet a tweet.

    Parameters

    • id: string

      The ID of the target tweet.

    Returns Promise<boolean>

    Whether unretweeting was successful or not.

    import { Rettiwt } from 'rettiwt-api';

    // Creating a new Rettiwt instance using the given 'API_KEY'
    const rettiwt = new Rettiwt({ apiKey: API_KEY });

    // Unretweeting the Tweet with id '1234567890'
    rettiwt.tweet.unretweet('1234567890')
    .then(res => {
    console.log(res);
    })
    .catch(err => {
    console.log(err);
    });
  • Unschedule a tweet.

    Parameters

    • id: string

      The ID of the scheduled tweet.

    Returns Promise<boolean>

    Whether unscheduling was successful or not.

    import { Rettiwt } from 'rettiwt-api';

    // Creating a new Rettiwt instance using the given 'API_KEY'
    const rettiwt = new Rettiwt({ apiKey: API_KEY });

    // Unscheduling the Tweet with id '1234567890'
    rettiwt.tweet.unschedule('1234567890')
    .then(res => {
    console.log(res);
    })
    .catch(err => {
    console.log(err);
    });
  • Upload a media file to Twitter.

    Parameters

    • media: string | ArrayBuffer

      The path or ArrayBuffer to the media file to upload.

    Returns Promise<string>

    The ID of the uploaded media.

    import { Rettiwt } from 'rettiwt-api';

    // Creating a new Rettiwt instance using the given 'API_KEY'
    const rettiwt = new Rettiwt({ apiKey: API_KEY });

    // Uploading a file called mountains.jpg
    rettiwt.tweet.upload('mountains.jpg')
    .then(res => {
    console.log(res);
    })
    .catch(err => {
    console.log(err);
    });
    • The uploaded media exists for 24 hrs within which it can be included in a tweet to be posted. If not posted in a tweet within this period, the uploaded media is removed.
    • Instead of a path to the media, an ArrayBuffer containing the media can also be uploaded.