class DelayJoinMode : public ModeHandler
{
- private:
CUList empty;
public:
DelayJoinMode(Module* Parent) : ModeHandler(Parent, "delayjoin", 'D', PARAM_NONE, MODETYPE_CHANNEL)
LocalIntExt unjoined;
ModuleDelayJoin() : djm(this), unjoined("delayjoin", this)
{
- if (!ServerInstance->Modes->AddMode(&djm))
- throw ModuleException("Could not add new modes!");
+ }
+
+ void init()
+ {
+ ServerInstance->Modules->AddService(djm);
+ ServerInstance->Modules->AddService(unjoined);
Implementation eventlist[] = { I_OnUserJoin, I_OnUserPart, I_OnUserKick, I_OnBuildNeighborList, I_OnNamesListItem, I_OnText, I_OnRawMode };
- ServerInstance->Modules->Attach(eventlist, this, 7);
+ ServerInstance->Modules->Attach(eventlist, this, sizeof(eventlist)/sizeof(Implementation));
}
- ~ModuleDelayJoin();
Version GetVersion();
void OnNamesListItem(User* issuer, Membership*, std::string &prefixes, std::string &nick);
void OnUserJoin(Membership*, bool, bool, CUList&);
return MODEACTION_ALLOW;
}
-ModuleDelayJoin::~ModuleDelayJoin()
-{
-}
-
Version ModuleDelayJoin::GetVersion()
{
return Version("Allows for delay-join channels (+D) where users don't appear to join until they speak", VF_VENDOR);