ircanywhere / irc-factory

A rebuilt irc-factory from simple-irc-socket and irc-message. Get support at #ircanywhere on freenode
https://ircanywhere.com
MIT License
60 stars 14 forks source link

How do you emit raw command via rpc to server? #30

Closed jrasanen closed 9 years ago

jrasanen commented 9 years ago

How to send "WHO" command to server using RPC?

var factory = require('../lib/api'), // this should be 'irc-factory' in your project
    axon = factory.axon,
    api = new factory.Api();

var options = {
        events: 31920,
        rpc: 31930,
        automaticSetup: true,
        fork: true
    },
    interfaces = api.connect(options),
    events = interfaces.events,
    rpc = interfaces.rpc;

events.on('message', function(msg) {
    if (msg.event == 'synchronize') {
        if (msg.keys.length == 0) {
            setTimeout(createClient, 1500);
            // no client lets create one in 1.5 seconds
        }
        return;
    }

    if (msg.event[0] == 'test' && msg.event[1] == 'registered') {
        rpc.emit('call', 'test', 'join', ['#ircanywhere-test']);
        rpc.emit('call', 'test', 'privmsg', ['#ircanywhere-test', 'hey this is a test']);
        rpc.emit('call', 'test', 'who', ['#ircanywhere-test']); // <-- This command is never received by the server, can't figure out why.
    }

    console.log(msg);
});
// handle incoming events, we don't use an event emitter because
// of the fact we want queueing.

function createClient() {
    rpc.emit('createClient', 'test', {
        nick : 'simpleircbot',
        user : 'testuser',
        server : 'localhost',
        realname: 'realbot',
        port: 6667,
        secure: false,
        retryCount: 2,
        retryWait: 3000
    });
};
// create a client
rickihastings commented 9 years ago

rpc.emit('call', 'test', 'raw', ['WHO', '#ircanywhere-test']);