+ if(message[0] == '#') {
+ char *chanName = message;
+ message = strstr(message, ' ');
+ if(!message) return;
+ *message = '\0';
+ message++;
+ struct ChanNode *chan2 = getChanByName(chanName);
+ if(chan2)
+ chan = chan2;
+ }
+ int bind_index = get_binds_index(message[0]);
+ char *args = strstr(message, " ");
+ if(args) {
+ *args = '\0';
+ args++;
+ }
+ struct cmd_binding *cbind;
+ for(cbind = cmd_binds[bind_index]; cbind; cbind = cbind->next) {
+ if(cbind->botid == client->botid && strcmp(cbind->cmd, message) == 0) {
+ struct cmd_function *cmdfunc = cbind->func;
+ //parse the arguments...
+ char *argv[MAXNUMPARAMS];
+ int argc = 0;
+ while(*args) {
+ //skip leading spaces
+ while (*args == ' ')
+ *args++ = 0;
+ argv[argc++] = args;
+ if (argc >= MAXNUMPARAMS)
+ break;
+ while (*args != ' ' && *args)
+ args++;
+ }
+ if(argc != 0 && args[0][0] == '#') {
+ struct ChanNode *chan2 = getChanByName(args[0]);
+ if(chan2) {
+ argv += 1;
+ argc -= 1;
+ chan = chan2;
+ }
+ }
+ cmdfunc->func(client, user, chan, argv, argc);
+ return;
+ }
+ }
+