/*
IRC-Bot "Kvasir"
Copyright (C) 2016 Fenris Wolf (fenris@folksprak.org)
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
var _irc = require("./node_modules/irc");
/**
* @author fenris
*/
class klaso_kliento_irc extends klaso_kliento
{
/**
* @author fenris
*/
protected irc : /*_irc.Client*/any;
/**
* @author fenris
*/
public constructor(agordoj : Object, prokrasto : int)
{
super(prokrasto);
this.irc = new _irc.Client(agordoj["servilo"], agordoj["kromnomo"], {"channels": agordoj["kanaloj"], "userName": agordoj["uzantnomo"], "password": agordoj["pasvorto"], "autoConnect": false});
}
/**
* @author fenris
*/
public konekti(parametroj : Object, fino : ()=>void) : void
{
let that : klaso_kliento_irc = this;
this.irc["addListener"]
(
"message",
function (sendinto : string, fonto : string, enhavo : string) : void
{
that.enigi(new klaso_evento_eniga_mesagxo(fonto, sendinto, enhavo));
}
);
this.irc.connect
(
3,
function () : void
{
fino();
}
);
}
/**
* @author fenris
*/
protected eligi_rekte(eligo : klaso_evento_eliga) : void
{
if (eligo instanceof klaso_evento_eliga_mesagxo)
{
let eligo_mesagxo : klaso_evento_eliga_mesagxo = (eligo);
try
{
let cxeno : string = "";
{
let alparolato : string = eligo_mesagxo.alparolato_legi();
if (alparolato != null) cxeno += alparolato + ": ";
}
{
let enhavo : string = eligo_mesagxo.enhavo_legi();
if (enhavo != null) cxeno += enhavo;
}
this.irc["say"](eligo_mesagxo.celo_legi(), cxeno);
}
catch (escepto)
{
console.warn(escepto);
}
}
else
{
}
}
/**
* @author fenris
*/
protected anigxi_rekte(kanalo : string, modo : boolean = true) : void
{
if (modo)
{
this.irc["join"](kanalo);
}
else
{
this.irc["part"](kanalo, "vi kan maka en ander verld");
}
}
}