Warning: session_start(): open(/var/lib/php/sessions/sess_hst8gq033j226s9jvjjduu5f9s, 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
class ByServer {
bool isGuild;
S answer(S s, Map map) { null; }
bool setField(S name, O value) {
if (set_trueIfChanged(this, name, value)) false;
ret true with _change();
}
Member getSelfMember(Guild guild) {
ret guild.getMember(getSelfUser());
}
}
@Override S answer(S input, Map map) {
try answer super.answer(input, map); // 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 = getByServer(id, id == guildID);
ret data.answer(s, map);
});
}
A getByServer(long id, bool isGuild) {
ret pairA(getByServer2(id, isGuild));
}
Pair getByServer2(long id, 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));
}
int liveGuildCount() {
ret l(discord.getGuilds());
}
}