snoostorm
TypeScript icon, indicating that this package has built-in type declarations

1.5.2 • Public • Published

SnooStorm

Event-based wrapper around snoowrap

Usage

Basic Usage:

import { InboxStream, CommentStream, SubmissionStream } from "snoostorm";
import Snoowrap from "snoowrap";
 
const creds = require("./credentials.json");
 
const client = new Snoowrap(creds);
 
// Options object is a Snoowrap Listing object, but with subreddit and pollTime options
const comments = new CommentStream(client, {
  subreddit: "AskReddit",
  limit: 10,
  pollTime: 2000,
});
comments.on("item", console.log);
 
const submissions = new SubmissionStream(client, {
  subreddit: "AskReddit",
  limit: 10,
  pollTime: 2000,
});
submissions.on("item", console.log);
 
const inbox = new InboxStream(client);
inbox.on("item", console.log);
 
inbox.end();
inbox.on("end", () => console.log("And now my watch has ended"));

Custom Polls

Out of the box, snoostorm supports the following objects:

  • Comments
  • Submissions
  • Inbox
  • Modmail

If you would like to poll another object in snoowrap, you can implement your own Poll easily. For example, here is an implementation that will poll for new friends:

 
import { Poll } from "snoostorm"
 
export interface FriendStreamOptions {
  pollTime?: number;
}
 
export class FriendStream extends Poll<Snoowrap.RedditUser> {
  constructor(
    client: Snoowrap,
    options: FriendStreamOptions = { pollTime: 2000 }
  ) {
    super({
      frequency: options.pollTime,
      get: () => client.getFriends(),
      identifier: "name",
    });
  }
}
 
const friends = new FriendStream(client);
 
friends.on("item", (item) => {
  console.log("New Friend!", item.name);
});
 
 

Package Sidebar

Install

npm i snoostorm

Weekly Downloads

38

Version

1.5.2

License

MIT

Unpacked Size

393 kB

Total Files

22

Last publish

Collaborators

  • mayormonty