Configuration

Twitter API v1.1 requires OAuth for all of its functionality, so you'll need a
registered Twitter application. If you've never registered a Twitter
application before, it's easy! Just sign-in using your Twitter account and then
fill out the short form at http://dev.twitter.com/apps/new. If you've
previously registered a Twitter application, it should be listed at
http://dev.twitter.com/apps. Once you've registered an application, make sure
to set your application's Access Level to "Read, Write and Access direct
messages", otherwise you'll receive an error that looks like this:

Now, you're ready to authorize a Twitter account with your application. To
proceed, type the following command at the prompt and follow the instructions:

t authorize

This command will direct you to a URL where you can sign-in to Twitter,
authorize the application, and then enter the returned PIN back into the
terminal. If you type the PIN correctly, you should now be authorized to use
t as that user. To authorize multiple accounts, simply repeat the last step,
signing into Twitter as a different user.

You can see a list of all the accounts you've authorized by typing the command:

Note: One of your authorized accounts (specifically, the last one
authorized) will be set as active. To change the active account, use the set
subcommand, passing either just a username, if it's unambiguous, or a username
and consumer key pair, like this:

t set active sferik UDfNTpOz5ZDG4a6w7dIWj

Account information is stored in a YAML-formatted file located at ~/.trc.

Note: Anyone with access to this file can impersonate you on Twitter, so
it's important to keep it secure, just as you would treat your SSH private key.
For this reason, the file is hidden and has the permission bits set to 0600.

Usage Examples

Typing t help will list all the available commands. You can type t help
TASK to get help for a specific command.

t help

Update your status

t update "I'm tweeting from the command line. Isn't that special?"

Note: If your tweet includes special characters (e.g. !), make sure to
wrap it in single quotes instead of double quotes, so those characters are not
interpreted by your shell.
If you use single quotes, your Tweet obviously can't contain any
apostrophes unless you prefix them with a backslash \:

t update 'I\'m tweeting from the command line. Isn\'t that special?'

Retrieve detailed information about a Twitter user

t whois @sferik

Retrieve stats for multiple users

t users -l @sferik @gem

Follow users

t follow @sferik @gem

Check whether one user follows another

t does_follow @ev @sferik

Note: If the first user does not follow the second, t will exit with a
non-zero exit code. This allows you to execute commands conditionally. For
example, here's how to send a user a direct message only if they already follow you:

Using T for Backup

If you discuss t in a blog post or podcast, let me know and I'll
link it here.

Relationship Terminology

There is some ambiguity in the terminology used to describe relationships on
Twitter. For example, some people use the term "friends" to mean everyone you
follow. In t, "friends" refers to just the subset of people who follow you
back (i.e., friendship is bidirectional). Here is the full table of terminology
used by t:

Screenshots

Shell completion

If you're running Zsh or Bash, you can source one of the bundled completion
files to get shell completion for t commands, subcommands, and
flags.

Don't run Zsh or Bash? Why not contribute completion support for your
favorite shell?

History

The twitter gem previously contained a command-line interface, up until
version 0.5.0, when it was removed. This project is offered as a successor
to that effort, however it is a clean room implementation that contains none of
the original code.

Supported Ruby Versions

This library aims to support and is tested against the following Ruby
implementations:

Ruby 1.9.2

Ruby 1.9.3

Ruby 2.0.0

Ruby 2.1.0

If something doesn't work on one of these Ruby versions, it's a bug.

This library may inadvertently work (or seem to work) on other Ruby
implementations, however support will only be provided for the versions listed
above.

If you would like this library to support another Ruby version, you may
volunteer to be a maintainer. Being a maintainer entails making sure all tests
run and pass on that implementation. When something breaks on your
implementation, you will be responsible for providing patches in a timely
fashion. If critical issues for a particular implementation exist at the time
of a major release, support for that Ruby version may be dropped.

Troubleshooting

If you are running t on a remote computer you can use the flag --display-uri during authorize process to display the url instead of opening the web browser.