Warning: session_start(): open(/var/lib/php/sessions/sess_dv6lfq9s9aiahrb7ngordm322j, 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
cmodule2 FollowSkypeBot > DynPrintLog {
switchable bool uploadEnabled;
transient Q uploadQ;
File logFile() {
ret userDir("dev/skype-bot/skype.log");
}
start-thread {
uploadQ = dm_startQ();
printFileInfo(logFile());
tailFileLinewise(logFile(), 1000, voidfunc(S line) {
handleLine(line);
});
print("Listening to log " + stringIf(uploadEnabled, " with upload"));
}
void processWholeLog {
for (S line : linesFromFile(logFile()))
handleLine(line);
}
void handleLine(S line) pcall {
new Matches m;
if (startsWith(line, "Message: ", m)) {
//print(m.rest());
Map map = jsonDecodeMap(m.rest());
//pnl(map);
Map resource = cast mapGet(map, "resource");
//pnl(resource);
S displayName = mapGet(resource, "imdisplayname");
S content = cast mapGet(resource, "content");
if (nempty(content)) {
print("Content: " + /*htmlDecode*/(content));
LS tok = htmlTok(content);
new StringBuilder out;
for (int i = 0; i < l(tok); i++) {
if (odd(i)) {
S tag = getTag(tok.get(i));
if (!eqicOneOf(tag, "b", "i", "at")) {
// skip any other tags
if (eqic(tag, "ss")) out.append(":" + tagParam(tok.get(i), "type") + ":");
int j = findEndOfContainerTag(tok, i);
i = j < 0 ? l(tok) : j-1;
}
} else
out.append(htmlDecode(tok.get(i));
}
print("Cleaned: " + out);
if (uploadEnabled) uploadQ.add(r {
S info = "Skype";
if (nempty(displayName)) info += " (User " + displayName + ")");
gazelleBEA_uploadInput(str(out), info);
});
}
}
}
}