aboutsummaryrefslogtreecommitdiffstats
path: root/documentation
diff options
context:
space:
mode:
authormarzavec <admin@marzavec.com>2018-10-14 01:35:58 +0200
committermarzavec <admin@marzavec.com>2018-10-14 01:35:58 +0200
commit4a2f0d6f59a281706ba6a1d370cf9be403cc1ee1 (patch)
treecd0cf58c26fb004b4d8100bde70d3ee865207676 /documentation
parentMerge pull request #39 from rand0x0m/update-style (diff)
downloadhackchat-4a2f0d6f59a281706ba6a1d370cf9be403cc1ee1.tar.gz
hackchat-4a2f0d6f59a281706ba6a1d370cf9be403cc1ee1.zip
documentation update, removing unused scripts
Diffstat (limited to 'documentation')
-rw-r--r--documentation/templateCommand.js54
1 files changed, 48 insertions, 6 deletions
diff --git a/documentation/templateCommand.js b/documentation/templateCommand.js
index 1a4f3d2..c9f3604 100644
--- a/documentation/templateCommand.js
+++ b/documentation/templateCommand.js
@@ -6,6 +6,7 @@
// you can require() modules here
// this function will only be only in the scope of the module
+// module support functions
const createReply = (echoInput) => {
if (echoInput.length > 100)
echoInput = 'HOW ABOUT NO?';
@@ -14,11 +15,23 @@ const createReply = (echoInput) => {
};
/*
+ `exports.init()` is optional, and will only be run when the module is loaded into memory
+ it will always be passed a reference to the global core class
+ note: this will fire again if a reload is issued, keep that in mind
+*/
+exports.init = (core) => {
+ if (typeof core.showcase === 'undefined') {
+ core.showcase = 'init is a handy place to put global data by assigning it to `core`';
+ }
+}
+
+/*
`exports.run()` is required and will always be passed (core, server, socket, data)
be sure it's async too
this is the main function that will run when called
*/
+// module main
exports.run = async (core, server, socket, data) => {
server.reply({
@@ -29,14 +42,43 @@ exports.run = async (core, server, socket, data) => {
};
/*
- `exports.init()` is optional, and will only be run when the module is loaded into memory
- it will always be passed a reference to the global core class
- note: this will fire again if a reload is issued, keep that in mind
+ `exports.initHooks` is optional, this will be called when the server is ready
+ for modules to register their hooking functions
+
+ Hook function may alter the data before it is sent to a module, or before it
+ is sent to a client. If the function returns `false` then the data will be
+ dropped without further processing
*/
-exports.init = (core) => {
- if (typeof core.showcase === 'undefined') {
- core.showcase = 'init is a handy place to put global data by assigning it to `core`';
+// module hook functions
+exports.initHooks = (server) => {
+ /*
+ First param is hook type. A hook may be registered as either `in` or `out`:
+ `in`: a hook function registered as `in` will be called before the client
+ request is passed to the module they are attempting to call. Note: socket
+ in this context is the client that sent the data
+ `out`: a hook function registerd as `out` will be called before the data is
+ sent to any clients. Note: `socket` in this context is the socket that
+ will be sent the data.
+
+ Second param is the `cmd` type to target, any valid module may be targeted
+
+ Third param is the hook function itself, see `exports.hookExample` for an example
+ */
+ server.registerHook('in', 'chat', this.hookExample);
+};
+
+/*
+ This hook function example alters the payload before it gets to the `chat` module,
+ changing the user's input from 'hookexample' to 'WORKING!'
+*/
+exports.hookExample = (core, server, socket, payload) => {
+ // check if we need to alter the payload
+ if (payload.text === 'hookexample') {
+ payload.text = 'WORKING!';
}
+
+ // always return the payload, or false if processing should drop it
+ return payload;
}
// optional, if `data.echo` is missing `exports.run()` will never be called & the user will be alerted