Warning: session_start(): open(/var/lib/php/sessions/sess_qidr7gknk0lpe9d9nriuble9c6, 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 eeZee > DynDiscordHopper {
switchable S httpURL = "https://55392290.ngrok.io";
switchable S serverName;
switchable S prefix = "<@599426196647706645> ";
transient double sendTypingAfter = 6.0;
L authorizedUsers = ll(463778175432785932, 547706854680297473);
transient NotTooOften ntoError = notTooOften_1min();
@Override S answer(S input, Map map) {
try answer super.answer(input, map);
setField(prefix := "<@" + gazelle_selfUserID() + "> ");
//setField(httpURL := or2(loadProgramTextFile("http-url"), httpURL));
new Matches m;
long userID = getLong userID(map);
print("User ID: " + userID);
if (eqic(input, "hey " + trim(prefix)))
ret "hey";
if (swic_trim(input, prefix + "add master ", m)) {
if (!contains(authorizedUsers, userID))
ret "You are not my master";
add(authorizedUsers, parseFirstLong(m.rest()));
change();
ret "Okidoki. Have " + n2(l(authorizedUsers), "master");
}
S simplified = simpleSpaces_noTok(input);
//print(+simplified);
if (swic_trim(simplified, prefix + "set url ", m)) {
print("Setting URL");
if (!contains(authorizedUsers, userID))
ret "You are not my master";
S s = m.rest();
if (neq(s, "disabled") && !contains(s, ".")) ret "Invalid URL";
setField(httpURL := s);
saveProgramTextFile("http-url", httpURL);
ret "URL set to " + httpURL + ", master";
}
if (swic_trim(simplified, prefix + "get url", m)) {
if (!contains(authorizedUsers, userID))
ret "You are not my master";
ret "URL is: " + backtickQuote(httpURL);
}
long time = sysNow();
S s;
if (eqic(httpURL, "disabled")) null;
try {
temp doAfterSecondsIfStillRunning(sendTypingAfter, r { iAmTyping(map) });
s = loadPageWithTimeout(60.0, httpURL + hquery(
message := input,
+userID,
channelID := map.get('channelID),
msgID := map.get('msgID)));
print("Got " + (s == null ? "timeout" : nChars(s)) + " in " + elapsedSeconds(time) + " s");
ret s;
} catch e {
if (!ntoError.yo()) null;
S str = exceptionToStringShort(e);
if (cicOneOf(str, "Server returned HTTP response code: 502",
"Server code 500",
"FileNotFoundException", "SocketTimeoutException")) // rough
ret null with print("Bot is offline (500/502/404/timeout, " + elapsedSeconds(time) + " s): " + str);
print(e);
ret "Error: " + shorten(100, str);
}
}
start {
dm_registerAs_directLink('eeZee);
dm_setModuleName(serverName + " - eeZee");
dm_vmBus_onMessage_q discordGuildJoin(voidfunc(Map map) {
ret unless map.get('module) == module();
S name = "?";
pcall {
name = rcall_string getName(rcall getUser(rcall getMember(map.get('event))));
}
print("Got join, forwarding. Name: " + name);
print(loadPageWithTimeout(60.0, httpURL + hquery(
event := 'join,
userName := name,
userID := getLong userID(map)
)));
});
}
}