Warning: session_start(): open(/var/lib/php/sessions/sess_ej24qg2grt43i8d6nvjqo3p942, 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 GreeterBot extends DynTalkBot2 {
long greetingsPerformed;
void init {
super.init();
makeByServer = () -> new ByServer;
useAGIBlueForDropPunctuation = false;
preprocessAtSelfToMyName = false;
dropPunctuation = false;
dm_vmBus_onMessage_q discordGuildLeave(voidfunc(Map map) {
ret unless map.get('module) == module();
O event = map.get('event);
O user = rcall getUser(event);
S name = cast rcall getName(user);
long guildID = discord_guildIDFromEvent_gen(event);
if (guildID == 0) fail("Guild zero: " + map);
getByServer(guildID, true).onUserLeave(name, map);
});
}
class ByServer extends DynTalkBot2.ByServer {
bool enabled = true;
S msg = "Welcome !";
S goodbyeMsg = " just left us";
long channelToGreetIn;
int delay = 2; // seconds before posting greeting
void onUserJoin(long userID, O... _) {
S msg = replace(this.msg, "", discordAt(userID));
if (channelToGreetIn == 0) setField(channelToGreetIn := preferredChannelID);
if (channelToGreetIn == 0) fail("Have no greeting channel");
if (!boolPar noDelay(_)) sleepSeconds(delay);
postInChannel(channelToGreetIn, msg);
}
void onUserLeave(S userName, O... _) {
postInChannel(channelToGreetIn, replace(goodbyeMsg, "", or2(userName, "an unknown user"));
}
S processSimplifiedLine(S s, O... _) {
try answer super.processSimplifiedLine(s, _); // adding authorized users etc.
new Matches m;
S sOld = s;
s = dropPrefixOrNull(myPrefix(), s);
if (s == null) {
print("no got prefix: " + quote(myPrefix()) + " / " + quote(sOld));
null;
}
if (eqic(s, "prefer this channel")) {
try answer checkAuth(_);
long channelID = longPar channelID(_);
if (channelID == 0) ret "No channel";
setField(channelToGreetIn := channelID);
ret "OK, will greet here from now on.";
}
if (eqic(s, "simulate greeting")) {
print("userID=" + longPar userID(_));
onUserJoin(longPar userID(_), paramsPlus(_, noDelay := true));
ret "Greeting simulated";
}
if (eqic(s, "simulate goodbye")) {
O user = rcall getAuthor(optPar event(_));
S name = cast rcall getName(user);
onUserLeave(name, _);
ret "Goodbye simulated";
}
if (eqic(s, "get message")) ret msg;
if (eqic(s, "get goodbye message")) ret goodbyeMsg;
if (eqic(s, "get delay")) ret "Current greeting delay is: " + nSeconds(delay);
if (swic(s, "set delay ", m)) {
int i = parseFirstInt(m.rest());
setField(delay := clamp(i, 0, 60));
ret "Greeting delay set to " + nSeconds(delay);
}
if (swic_trim(s, "set message:", m)) {
try answer checkAuth(_);
setField(msg := dropPrefixTrim("Message changed to:", m.rest()));
ret "Message changed to: " + msg;
}
if (swic_trim(s, "set goodbye message:", m)) {
try answer checkAuth(_);
setField(goodbyeMsg := m.rest();
ret "Goodbye message changed to: " + msg;
}
if (eqic(s, "enable")) {
try answer checkAuth(_);
setField(enabled := true);
ret "Enabled. Will greet every new arrival!";
}
if (eqic(s, "disable")) {
try answer checkAuth(_);
setField(enabled := true);
ret "Disabled. Will not greet anyone.";
}
if (eqic(s, "advanced help"))
ret trim([[
Advanced commands:
@me **get delay** -- get delay before posting greeting
@me **set delay to 5 seconds** -- change greeting delay
]]).replace("@me", atSelf());
if (eqic(s, "help"))
ret trim([[
I am a simple greeter (and farewell) bot. Status: ]] + enabledDisabled(enabled) + [[. Commands:
@me **simulate greeting** -- I greet you so you can test me
@me **get message** -- show current greeting message
@me **set message: Hello ! Bla bla...** -- change greeting. is replaced with user name
@me **simulate goodbye** -- I pretend you walked away (although I know you didn't)
@me **get goodbye message** -- show current goodbye message (what I post when people leave)
@me **set goodbye message: just left us** -- change farewell message
@me **prefer this channel** -- posts greetings in the channel you write this in
@me **enable/disable** -- enable/disable the auto-greeting
@me **masters**/**add master**/**delete master** -- change bot ownership
@me **source**/**support channel** -- see sources or join the support discord
@me **advanced help** -- see advanced help
[Bot made by https://BotCompany.de]
]]).replace("@me", atSelf());
null;
}
}
}