!7 cmodule Monkey > DynDiscordHopper { switchable S myName = "Monkey"; transient PKIKeyPair keys; start { keys = keyPairForProgram(); dm_vmBus_onMessage_q('discordGuildLeave, voidfunc(Map map) { ret unless map.get('module) == module(); O user = rcall getUser(map.get('event)); S name = cast rcall getName(user); postInChannel(preferredChannelID, nempty(name) ? name + " just left us" : "I sense a leaver"); }); } @Override S answer(S input, Map map) { ret mapEachLine_tlft_nempties(input, s -> { new Matches m; if "what's your name" ret myName; if (swic_trim(s, "!power ", m)) { ret or2(joinWithSpacedPlus(ai_powerWordsExpand(agiBlue_parsedPowerWords(), tok_splitAtPlus(m.rest()))), "No results"); } try answer super.answer(s, map); //try answer agiBlue_getAnswer(s); try answer agiBlue_lookup(s, 'answer , /*'is, 'means*/); if (flexMatchIC("what does * mean", s, m)) //try answer agiBlue_lookup($1, 'means); try answer random(agiBlue_multiLookupInAllSlices($1, 'means); if (contains(s, "...")) try answer random(listMinusElementIC(s, (LS) collect q(jsonDecodeList(loadPageWithParams("http://agi.blue/bot/allPagesContainingRegexp", q := "^" + ellipsisToDotStarRegexp(s) + "$", max := 10))))); T3S triple = agiBlue_parseTriple(s); if (triple != null && !any isDollarVar(tripleToList(triple))) { agiBot_postSignedEntry(keys, triple); ret "Stored. <" + agiBlue_linkForPhrase(triple.a) + ">"; } null; }); } }