X-Git-Url: https://jfr.im/git/irc/quakenet/newserv.git/blobdiff_plain/d324e17b339ef4e396801afe7a8a84bd3466604e..78546f2b0f59b5c8fede1ce5535972716eb17041:/lua/luabot.c diff --git a/lua/luabot.c b/lua/luabot.c index 8f5501fd..a4d5fc67 100644 --- a/lua/luabot.c +++ b/lua/luabot.c @@ -248,7 +248,8 @@ void lua_bothandler(nick *target, int type, void **args) { p[le - 1] = '\000'; lua_avpcall("irc_onctcp", "ls", np->numeric, p + 1); - + } else { + lua_avpcall("irc_onnotice", "ls", np->numeric, p); } break; @@ -352,20 +353,23 @@ void lua_onpart(int hooknum, void *arg) { void **arglist = (void **)arg; chanindex *ci = ((channel *)arglist[0])->index; nick *np = arglist[1]; + char *reason = arglist[2]; if(!ci || !np) return; - lua_avpcall("irc_onpart", "Sl", ci->name, np->numeric); + lua_avpcall("irc_onpart", "Sls", ci->name, np->numeric, reason); } void lua_onrename(int hooknum, void *arg) { - nick *np = (void *)arg; + void **harg = (void **)arg; + nick *np = harg[0]; + char *oldnick = harg[1]; if(!np) return; - lua_avpcall("irc_onrename", "l", np->numeric); + lua_avpcall("irc_onrename", "ls", np->numeric, oldnick); } void lua_onquit(int hooknum, void *arg) { @@ -453,16 +457,25 @@ char *printallmodes(channel *cp) { return buf; } +static char *printlimitedmodes(channel *cp, flag_t before) { + static char buf[1024]; + + snprintf(buf, sizeof(buf), "%s", printflags(cp->flags, cmodeflags)); + + return buf; +} + void lua_onmode(int hooknum, void *arg) { void **arglist = (void **)arg; channel *cp = (channel *)arglist[0]; chanindex *ci = cp->index; nick *np = arglist[1]; + flag_t beforeflags = (flag_t)(long)arglist[3]; if(np) { - lua_avpcall("irc_onmode", "Sls", ci->name, np->numeric, printallmodes(cp)); + lua_avpcall("irc_onmode", "Slss", ci->name, np->numeric, printallmodes(cp), printlimitedmodes(cp, beforeflags)); } else { - lua_avpcall("irc_onmode", "S0s", ci->name, printallmodes(cp)); + lua_avpcall("irc_onmode", "S0ss", ci->name, printallmodes(cp), printlimitedmodes(cp, beforeflags)); } }