Warning: session_start(): open(/var/lib/php/sessions/sess_kaa9h61gncfrq2tbp9fus0ut2s, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
!7
cmodule NLRulesBot extends DynTalkBot2<.ByServer> {
start {
makeByServer = () -> new ByServer;
useAGIBlueForDropPunctuation = false;
preprocessAtSelfToMyName = false;
dropPunctuation = false;
}
sclass Rule {
GlobalID globalID = aGlobalIDObj();
bool enabled = true;
S text;
*() {}
*(S *text) {}
}
S renderRule(Rule r) {
ret r == null ? null : "Rule " + r.globalID +
(enabled ? "" : " [disabled]") + ": " +
r.text;
}
class ByServer extends DynTalkBot2.ByServer {
new L rules;
synchronized S processSimplifiedLine(S s, O... _) {
try answer super.processSimplifiedLine(s, _);
new Matches m;
if null (s = dropMyPrefixOrNull(s)) null;
if "on * say *" {
Rule r = firstWhereIC(rules, text := s);
if (r != null) ret "Rule exists: " + r.globalID;
rules.add(r = new Rule(s));
change();
ret "Rule added with ID " + r.globalID;
}
if "rules"
ret lines(map(r -> renderRule(r), rules));
if (eqic(s, "help"))
ret ltrim([[
I execute simple English rules.
Stuff to say.
@me on "hello bot" say "who are you"
[Bot made by https://BotCompany.de]
]]).replace("@me", atSelf());
// find rule to execute
for (Rule r : rules) pcall {
if (!r.enabled) continue;
if (match("on * say *", r.text, m)) {
S in = $1, out = $2;
if (match(in, s, m))
ret out;
}
}
null;
}
}
}