* @param source The user who is issuing the INVITE
* @param dest The user being invited
* @param channel The channel the user is being invited to
+ * @param timeout The time the invite will expire (0 == never)
* @return 1 to deny the invite, 0 to allow
*/
- virtual int OnUserPreInvite(User* source,User* dest,Channel* channel);
+ virtual int OnUserPreInvite(User* source,User* dest,Channel* channel, time_t timeout);
/** Called after a user has been successfully invited to a channel.
* You cannot prevent the invite from occuring using this function, to do that,
* @param source The user who is issuing the INVITE
* @param dest The user being invited
* @param channel The channel the user is being invited to
+ * @param timeout The time the invite will expire (0 == never)
*/
- virtual void OnUserInvite(User* source,User* dest,Channel* channel);
+ virtual void OnUserInvite(User* source,User* dest,Channel* channel, time_t timeout);
/** Called whenever a user is about to PRIVMSG A user or a channel, before any processing is done.
* Returning any nonzero value from this function stops the process immediately, causing no
*/
modulelist* FindInterface(const std::string &InterfaceName);
+ /** Determine if a module has published the named interface.
+ * This could be used in, for example, OnLoadModule to pick up other modules that can be used.
+ * @param mod The module to check.
+ * @param InterfaceName the interface you want to check for
+ * @return True if the module provides the interface, false otherwise.
+ */
+ bool ModuleHasInterface(Module* mod, const std::string& InterfaceName);
+
/** Given a pointer to a Module, return its filename
* @param m The module pointer to identify
* @return The module name or an empty string