mastobot

0.1.0-2 • Public • Published

MastoBot

NodeJS Mastodon client library with an eye to making bot development fun & easy.

This is an early-stage project, but there is documentation!

You can follow development, submit issues, and contribute at GitLab

Installation

npm i mastobot

Basic Usage

const { MastoBot } = require('mastobot');

const api_url    = 'https://botsin.space/';
const api_token  = 'your API Token goes here';

const mb = new MastoBot(api_url, {
  api_token,
});

// The MastoBotHttp class offers helpers for HTTP requests.
// Wrappers for relevant HTTP methods are complete and fully usable:
// get, post, put, patch, delete
// They all expect the same parameters:
//   url      {string}    Path to the API endpoint, including the v1/ or v2/ prefix
//   data     {Object}    Properties will first populate :params in the path, remaining
//                        properties will be sent in the query string (GET) or request body
//   options  {Object}    Additional options, like headers. Rarely used.
mb.get('v1/accounts/verify_credentials')
.then(response => {
  console.log('Credentials are good!', response.data.acct);
})
.catch(apiError => {
  console.error('Credentials are bad:',
    apiError.statusCode,
    apiError.statusText,
    apiError.data.error);
});

mb.patch('v1/accounts/update_credentials', {
  'source[language]': 'en',
  'bot': true,
}).then(response => {
  console.log('Updated credentials successfully!', response.data);
}).catch(apiError => {
  console.error('Patch failed:',
    apiError.statusCode,
    apiError.statusText,
    apiError.data);
});


// The MastoBotAPI class builds on MastoBotHttp and offers fancier wrappers
// for API endpoints. At present, the most commonly used endpoints are
// covered. More will come.
mb.postStatus('Wow, MastoBot is really fun and easy!', {
  visibility: 'public',
})
.then(response => {
  console.log('Posted status successfully!', response.data.url);
})
.catch(apiError => {
  console.error('Post failed:',
    apiError.statusCode,
    apiError.statusText,
    apiError.data);
});


// NYI: The full MastoBot class presents all of the above, as well as
// a "smart" callback API for certain API calls:
mb.processNotifications({
  onMention: notification => mentionCallback(notification),
  onFollow: notification => followCallback(notification),
  onFavourite: notification => favouriteCallback(notification),
})
.then(response => {
  // response is an array of callback return values/Promises
  console.log('Processed notifications successfully!', response.length);
})
.catch(apiError => {
  console.error('Processing notification(s) failed:',
    apiError,
});

Readme

Keywords

Package Sidebar

Install

npm i mastobot

Weekly Downloads

0

Version

0.1.0-2

License

ISC

Unpacked Size

42 kB

Total Files

10

Last publish

Collaborators

  • eroosenmaallen