]> jfr.im git - irc/quakenet/newserv.git/commitdiff
Merge pull request #2 from meeb/meeb
authorChris Porter <redacted>
Sat, 23 Jan 2016 14:12:11 +0000 (14:12 +0000)
committerChris Porter <redacted>
Sat, 23 Jan 2016 14:12:11 +0000 (14:12 +0000)
irc_onvoice and irc_ondevoice lua events

lua/luabot.c

index d99ccd1f52177487cc757f9784806c08dc9872b4..a1132a57272cc8a199bf4a8c7b3b2434335398af 100644 (file)
@@ -27,6 +27,7 @@ void lua_onauth(int hooknum, void *arg);
 void lua_ondisconnect(int hooknum, void *arg);
 void lua_onmode(int hooknum, void *arg);
 void lua_onop(int hooknum, void *arg);
+void lua_onvoice(int hooknum, void *arg);
 void lua_onprequit(int hooknum, void *arg);
 void lua_onquit(int hooknum, void *arg);
 void lua_onrename(int hooknum, void *arg);
@@ -46,6 +47,8 @@ void lua_registerevents(void) {
   registerhook(HOOK_CHANNEL_KICK, &lua_onkick);
   registerhook(HOOK_CHANNEL_OPPED, &lua_onop);
   registerhook(HOOK_CHANNEL_DEOPPED, &lua_onop);
+  registerhook(HOOK_CHANNEL_VOICED, &lua_onvoice);
+  registerhook(HOOK_CHANNEL_DEVOICED, &lua_onvoice);
   registerhook(HOOK_NICK_PRE_LOSTNICK, &lua_onprequit);
   registerhook(HOOK_NICK_LOSTNICK, &lua_onquit);
   registerhook(HOOK_NICK_RENAME, &lua_onrename);
@@ -67,6 +70,8 @@ void lua_deregisterevents(void) {
   deregisterhook(HOOK_NICK_PRE_LOSTNICK, &lua_onprequit);
   deregisterhook(HOOK_CHANNEL_DEOPPED, &lua_onop);
   deregisterhook(HOOK_CHANNEL_OPPED, &lua_onop);
+  deregisterhook(HOOK_CHANNEL_DEVOICED, &lua_onvoice);
+  deregisterhook(HOOK_CHANNEL_VOICED, &lua_onvoice);
   deregisterhook(HOOK_CHANNEL_KICK, &lua_onkick);
   deregisterhook(HOOK_CHANNEL_TOPIC, &lua_ontopic);
   deregisterhook(HOOK_NICK_ACCOUNT, &lua_onauth);
@@ -310,7 +315,7 @@ void lua_ontopic(int hooknum, void *arg) {
   channel *cp=(channel*)arglist[0];
   nick *np = (nick *)arglist[1];
 
-  if(!cp || !cp->topic) 
+  if(!cp || !cp->topic)
     return;
 
   if(np)
@@ -335,6 +340,22 @@ void lua_onop(int hooknum, void *arg) {
   }
 }
 
+void lua_onvoice(int hooknum, void *arg) {
+  void **arglist = (void **)arg;
+  chanindex *ci = ((channel *)arglist[0])->index;
+  nick *np = arglist[1];
+  nick *target = arglist[2];
+
+  if(!target)
+    return;
+
+  if(np) {
+    lua_avpcall(hooknum == HOOK_CHANNEL_VOICED?"irc_onvoice":"irc_ondevoice", "Sll", ci->name, np->numeric, target->numeric);
+  } else {
+    lua_avpcall(hooknum == HOOK_CHANNEL_VOICED?"irc_onvoice":"irc_ondevoice", "S0l", ci->name, target->numeric);
+  }
+}
+
 void lua_onjoin(int hooknum, void *arg) {
   void **arglist = (void **)arg;
   chanindex *ci = ((channel *)arglist[0])->index;
@@ -484,5 +505,3 @@ void lua_onmode(int hooknum, void *arg) {
     lua_avpcall("irc_onmode", "S0ss", ci->name, printallmodes(cp), printlimitedmodes(cp, beforeflags));
   }
 }
-
-