aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--modules/channel_op.py5
-rw-r--r--modules/permissions/__init__.py5
-rw-r--r--src/utils/__init__.py12
3 files changed, 18 insertions, 4 deletions
diff --git a/modules/channel_op.py b/modules/channel_op.py
index 11d5a0d5..749e7764 100644
--- a/modules/channel_op.py
+++ b/modules/channel_op.py
@@ -19,8 +19,9 @@ class InvalidTimeoutException(Exception):
@utils.export("channelset", utils.Setting("ban-format",
"Set ban format ($n = nick, $u = username, $h = hostname)",
example="*!$u@$h"))
-@utils.export("serverset", utils.Setting("mute-method",
- "Set this server's method of muting users", example="qmode"))
+@utils.export("serverset", utils.OptionsSetting("mute-method",
+ ["qmode", "insp", "unreal"], "Set this server's method of muting users",
+ example="qmode"))
class Module(ModuleManager.BaseModule):
_name = "ChanOp"
diff --git a/modules/permissions/__init__.py b/modules/permissions/__init__.py
index f27033bf..aae4d500 100644
--- a/modules/permissions/__init__.py
+++ b/modules/permissions/__init__.py
@@ -9,8 +9,9 @@ REQUIRES_IDENTIFY = "You need to be identified to use that command"
REQUIRES_IDENTIFY_INTERNAL = ("You need to be identified to use that command "
"(/msg %s register | /msg %s identify)")
-@utils.export("serverset", utils.Setting("identity-mechanism",
- "Set the identity mechanism for this server", example="ircv3-account"))
+@utils.export("serverset", utils.OptionsSetting("identity-mechanism",
+ ["internal", "ircv3-account"], "Set the identity mechanism for this server",
+ example="ircv3-account"))
class Module(ModuleManager.BaseModule):
@utils.hook("new.user")
def new_user(self, event):
diff --git a/src/utils/__init__.py b/src/utils/__init__.py
index 5ad057c8..545360c8 100644
--- a/src/utils/__init__.py
+++ b/src/utils/__init__.py
@@ -257,3 +257,15 @@ class IntSetting(Setting):
return int(stripped)
return None
+class OptionsSetting(Setting):
+ def __init__(self, name: str, options: typing.List[str], help: str=None,
+ example: str=None):
+ self._options = options
+ Setting.__init__(name, help, example)
+
+ def parse(self, value: str) -> typing.Any:
+ value_lower = value.lower()
+ for option in self._options:
+ if option.lower() == value_lower:
+ return option
+ return None