Warning: session_start(): open(/var/lib/php/sessions/sess_pk2emqos5nkk51pv0vbd3k1s3j, 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
asclass DynServerAwareDiscordBot extends DynDiscordHopper {
new Map dataByServer;
int guildCount;
transient IF0 makeByServer; // mandatory
sclass ByServer {
DynModule module;
bool isGuild;
*() {}
*(DynModule *module) {}
S answer(S s, Map map) { null; }
bool setField(S name, O value) {
if (set_trueIfChanged(this, name, value)) false;
ret true with module._change();
}
}
@Override S answer(S input, Map map) {
// no super (no discord hopping)
ret mapEachLine_tlft_nempties(input, s -> {
// config by guild or user
long guildID = toLong(map.get('guildID));
long id = guildID;
print("Guild ID: " + guildID);
if (id == 0) {
id = toLong(map.get('userID));
print("User ID: " + id);
}
A data, bool isNew = unpair getByServer(id, id == guildID);
ret data.answer(s, map);
});
}
Pair getByServer(long guildID, bool isGuild) {
A data, bool isNew = unpair syncGetOrCreate2(dataByServer, id, makeByServer);
data.isGuild = isGuild;
if (isNew) {
if (data.isGuild) ++guildCount;
change();
}
ret pair(data, isNew);
}
start {
if (guildCount == 0)
setField(guildCount := countValuesWhere(dataByServer, isGuild := true));
}
}