Git Product home page Git Product logo

vapor's Introduction


"Lightweight Steam client framework for node.js"


NPM version Build Status Dependency Status devDependency Status Gitter


About

Vapor is a lightweight Steam client framework for node.js which provides unified API for writing custom extensions. Vapor takes care of the basic stuff such as maintaining connection, logging in and exposes simple API which allows custom plugins to extend its behaviour.

Install

npm install vapor

Usage

var vapor = require('vapor');

var bot = vapor();
bot.init({username: 'myUsername', password: 'myPassword'});
bot.connect();

Client

Vapor provides a very simple automated client. This client uses node-steam to connect to Steam servers.

Vapor provides several key features:

  • handles log in process, including auth codes and sentry files
  • provides API for plugins
  • provides unified logging interface
  • provides a bunch of built-in plugins to make your life easier

Everything else needs to be programmed separately using plugin system.

Plugins

Plugins are self-contained code snippets which extend Vapor's behaviour.

Plugins have:

  • access to active Steam client instance and handlers
  • access to Steam's enums

They can:

  • emit custom events
  • listen to events
  • have their own configuration
  • store data
  • and more ...

Plugins are entirely event driven, there are no hard dependencies. Each plugin can emit an event and any plugin may register a callback for such event. This architecture allows your code to be modular and decoupled.

More information

Visit this repo's Wiki for more information regarding installation, configuration, API, plugins, etc.

Examples are provided in the examples folder.

You can also find auto-generated API docs in the docs folder.

LICENSE

MIT. See LICENSE.

vapor's People

Contributors

75lb avatar scholtzm avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

vapor's Issues

Unable to interact with Steam.SteamUser();

Hello scholtzm,
I'm trying to listen to event 'tradeOffers' of Steam.SteamUser(); like this but failed, the log wouldn't populate when I received new items. Please help

bot.use({
name: 'test-steam-user',
plugin: function(VaporAPI) {
VaporAPI.registerHandler({
emitter: 'steamUser',
event: 'tradeOffers'
}, function(count) {
log.info("New items in our inventory: " + count);
});
}
});

Automatically re-login when sessions expire, emit cookies event

I believe it could be a possibility to automatically re-login when the session expires.

I know with node-steamcommunity, an event is emitted when the session fails. I do not believe the same is found within node-steam.

I'm looking into including this feature locally, so if I find a good way to implement it I'll submit a PR.

Cookies expiring

Handling cookies is not trivial, they do become invalid from time to time.

Because of the way plugins work, it's important that each plugin is using the same set of cookies, otherwise they might invalidate each other.

Since node-steam v1.0.0 is just around the corner, I'll be waiting holding off any changes and I'll be implementing a proper cookie handling later on.

In the meanwhile, you can just call webLogOn method although this might to be counter-productive if you run multiple plugins that use cookies.

API references static Vapor instance.

All new instantiations of API reference the first instance of Vapor created. This clashes heavily when multiple bots are created.

For instance if I create two Vapor clients like so

plugin = {
  name: 'testplugin',
  plugin: function(VaporAPI) {
    var log = VaporAPI.getLogger()

    VaporAPI.registerHandler({
      emitter: 'client',
      event: 'logOnResponse'
    },
    function(logOnResponse) {
      log.info(VaporAPI.getClient().steamID) // These will output the same SteamID
      log.info(VaporAPI.getConfig().username) // Even though we are in the handler for two separate bots.
    })
  }
}


config = {/* unique config options */}
anotherConfig = {/* different config options */}

var bot = vapor();
bot.init(config);
bot.use(plugin);
bot.connect();

var anotherBot = vapor();
anotherBot.init(anotherConfig);
anotherBot.use(plugin);
anotherBot.connect();

When the logOnResponse is received, it will output twice (for each bot) but will show only the steamID for the first bot that was created (using var config).

Sorry if this is intended behaviour but it makes implementing self-aware plugins a bit tricky?

Also please excuse any JS syntax issues as I mainly use CoffeeScript.

Http 429 retrying..

I got this error today, the internal function keeps calling _webLogon so the bot was punished by Steam. This happened only when Steam is totally down. How can i stop this function to be called? Thanks for your help.

2018-04-13 07:06:44 - info: [x] Received new Steam server list.
2018-04-13 07:06:47 - warn: [x] Received status 503 in "webLogOn". Retrying...
2018-04-13 07:06:47 - warn: [x] Received status 503 in "webLogOn". Retrying...
2018-04-13 07:07:20 - warn: [x] Received status 429 in "webLogOn". Retrying...
2018-04-13 07:08:06 - warn: [x] Received status 429 in "webLogOn". Retrying...
2018-04-13 07:08:57 - warn: [x] Received status 429 in "webLogOn". Retrying...
2018-04-13 07:08:57 - warn: [x] Received status 403 in "webLogOn". Retrying...
2018-04-13 07:08:58 - warn: [x] Received status 403 in "webLogOn". Retrying...
2018-04-13 07:08:58 - warn: [x] Received status 403 in "webLogOn". Retrying...
2018-04-13 07:08:58 - warn: [x] Received status 403 in "webLogOn". Retrying...
2018-04-13 07:08:58 - warn: [x] Received status 403 in "webLogOn". Retrying...
2018-04-13 07:08:59 - warn: [x] Received status 403 in "webLogOn". Retrying...
2018-04-13 07:08:59 - warn: [x] Received status 403 in "webLogOn". Retrying...
2018-04-13 07:08:59 - warn: [x] Received status 403 in "webLogOn". Retrying...
2018-04-13 07:08:59 - warn: [x] Received status 403 in "webLogOn". Retrying...
2018-04-13 07:09:00 - warn: [x] Received status 403 in "webLogOn". Retrying...
2018-04-13 07:09:00 - warn: [x] Received status 403 in "webLogOn". Retrying...

steam-user with vapor ?

Hello scholtzm,
Is it possible to using steam-user with vapor ? Please give me a hint. Thanks

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.