CMD_BIND(neonserv_cmd_unbind) {
MYSQL_RES *res;
MYSQL_ROW row;
+ struct cmd_binding *cbind = find_cmd_binding(client->botid, argv[0]);
printf_mysql_query("SELECT `function` FROM `bot_binds` WHERE `botclass` = '%d' AND `command` = '%s'", client->botid, escape_string(argv[0]));
res = mysql_use();
- if ((row = mysql_fetch_row(res)) == NULL) {
+ if ((row = mysql_fetch_row(res)) == NULL && (!cbind || !(cbind->flags & CMDFLAG_TEMPONARY_BIND))) {
reply(getTextBot(), user, "NS_UNBIND_NOT_FOUND", argv[0]);
return;
}
}
}
unbind_cmd(client->botid, argv[0]);
- printf_mysql_query("DELETE FROM `bot_binds` WHERE `id` = '%s'", row[0]);
+ if((!cbind || !(cbind->flags & CMDFLAG_TEMPONARY_BIND)))
+ printf_mysql_query("DELETE FROM `bot_binds` WHERE `id` = '%s'", row[0]);
reply(getTextBot(), user, "NS_UNBIND_DONE", argv[0]);
logEvent(event);
}
if(found)
break;
}
- if(!found) {
- bind_cmd_to_function(botid, cmdfunc->name, cmdfunc);
+ if(!found && bind_cmd_to_function(botid, cmdfunc->name, cmdfunc)) {
+ cbind = find_cmd_binding(botid, cmdfunc->name);
+ cbind->flags |= CMDFLAG_TEMPONARY_BIND;
}
}
}
#define CMDFLAG_OPLOG 0x0200
#define CMDFLAG_EMPTY_ARGS 0x0400
#define CMDFLAG_REQUIRED 0x0800
+#define CMDFLAG_TEMPONARY_BIND 0x1000
struct ClientSocket;
struct UserNode;