From fa70e3360757075e45b08340b0ab3a5b585af826 Mon Sep 17 00:00:00 2001 From: brain Date: Sun, 18 Jan 2009 20:10:12 +0000 Subject: Hmm, why didnt this go through before? git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@10973 e03df62e-2008-0410-955e-edbf42e46eb7 --- conf/modules.conf.example | 28 ++++++++++++++++++++++++++++ src/modules/m_alias.cpp | 10 ++++++++-- 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/conf/modules.conf.example b/conf/modules.conf.example index dc99a61ba..c49967f92 100644 --- a/conf/modules.conf.example +++ b/conf/modules.conf.example @@ -71,6 +71,14 @@ # Alias module: Allows you to define server-side command aliases # # +# Fantasy settings: +# +# +# +# prefix: +# Set the prefix for in-channel aliases (fantasy commands) to the +# specified character. If not set, the default is "!". +# #-#-#-#-#-#-#-#-#-#-#- ALIAS DEFINITIONS -#-#-#-#-#-#-#-#-#-#-#-#-#-# # # # If you have the m_alias.so module loaded, you may also define # @@ -86,6 +94,14 @@ # matched, or it has no format value. Aliases are # # read from the top of the file to the bottom. # # # +# usercommand - If this is true, the alias can be run simply as # +# /aliasname. Defaults to true. # +# # +# channelcommand - If this is true, the alias can be used as an # +# in-channel alias or 'fantasy command', prefixed # +# by the fantasy prefix character, !aliasname by # +# default. Defaults to false. # +# # # format - If this is defined, the parameters of the alias # # must match this glob pattern. For example if you # # want the first parameter to start with a # for # @@ -152,6 +168,18 @@ # # +# +# You may also add aliases to trigger based on something said in a +# channel, aka 'fantasy' commands, configured in the same manner as any +# other alias, with usercommand="no" and channelcommand="yes" The +# command must be preceded by the fantasy prefix when used. +# +# +# +# This would be used as "!cs ", with the channel +# being automatically inserted after the command in the message to +# ChanServ, assuming the fantasy prefix is "!". #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# # Allowinvite module: Gives channel mode +A to allow all users to use diff --git a/src/modules/m_alias.cpp b/src/modules/m_alias.cpp index e3e2e9a5d..c914aad66 100644 --- a/src/modules/m_alias.cpp +++ b/src/modules/m_alias.cpp @@ -51,6 +51,9 @@ class Alias : public classbase class ModuleAlias : public Module { private: + + char fprefix; + /* We cant use a map, there may be multiple aliases with the same name. * We can, however, use a fancy invention: the multimap. Maps a key to one or more values. * -- w00t @@ -60,6 +63,9 @@ class ModuleAlias : public Module virtual void ReadAliases() { ConfigReader MyConf(ServerInstance); + + std::string fpre = MyConf.ReadValue("fantasy","prefix",0); + fprefix = fpre.empty() ? '!' : fpre[0]; Aliases.clear(); for (int i = 0; i < MyConf.Enumerate("alias"); i++) @@ -214,13 +220,13 @@ class ModuleAlias : public Module ServerInstance->Logs->Log("FANTASY", DEBUG, "fantasy: looking at fcommand %s", fcommand.c_str()); // we don't want to touch non-fantasy stuff - if (*fcommand.c_str() != '!') + if (*fcommand.c_str() != fprefix) { ServerInstance->Logs->Log("FANTASY", DEBUG, "fantasy: not a fcommand"); return 0; } - // nor do we give a shit about the ! + // nor do we give a shit about the prefix fcommand.erase(fcommand.begin()); std::transform(fcommand.begin(), fcommand.end(), fcommand.begin(), ::toupper); ServerInstance->Logs->Log("FANTASY", DEBUG, "fantasy: now got %s", fcommand.c_str()); -- cgit v1.2.3