RetroZilla/extensions/irc/js/tests/mingus.js
2015-10-20 23:03:22 -04:00

397 lines
11 KiB
JavaScript

/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is JSIRC Library.
*
* The Initial Developer of the Original Code is
* New Dimensions Consulting, Inc.
* Portions created by the Initial Developer are Copyright (C) 1999
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Robert Ginda, rginda@ndcico.com, original author
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
bot.personality.guessPrefixes = ["I guess ", "maybe ", "probably ", "I think ",
"could be that ", "", ""];
bot.personality.guessActionPrefixes = ["guesses ", "postulates ", "figures ",
"tries ","pretends ", "", ""];
function initMingus ()
{
addOwner (/rginda.*!.*@adsl-63-198-63-20\.dsl\.snfc21\.pacbell\.net$/i);
addOwner (/rginda.*!.*@.*netscape\.com$/i);
addOwner (/ssieb.*!.*@.*pyr\.ec\.gc\.ca$/i);
addOwner (/ssieb.*!.*@.*wave\.home\.com$/i);
addOwner (/garyc.*!.*@.*ihug\.co\.nz$/i);
bot.primNet = bot.networks["moznet"];
load ("DP.js");
CIRCNetwork.prototype.INITIAL_NICK = "mingus";
CIRCNetwork.prototype.INITIAL_NAME = "mingus";
CIRCNetwork.prototype.INITIAL_DESC = "real men do it with prototypes";
CIRCNetwork.prototype.INITIAL_CHANNEL = "#chatzilla";
CIRCChannel.prototype.onJoin =
function my_chan_join (e) {
if (userIsOwner(e.user))
e.user.setOp(true);
}
bot.eventPump.addHook (psn_isAddressedToMe, psn_onAddressedMsg,
"addressed-to-me-hook");
bot.personality.dp = new CDPressMachine();
/*
bot.personality.dp.addPhrase ("I am " +
CIRCNetwork.prototype.INITIAL_NICK +
", hear me roar.");
*/
bot.personality.dp.addPhrase ("\01ACTION is back.");
/* dp hooks start */
var f = function (e)
{
var catchall = (e.hooks[e.hooks.length - 1].name == "catchall");
var answer = "";
if (catchall)
{
var ary = e.statement.split(" ");
for (var i = 0; i < 3; i++)
{
answer =
bot.personality.dp.getPhraseContaining(getRandomElement(ary));
if (answer)
break;
}
}
if (!answer)
answer = bot.personality.dp.getPhrase();
if (answer[answer.length - 1] == "\01")
{
if (answer[0] != "\01")
if (catchall)
answer = "\01ACTION " +
getRandomElement(bot.personality.guessActionPrefes) +
answer;
else
answer = "\01ACTION " + answer;
}
else
{
if (!answer)
answer = "I don't know anything";
if (catchall)
answer = getRandomElement(bot.personality.guessPrefixes) +
answer;
}
if (answer[0] != "\01")
e.replyTo.say (e.user.properNick + ", " + answer);
else
e.replyTo.say (answer);
return false;
}
/* first hook added is last checked */
bot.personality.addHook (/.*/i, f, "catchall");
bot.personality.addHook (/speak$/i, f, "speak");
bot.personality.addHook (/talk$/i, f, "hook");
bot.personality.addHook (/say something$/i, f, "say-something");
f = function (e)
{
var subject = e.matchresult[1].match(CDPressMachine.WORD_PATTERN);
if (subject == null)
subject = "";
else
subject = subject.toString();
var answer =
bot.personality.dp.getPhraseContaining (escape(subject.toLowerCase()));
if (!answer)
answer = "I don't know anything about " + e.matchresult[1];
if (answer.charCodeAt (0) != 1)
e.replyTo.say (e.user.properNick + ", " + answer);
else
e.replyTo.say (answer);
return false;
}
bot.personality.addHook (/speak about (\S+)/i, f);
bot.personality.addHook (/talk about (\S+)/i, f);
bot.personality.addHook (/say something about (\S+)/i, f);
f = function (e)
{
var answer = bot.personality.dp.getPhraseContaining ("%01ACTION");
if (!answer)
answer = "I can't do a thing.";
e.replyTo.say (answer);
return false;
}
bot.personality.addHook (/do something/i, f);
f = function (e)
{
var ary = bot.personality.dp.getPhraseWeights (e.matchresult[1]);
var c = bot.personality.dp.getPhraseWeight (e.matchresult[1]);
e.replyTo.say (e.user.properNick + ", that phrase weighs " + c + ": " + ary);
return false;
}
bot.personality.addHook (/weigh (.+)/i, f);
f = function (e)
{
var word = e.matchresult[1].toLowerCase();
var pivot = bot.personality.dp.getPivot(word);
var result = "";
if (pivot)
{
var list, w, l;
list = pivot.previousList;
w = list.getListWeights();
l = list.getListLinks();
if (w.length != l.length)
e.replyTo.say ("warning: previous list mismatched.");
for (var i = 0; i < (Math.max(w.length, l.length)); i++)
result += ( "`" + l[i] + "'" + w[i] + " " );
if (result.length > 250)
result += "\n";
result += ( "[" + word + "]" );
if (result.length > 250)
result += "\n";
list = pivot.nextList;
w = list.getListWeights();
l = list.getListLinks();
if (w.length != l.length)
e.replyTo.say ("warning: next list mismatched.");
for (var i = 0; i < (Math.max(w.length, l.length)); i++)
result += ( " `" + l[i] + "'" + w[i] );
}
else
result = "- [" + word + "] -";
e.replyTo.say (result);
return false;
}
bot.personality.addHook(/pivot (.*)/i, f);
/* dp hooks end */
f = function (e)
{
print ("I can hear you.");
e.replyTo.say (e.user.properNick + ", yes, I am.");
return false;
}
bot.personality.addHook (/are you alive(\?)?/i, f);
f = function (e)
{
if (!userIsOwner(e.user))
{
e.replyTo.say ("nope.");
return;
}
chan = e.matchresult[1];
if (chan.charAt (0) != "#")
chan = "#" + chan;
e.server.sendData ("join " + chan + "\n");
return false;
}
bot.personality.addHook (/join\s+(\S+)\.*/i, f);
f = function (e)
{
if (!userIsOwner (e.user))
{
e.channel.say ("nope.");
return false;
}
chan = e.matchresult[1];
if (chan.charAt (0) != "#")
chan = "#" + chan;
e.server.sendData ("part " + chan + "\n");
return false;
}
bot.personality.addHook (/part\s+(\S+)\.*/i, f);
bot.personality.addHook (/leave\s+(\S+)\.*/i, f);
f = function (e)
{
e.replyTo.say ("mmmmmmm. Thanks " + e.user.properNick + ".");
return false;
}
bot.personality.addHook (/botsnack/i, f);
f = function (e)
{
e.replyTo.act ("blushes");
return false;
}
bot.personality.addHook (/you rock/i, f);
f = function (e)
{
if (e.matchresult[1] == "me")
e.replyTo.act ("hugs " + e.user.properNick);
else
e.replyTo.act ("hugs " + e.matchresult[1]);
return false;
}
bot.personality.addHook (/hug (.*)/i, f);
f = function (e)
{
if (e.matchresult[1] == "me")
e.replyTo.say (e.user.properNick + ", :*");
else
e.replyTo.say (e.matchresult[1] + ", :*");
return false;
}
bot.personality.addHook (/kiss (\w+)/, f);
f = function (e)
{
e.replyTo.say (e.user.properNick + ", I'll try :(");
return false;
}
bot.personality.addHook
(/(shut up)|(shaddup)|(be quiet)|(keep quiet)|(sssh)|(stfu)/i, f);
f = function (e)
{
if (!userIsOwner (e.user))
e.replyTo.say ("No.");
else
{
for (var n in bot.networks)
bot.networks[n].quit("Goodnight.");
}
return false;
}
bot.personality.addHook (/(go to bed)|(go to sleep)|(sleep)/i, f);
f = function (e)
{
e.replyTo.say (":)");
return false;
}
bot.personality.addHook
(/(smile)|(rotfl)|(lmao)|(rotflmao)|(look happy)|(you(.)?re smart)/i, f);
/* (/(smile)|(rotfl)|(lmao)|(rotflmao)|(you(.)?re funny)|(look happy)|(you(.)?re smart)/i, f); */
f = function (e)
{
e.replyTo.say (":(");
return false;
}
bot.personality.addHook (/(frown)|(don(.)?t like you)|(look sad)/i, f);
f = function (e)
{
e.replyTo.say (">:|");
return false;
}
bot.personality.addHook (/(look mad)|(beat you up)/i, f);
f = function (e)
{
e.replyTo.say (":/");
return false;
}
bot.personality.addHook (/(look confused)|(i like windows)/i, f);
}