SpiceBot-migrated/sopel_modules/SpiceBot/Server.py
2019-07-04 11:37:32 -04:00

75 lines
2.5 KiB
Python

# coding=utf8
from __future__ import unicode_literals, absolute_import, division, print_function
"""
This is the SpiceBot Server system.
"""
from .Config import config as botconfig
class BotServer():
"""This Logs all server values of relevance'"""
def __init__(self):
self.linenumber = 0
self.dict = {
"host_connect": botconfig.core.host,
"host": botconfig.core.host,
}
self.isupport = {
"TARGMAX": {
"KICK": 1,
'NOTICE': 1,
'PRIVMSG': 1,
},
}
def rpl_welcome(self, trigger):
self.dict["host"] = str(trigger.sender).lower()
def parse_reply_isupport(self, trigger):
# check against 005_Bounce
if trigger.args[-1] != 'are supported by this server':
return
parameters = trigger.args[1:-1]
for param in parameters:
# check for value associated with the parameter
if '=' not in param:
self.isupport[str(param)] = None
else:
key, raw_value = param.split('=')
if ',' not in raw_value:
if str(raw_value).isdigit():
setting_value = int(raw_value)
self.isupport[str(key)] = raw_value
else:
if str(key) not in list(self.isupport.keys()):
self.isupport[str(key)] = {}
if not isinstance(self.isupport[str(key)], dict):
self.isupport[str(key)] = {}
settings = str(raw_value).split(',')
for setting in settings:
if ":" not in setting:
self.isupport[str(key)][str(setting)] = None
else:
setting_name, setting_value = setting.split(":")
try:
setting_value = str(setting).split(':')[1] or None
except IndexError:
setting_value = None
if str(setting_value).isdigit():
setting_value = int(setting_value)
self.isupport[str(key)][str(setting_name)] = setting_value
server = BotServer()