I am not sure what I am doing wrong. Previously, the code was this:
volume = min(60, max(30, volume))
However, after trying with configparser, I keep getting a 500 error on my Twilio Server.
volume_min = configParser.get('config_searchandplay', 'volume_min')
volume_max = configParser.get('config_searchandplay', 'volume_max')
volume = min(volume_max, max(volume_min, volume)) # Max Volume Spam Protection
CONFIG.ini
:
[config_searchandplay]
#Volume Protection
volume_max = 90
volume_min = 10
The problem of your method is that ConfigParser.get
gives you a (unicode) string. So you should convert the values first to number (using int()
or float()
):
vol_max = int(configParser.get('config_searchandplay', 'volume_max'))
vol_min = int(configParser.get('config_searchandplay', 'volume_min'))
volume = min(vol_max, max(vol_min, volume))
Or use the respective convenience methods: ConfigParser.getint
or ConfigParser.getfloat
:
vol_max = configParser.getint('config_searchandplay', 'volume_max')
vol_min = configParser.getint('config_searchandplay', 'volume_min')
Although min
works on strings:
>>> min(u'90',u'10')
u'10'
It will not always give the answer you are looking for since it does a string comparison. The following is what you want to avoid:
>>> min(u'9',u'10')
u'10'
Therefore you need to convert the string to a number:
>>> min(int(u'9'),(u'90'))
9