summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/modules.example.conf14
-rw-r--r--modules/extra/bs_autoassign.cpp51
2 files changed, 65 insertions, 0 deletions
diff --git a/data/modules.example.conf b/data/modules.example.conf
index 51f9f32f9..a604e2b83 100644
--- a/data/modules.example.conf
+++ b/data/modules.example.conf
@@ -8,6 +8,20 @@
*/
/*
+ * bs_autoassign
+ *
+ * Allows service bots to be automatically assigned to channels upon registration.
+ */
+#module { name = "bs_autoassign" }
+bs_autoassign
+{
+ /*
+ * Automatically assign ChanServ to channels upon registration.
+ */
+ bot = "ChanServ"
+}
+
+/*
* cs_appendtopic
*
* Adds the APPENDTOPIC command to ChanServ, which allows users to easially append text to
diff --git a/modules/extra/bs_autoassign.cpp b/modules/extra/bs_autoassign.cpp
new file mode 100644
index 000000000..9e98b5c95
--- /dev/null
+++ b/modules/extra/bs_autoassign.cpp
@@ -0,0 +1,51 @@
+/*
+ *
+ * (C) 2003-2011 Anope Team
+ * Contact us at team@anope.org
+ *
+ * Please read COPYING and README for further details.
+ *
+ * Based on the original code of Epona by Lara.
+ * Based on the original code of Services by Andy Church.
+ */
+
+#include "module.h"
+
+class BSAutoAssign : public Module
+{
+ Anope::string bot;
+
+ public:
+ BSAutoAssign(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, SUPPORTED)
+ {
+ this->SetAuthor("Anope");
+
+ Implementation i[] = { I_OnChanRegistered, I_OnReload };
+ ModuleManager::Attach(i, this, 2);
+
+ this->OnReload();
+ }
+
+ void OnChanRegistered(ChannelInfo *ci)
+ {
+ if (this->bot.empty())
+ return;
+
+ BotInfo *bi = findbot(this->bot);
+ if (bi == NULL)
+ {
+ Log() << "bs_autoassign is configured to assign bot " << this->bot << ", but it does not exist?";
+ return;
+ }
+
+ bi->Assign(NULL, ci);
+ }
+
+ void OnReload()
+ {
+ ConfigReader config;
+ this->bot = config.ReadValue("bs_autoassign", "bot", "", 0);
+ }
+};
+
+MODULE_INIT(BSAutoAssign)