moved all the bot things into bot_NeonServ.c
authorpk910 <philipp@zoelle1.de>
Sat, 13 Aug 2011 01:12:17 +0000 (03:12 +0200)
committerpk910 <philipp@zoelle1.de>
Sat, 13 Aug 2011 01:12:17 +0000 (03:12 +0200)
IRCEvents.c
IRCEvents.h
IRCParser.c
bot_NeonServ.c
main.c

index 51e0d326563a2db02cc68415976b7e5f1a474ea2..1bbbd4f9d790d470a2a7ab7d1ff2aaad4534d7fd 100644 (file)
@@ -26,8 +26,9 @@ static void **binds;
 #define BIND_TYPE_PRIVCTCP   12
 #define BIND_TYPE_INVITE     13
 #define BIND_TYPE_RAW        14
+#define BIND_TYPE_BOT_READY  15
 
-#define TOTAL_BIND_TYPES     15
+#define TOTAL_BIND_TYPES     16
 
 void init_bind() {
     binds = calloc(TOTAL_BIND_TYPES, sizeof(*binds));
@@ -158,3 +159,6 @@ FUNC_BIND(raw, raw_func_t, BIND_TYPE_RAW)
 FUNC_UNBIND(raw, raw_func_t, BIND_TYPE_RAW)
 FUNC_EVENT(raw, raw_func_t, BIND_TYPE_RAW, (struct ClientSocket *client, char *from, char *cmd, char **argv, int argc), (client, from, cmd, argv, argc))
 
+FUNC_BIND(bot_ready, bot_ready_func_t, BIND_TYPE_BOT_READY)
+FUNC_UNBIND(bot_ready, bot_ready_func_t, BIND_TYPE_BOT_READY)
+FUNC_EVENT(bot_ready, bot_ready_func_t, BIND_TYPE_BOT_READY, (struct ClientSocket *client), (client))
index cb017740e830b61c7cb8f7abf72cbb41cd8ab69e..b92669f1f7d4fde8813c17e0030e05f63a9866fa 100644 (file)
@@ -86,6 +86,11 @@ int bind_raw(raw_func_t *func);
 void unbind_raw(raw_func_t *func);
 int event_raw(struct ClientSocket *client, char *from, char *cmd, char **argv, int argc);
 
+typedef void bot_ready_func_t(struct ClientSocket *client);
+int bind_bot_ready(bot_ready_func_t *func);
+void unbind_bot_ready(bot_ready_func_t *func);
+int event_bot_ready(struct ClientSocket *client);
+
 
 
 #endif
\ No newline at end of file
index 13b76e4e2125cb88434703de8a01f9b7faa5116f..bc14dfcfc04689f7ec6ff67b118749f3d2049c98 100644 (file)
@@ -92,7 +92,7 @@ static USERLIST_CALLBACK(got_channel_userlist) {
 
 static IRC_CMD(raw_001) {
     client->flags |= SOCKET_FLAG_READY;
-    putsock(client, "JOIN #pktest");
+    event_bot_ready(client);
     return 1;
 }
 
index b69ac3fb2f15e3f0467d9c9f2c2c434db740a694..364549f7d5f997d94a01af9684747c7c0cdf77f4 100644 (file)
@@ -1,11 +1,14 @@
 
 #include "bot_NeonServ.h"
 #include "modcmd.h"
+#include "IRCEvents.h"
 #include "UserNode.h"
 #include "ChanNode.h"
 #include "ChanUser.h"
 #include "ClientSocket.h"
 
+#define BOTID 1
+
 static CMD_BIND(neonserv_cmd_users) {
     struct ChanUser *chanuser;
     putsock(client, "PRIVMSG %s :[BOT JOIN] Users on this Channel:", chan->name);
@@ -20,14 +23,50 @@ static CMD_BIND(neonserv_cmd_modes) {
     putsock(client, "PRIVMSG %s :Modes: %s", chan->name, modeBuf);
 }
 
+static void neonserv_bot_ready(struct ClientSocket *client) {
+    putsock(client, "JOIN #pktest");
+}
+
+static void neonserv_trigger_callback(struct ChanNode *chan, char *trigger) {
+    strcpy(trigger, "!");
+}
+
+static void start_bots() {
+    struct UserNode *user;
+    struct ClientSocket *client;
+    
+    user = addUser("TestBot");
+    strcpy(user->ident, "test");
+    strcpy(user->realname, "testUser!");
+    user->flags |= USERFLAG_ISBOT;
+    client = create_socket("127.0.0.1", 6667, "pktest:pktest123", user); //pktest Hostmask(s): *@127.0.0.1
+    client->flags |= SOCKET_FLAG_PREFERRED;
+    connect_socket(client);
+    
+    user = addUser("TestBot2");
+    strcpy(user->ident, "test");
+    strcpy(user->realname, "testUser!");
+    user->flags |= USERFLAG_ISBOT;
+    client = create_socket("127.0.0.1", 6667, "pktest:pktest123", user); //pktest Hostmask(s): *@127.0.0.1
+    connect_socket(client);
+}
+
 void init_NeonServ() {
-    register_command(0, "users", neonserv_cmd_users);
-    register_command(0, "modes", neonserv_cmd_modes);
+    start_bots();
+    
+    bind_bot_ready(neonserv_bot_ready);
     
-    bind_cmd_to_command(0, "users", "users");
-    bind_cmd_to_command(0, "modes", "modes");
+    set_trigger_callback(BOTID, neonserv_trigger_callback);
+    
+    register_command(BOTID, "users", neonserv_cmd_users);
+    register_command(BOTID, "modes", neonserv_cmd_modes);
+    
+    bind_cmd_to_command(BOTID, "users", "users");
+    bind_cmd_to_command(BOTID, "modes", "modes");
 }
 
 void free_NeonServ() {
     
 }
+
+#undef BOTID
diff --git a/main.c b/main.c
index 58609a3ce906bcd315c21b9c785c2a8cf514d021..1dd49500f38975fd51173d1dd2224977a6f56c53 100644 (file)
--- a/main.c
+++ b/main.c
@@ -9,26 +9,6 @@
 #include "WHOHandler.h"
 #include "bots.h"
 
-void just_test_it() {
-    struct UserNode *user;
-    struct ClientSocket *client;
-    
-    user = addUser("TestBot");
-    strcpy(user->ident, "test");
-    strcpy(user->realname, "testUser!");
-    user->flags |= USERFLAG_ISBOT;
-    client = create_socket("127.0.0.1", 6667, "pktest:pktest123", user); //pktest Hostmask(s): *@127.0.0.1
-    client->flags |= SOCKET_FLAG_PREFERRED;
-    connect_socket(client);
-    
-    user = addUser("TestBot2");
-    strcpy(user->ident, "test");
-    strcpy(user->realname, "testUser!");
-    user->flags |= USERFLAG_ISBOT;
-    client = create_socket("127.0.0.1", 6667, "pktest:pktest123", user); //pktest Hostmask(s): *@127.0.0.1
-    connect_socket(client);
-}
-
 void cleanup() {
     free_sockets();
     free_parser();
@@ -48,7 +28,6 @@ int main(void)
     init_bind();
        init_modcmd();
     init_bots();
-    just_test_it();
     
     time_t socket_wait;
     while(1) {