#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));
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))
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
static IRC_CMD(raw_001) {
client->flags |= SOCKET_FLAG_READY;
- putsock(client, "JOIN #pktest");
+ event_bot_ready(client);
return 1;
}
#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);
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
#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();
init_bind();
init_modcmd();
init_bots();
- just_test_it();
time_t socket_wait;
while(1) {