Writing modules

From ZNC
Jump to: navigation, search

[edit] Overview

  • Create your own module.cpp file (you can look into the sample module for help)
  • #include <main.h> and <Modules.h>
  • Create a new class derived from CModule overriding any Module Hooks that you need
  • Be sure to add the macro call MODULEDEFS(CYourClass) at the END of the file
  • Compile your module into a shared object (.so file) (See Compiling modules)
  • Place the .so file into your ~/.znc/modules directory !!!WARNING!!! if you overwrite a .so file while znc has it loaded, it can and probably will crash znc, /msg *status unloadmod foo first!

[edit] Code

#include <main.h>
#include <Modules.h>

class CExampleMod : public CModule {
public:
    MODCONSTRUCTOR(CExampleMod) {}
    virtual ~CExampleMod() {}

    virtual void OnModCommand(const CString& sCommand) {
        if (sCommand.Token(0).CaseCmp("HELP") == 0) {
            PutModule("I'd like to help, but I am just an example module");
        } else {
            PutModule("Unknown command, try HELP");
        }
    }
};

MODULEDEFS(CExampleMod, "This is the description")

[edit] Output

<zncuser> test
<*example> Unknown command, try HELP
<zncuser> help
<*example> I'd like to help, but I am just an example module
Personal tools