from twisted.plugin import IPlugin
from txircd.module_interface import IModuleData, ModuleData
from txircd.utils import ModeType
from zope.interface import implements

class AutoUserModes(ModuleData):
	implements(IPlugin, IModuleData)

	name = "AutoUserModes"

	def actions(self):
		return [ ("welcome", 50, self.autoSetUserModes) ]

	def autoSetUserModes(self, user):
		try:
			modes = self.ircd.config["client_umodes_on_connect"]
			params = modes.split()
			modes = params.pop(0)
			parsedModes = []
			for mode in modes:
				if mode not in self.ircd.userModeTypes:
					continue
				modeType = self.ircd.userModeTypes[mode]
				if modeType in (ModeType.List, ModeType.ParamOnUnset, ModeType.Param):
					parsedModes.append((True, mode, params.pop(0)))
				else:
					parsedModes.append((True, mode, None))
			user.setModes(parsedModes, self.ircd.serverID)
		except KeyError:
			pass # No umodes defined. No action required.

autoUserModes = AutoUserModes()
from twisted.plugin import IPlugin
from txircd.module_interface import IModuleData, ModuleData
from txircd.utils import ModeType
from zope.interface import implements

class AutoUserModes(ModuleData):
	implements(IPlugin, IModuleData)

	name = "AutoUserModes"

	def actions(self):
		return [ ("welcome", 50, self.autoSetUserModes) ]

	def autoSetUserModes(self, user):
		try:
			modes = self.ircd.config["client_umodes_on_connect"]
			params = modes.split()
			modes = params.pop(0)
			parsedModes = []
			for mode in modes:
				if mode not in self.ircd.userModeTypes:
					continue
				modeType = self.ircd.userModeTypes[mode]
				if modeType != ModeType.NoParam:
					parsedModes.append((True, mode, params.pop(0)))
				else:
					parsedModes.append((True, mode, None))
			user.setModes(parsedModes, self.ircd.serverID)
		except KeyError:
			pass # No umodes defined. No action required.

autoUserModes = AutoUserModes()
Simplify the AutoUserModes mode type check
Simplify the AutoUserModes mode type check

  from twisted.plugin import IPlugin
  from txircd.module_interface import IModuleData, ModuleData
  from txircd.utils import ModeType
  from zope.interface import implements
  
  class AutoUserModes(ModuleData):
  	implements(IPlugin, IModuleData)
  
  	name = "AutoUserModes"
  
  	def actions(self):
  		return [ ("welcome", 50, self.autoSetUserModes) ]
  
  	def autoSetUserModes(self, user):
  		try:
  			modes = self.ircd.config["client_umodes_on_connect"]
  			params = modes.split()
  			modes = params.pop(0)
  			parsedModes = []
  			for mode in modes:
  				if mode not in self.ircd.userModeTypes:
  					continue
  				modeType = self.ircd.userModeTypes[mode]
- 				if modeType in (ModeType.List, ModeType.ParamOnUnset, ModeType.Param):
+ 				if modeType != ModeType.NoParam:
  					parsedModes.append((True, mode, params.pop(0)))
  				else:
  					parsedModes.append((True, mode, None))
  			user.setModes(parsedModes, self.ircd.serverID)
  		except KeyError:
  			pass # No umodes defined. No action required.
  
  autoUserModes = AutoUserModes()
Simplify the AutoUserModes mode type check
## Code Before:
from twisted.plugin import IPlugin
from txircd.module_interface import IModuleData, ModuleData
from txircd.utils import ModeType
from zope.interface import implements

class AutoUserModes(ModuleData):
	implements(IPlugin, IModuleData)

	name = "AutoUserModes"

	def actions(self):
		return [ ("welcome", 50, self.autoSetUserModes) ]

	def autoSetUserModes(self, user):
		try:
			modes = self.ircd.config["client_umodes_on_connect"]
			params = modes.split()
			modes = params.pop(0)
			parsedModes = []
			for mode in modes:
				if mode not in self.ircd.userModeTypes:
					continue
				modeType = self.ircd.userModeTypes[mode]
				if modeType in (ModeType.List, ModeType.ParamOnUnset, ModeType.Param):
					parsedModes.append((True, mode, params.pop(0)))
				else:
					parsedModes.append((True, mode, None))
			user.setModes(parsedModes, self.ircd.serverID)
		except KeyError:
			pass # No umodes defined. No action required.

autoUserModes = AutoUserModes()
## Instruction:
Simplify the AutoUserModes mode type check
## Code After:
from twisted.plugin import IPlugin
from txircd.module_interface import IModuleData, ModuleData
from txircd.utils import ModeType
from zope.interface import implements

class AutoUserModes(ModuleData):
	implements(IPlugin, IModuleData)

	name = "AutoUserModes"

	def actions(self):
		return [ ("welcome", 50, self.autoSetUserModes) ]

	def autoSetUserModes(self, user):
		try:
			modes = self.ircd.config["client_umodes_on_connect"]
			params = modes.split()
			modes = params.pop(0)
			parsedModes = []
			for mode in modes:
				if mode not in self.ircd.userModeTypes:
					continue
				modeType = self.ircd.userModeTypes[mode]
				if modeType != ModeType.NoParam:
					parsedModes.append((True, mode, params.pop(0)))
				else:
					parsedModes.append((True, mode, None))
			user.setModes(parsedModes, self.ircd.serverID)
		except KeyError:
			pass # No umodes defined. No action required.

autoUserModes = AutoUserModes()