node package manager
Easy sharing. Manage teams and permissions with one click. Create a free org »

node-gitter

node-gitter Gitter chat

Node.js client for the Gitter API. For more info visit: Gitter Developers website.

If you have any questions, click on the badge to join the conversation.

Installation

$ npm install --save node-gitter

Basics

var Gitter = require('node-gitter');
 
var gitter = new Gitter(token);
 
gitter.currentUser()
.then(function(user) {
  console.log('You are logged in as:', user.username);
});

Authentication

It's mandatory to provide a valid Gitter OAuth token in order to use the client. You can obtain one from https://developer.gitter.im/apps.

Promises or Callbacks

The client implements both. The following code is equivalent:

Using promises:

gitter.rooms.join('gitterhq/sandbox')
.then(function(room) {
  console.log('Joined room: ', room.name);
})
.fail(function(err) {
  console.log('Not possible to join the room: ', err);
})

Using node-style callbacks:

gitter.rooms.join('gitterhq/sandbox', function(err, room) {
  if (err) {
    console.log('Not possible to join the room: ', err);
    return;
  }
 
  console.log('Joined room: ', room.name);
});
 

Users

Current user

gitter.currentUser()

Current user rooms, repos, and orgs

gitter.currentUser()
.then(function(user) {
  user.rooms()
  user.repos()
  user.orgs()
})

Find a user

gitter.users.find(userId)

Rooms

Join a room

gitter.rooms.join('gitterhq/sandbox')

Post a message to a room

gitter.rooms.join('gitterhq/sandbox')
.then(function(room) {
  room.send('Hello world!');
});
 

Listen for chatMessages, Events or Users in a room

gitter.rooms.find(roomId).then(function(room) {
 
  var events = room.streaming().chatMessages();
 
  // The 'snapshot' event is emitted once, with the last messages in the room
  events.on('snapshot', function(snapshot) {
    console.log(snapshot.length + ' messages in the snapshot');
  });
 
  // The 'chatMessages' event is emitted on each new message
  events.on('chatMessages', function(message) {
    console.log('A message was ' + message.operation);
    console.log('Text: ', message.model.text);
  });
});

Room users and messages

gitter.rooms.find(roomId)
.then(function(room) {
  room.users()
  room.chatMessages()
});

Leave a room

gitter.rooms.find(roomId)
.then(function(room) {
  gitter.currentUser()
    .then(function(currentUser) {
      return room.removeUser(currentUser.id);
    });
});

License

BSD