X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=modcmd.h;h=940ab32a6d021e4aac83c8fc07405e6c2e5adae0;hb=795115bf680185ae01043bd1222b78bfed8c1d87;hp=8195145cefbbfb7ab3f97a8da24b6fd70df7d670;hpb=f365bfd53da3f437b6eeb8ac78ae1125aca8a52c;p=NeonServV5.git diff --git a/modcmd.h b/modcmd.h index 8195145..940ab32 100644 --- a/modcmd.h +++ b/modcmd.h @@ -2,6 +2,71 @@ #define _modcmd_h #include "main.h" +#define CMDFLAG_REQUIRE_CHAN 0x0001 +#define CMDFLAG_REQUIRE_AUTH 0x0002 +#define CMDFLAG_REQUIRE_GOD 0x0004 +#define CMDFLAG_CHECK_AUTH 0x0008 +#define CMDFLAG_REGISTERED_CHAN 0x0010 +#define CMDFLAG_OVERRIDE_GLOBAL_ACCESS 0x0020 +#define CMDFLAG_OVERRIDE_CHANNEL_ACCESS 0x0040 +#define CMDFLAG_CHAN_PARAM 0x0080 +#define CMDFLAG_LOG 0x0100 +#define CMDFLAG_OPLOG 0x0200 + +struct ClientSocket; +struct UserNode; +struct ChanNode; +struct Event; + +#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), UNUSED_ARG(struct Event *event)) +typedef void cmd_bind_t(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, char **argv, char argc, struct Event *event); +typedef void trigger_callback_t(struct ChanNode *chan, char *trigger); + +struct cmd_function { + char *name; + int botid; + cmd_bind_t *func; + unsigned int flags; + int paramcount; + int global_access; + char *channel_access; + + struct cmd_function *next; +}; + +struct cmd_binding { + char *cmd; + int botid; + struct cmd_function *func; + unsigned int flags; + char *parameters; + int global_access; + char *channel_access; + + struct cmd_binding *next; +}; + +struct trigger_cache { + int botid; + char *trigger; + + struct trigger_cache *next; +}; + void init_modcmd(); +void free_modcmd(); +struct ClientSocket* get_prefered_bot(int botid); +int register_command(int botid, char *name, cmd_bind_t *func, int paramcount, char *channel_access, int global_access, unsigned int flags); +int set_trigger_callback(int botid, trigger_callback_t *func); +int changeChannelTrigger(int botid, struct ChanNode *chan, char *new_trigger); +int bind_cmd_to_function(int botid, char *cmd, struct cmd_function *func); +int bind_cmd_to_command(int botid, char *cmd, char *func); +int unbind_cmd(int botid, char *cmd); +struct cmd_function *find_cmd_function(int botid, char *name); +struct ClientSocket *getTextBot(); +void bind_set_parameters(int botid, char *cmd, char *parameters); +void bind_set_global_access(int botid, char *cmd, int gaccess); +void bind_set_channel_access(int botid, char *cmd, char *chanaccess); +struct cmd_binding *find_cmd_binding(int botid, char *cmd); #endif \ No newline at end of file