added .gitignore
[NeonServV5.git] / modcmd.h
1 #ifndef _modcmd_h
2 #define _modcmd_h
3 #include "main.h"
4
5 struct ClientSocket;
6 struct UserNode;
7 struct ChanNode;
8
9 #define CMD_BIND(NAME) void NAME(UNUSED_ARG(struct ClientSocket *client), UNUSED_ARG(struct UserNode *user), UNUSED_ARG(struct ChanNode *chan), UNUSED_ARG(char **argv), UNUSED_ARG(char argc))
10 typedef void cmd_bind_t(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, char **argv, char argc);
11 typedef void trigger_callback_t(struct ChanNode *chan, char *trigger);
12
13 struct cmd_function {
14     char *name;
15     int botid;
16     cmd_bind_t *func;
17     
18     struct cmd_function *next;
19 };
20
21 struct cmd_binding {
22     char *cmd;
23     int botid;
24     struct cmd_function *func;
25     
26     struct cmd_binding *next;
27 };
28
29 struct trigger_cache {
30     int botid;
31     char *trigger;
32     
33     struct trigger_cache *next;
34 };
35
36 void init_modcmd();
37 void free_modcmd();
38 struct ClientSocket* get_prefered_bot(int botid);
39 int register_command(int botid, char *name, cmd_bind_t *func);
40 int set_trigger_callback(int botid, trigger_callback_t *func);
41 int changeChannelTrigger(int botid, struct ChanNode *chan, char *new_trigger);
42 int bind_cmd_to_function(int botid, char *cmd, struct cmd_function *func);
43 int bind_cmd_to_command(int botid, char *cmd, char *func);
44 int unbind_cmd(int botid, char *cmd);
45
46 #endif