added support for pitch= and tempo= to yt yts and sayen
This commit is contained in:
@@ -10,106 +10,110 @@ from importlib import reload
|
||||
from . import Commands
|
||||
|
||||
class CommandHandler():
|
||||
def __init__(self, Torchlight):
|
||||
self.Logger = logging.getLogger(__class__.__name__)
|
||||
self.Torchlight = Torchlight
|
||||
self.Commands = []
|
||||
self.NeedsReload = False
|
||||
def __init__(self, Torchlight):
|
||||
self.Logger = logging.getLogger(__class__.__name__)
|
||||
self.Torchlight = Torchlight
|
||||
self.Commands = []
|
||||
self.NeedsReload = False
|
||||
|
||||
def Setup(self):
|
||||
Counter = len(self.Commands)
|
||||
self.Commands.clear()
|
||||
if Counter:
|
||||
self.Logger.info(sys._getframe().f_code.co_name + " Unloaded {0} commands!".format(Counter))
|
||||
def Setup(self):
|
||||
Counter = len(self.Commands)
|
||||
self.Commands.clear()
|
||||
if Counter:
|
||||
self.Logger.info(sys._getframe().f_code.co_name + " Unloaded {0} commands!".format(Counter))
|
||||
|
||||
Counter = 0
|
||||
for subklass in sorted(Commands.BaseCommand.__subclasses__(), key = lambda x: x.Order, reverse = True):
|
||||
try:
|
||||
Command = subklass(self.Torchlight)
|
||||
if hasattr(Command, "_setup"):
|
||||
Command._setup()
|
||||
except Exception as e:
|
||||
self.Logger.error(traceback.format_exc())
|
||||
else:
|
||||
self.Commands.append(Command)
|
||||
Counter += 1
|
||||
Counter = 0
|
||||
for subklass in sorted(Commands.BaseCommand.__subclasses__(), key = lambda x: x.Order, reverse = True):
|
||||
try:
|
||||
Command = subklass(self.Torchlight)
|
||||
if hasattr(Command, "_setup"):
|
||||
Command._setup()
|
||||
except Exception as e:
|
||||
self.Logger.error(traceback.format_exc())
|
||||
else:
|
||||
self.Commands.append(Command)
|
||||
Counter += 1
|
||||
|
||||
self.Logger.info(sys._getframe().f_code.co_name + " Loaded {0} commands!".format(Counter))
|
||||
self.Logger.info(sys._getframe().f_code.co_name + " Loaded {0} commands!".format(Counter))
|
||||
|
||||
def Reload(self):
|
||||
try:
|
||||
reload(Commands)
|
||||
except Exception as e:
|
||||
self.Logger.error(traceback.format_exc())
|
||||
else:
|
||||
self.Setup()
|
||||
def Reload(self):
|
||||
try:
|
||||
reload(Commands)
|
||||
except Exception as e:
|
||||
self.Logger.error(traceback.format_exc())
|
||||
else:
|
||||
self.Setup()
|
||||
|
||||
async def HandleCommand(self, line, player):
|
||||
Message = line.split(sep = ' ', maxsplit = 1)
|
||||
if len(Message) < 2:
|
||||
Message.append("")
|
||||
Message[1] = Message[1].strip()
|
||||
async def HandleCommand(self, line, player):
|
||||
Message = line.split(sep = ' ', maxsplit = 1)
|
||||
if len(Message) < 2:
|
||||
Message.append("")
|
||||
Message[1] = Message[1].strip()
|
||||
|
||||
if Message[1] and self.Torchlight().LastUrl:
|
||||
Message[1] = Message[1].replace("!last", self.Torchlight().LastUrl)
|
||||
line = Message[0] + ' ' + Message[1]
|
||||
if Message[1] and self.Torchlight().LastUrl:
|
||||
Message[1] = Message[1].replace("!last", self.Torchlight().LastUrl)
|
||||
line = Message[0] + ' ' + Message[1]
|
||||
|
||||
Level = 0
|
||||
if player.Access:
|
||||
Level = player.Access["level"]
|
||||
Level = 0
|
||||
if player.Access:
|
||||
Level = player.Access["level"]
|
||||
|
||||
RetMessage = None
|
||||
Ret = None
|
||||
for Command in self.Commands:
|
||||
for Trigger in Command.Triggers:
|
||||
Match = False
|
||||
RMatch = None
|
||||
if isinstance(Trigger, tuple):
|
||||
if Message[0].lower().startswith(Trigger[0], 0, Trigger[1]):
|
||||
Match = True
|
||||
elif isinstance(Trigger, str):
|
||||
if Message[0].lower() == Trigger.lower():
|
||||
Match = True
|
||||
else: # compiled regex
|
||||
RMatch = Trigger.search(line)
|
||||
if RMatch:
|
||||
Match = True
|
||||
RetMessage = None
|
||||
Ret = None
|
||||
for Command in self.Commands:
|
||||
for Trigger in Command.Triggers:
|
||||
Match = False
|
||||
RMatch = None
|
||||
if isinstance(Trigger, tuple):
|
||||
if Message[0].lower().startswith(Trigger[0], 0, Trigger[1]):
|
||||
Match = True
|
||||
elif isinstance(Trigger, str):
|
||||
if Message[0].lower() == Trigger.lower():
|
||||
Match = True
|
||||
else: # compiled regex
|
||||
RMatch = Trigger.search(line)
|
||||
if RMatch:
|
||||
Match = True
|
||||
|
||||
if not Match:
|
||||
continue
|
||||
if not Match:
|
||||
continue
|
||||
|
||||
self.Logger.debug(sys._getframe().f_code.co_name + " \"{0}\" Match -> {1} | {2}".format(player.Name, Command.__class__.__name__, Trigger))
|
||||
self.Logger.debug(sys._getframe().f_code.co_name + " \"{0}\" Match -> {1} | {2}".format(player.Name, Command.__class__.__name__, Trigger))
|
||||
|
||||
if Level < Command.Level:
|
||||
RetMessage = "You do not have access to this command! (You: {0} | Required: {1})".format(Level, Command.Level)
|
||||
continue
|
||||
if Level < Command.Level:
|
||||
RetMessage = "You do not have access to this command! (You: {0} | Required: {1})".format(Level, Command.Level)
|
||||
continue
|
||||
|
||||
try:
|
||||
if RMatch:
|
||||
Ret = await Command._rfunc(line, RMatch, player)
|
||||
else:
|
||||
Ret = await Command._func(Message, player)
|
||||
except Exception as e:
|
||||
self.Logger.error(traceback.format_exc())
|
||||
self.Torchlight().SayChat("Error: {0}".format(str(e)))
|
||||
try:
|
||||
if RMatch:
|
||||
Ret = await Command._rfunc(line, RMatch, player)
|
||||
else:
|
||||
#self.Logger.debug(f"_rfunc line: {line}")
|
||||
if line.startswith("!yt"): #transfering the line if its !yt or !yts in case people want to include pitch or tempo.
|
||||
Ret = await Command._func(Message, player, line)
|
||||
else:
|
||||
Ret = await Command._func(Message, player)
|
||||
except Exception as e:
|
||||
self.Logger.error(traceback.format_exc())
|
||||
self.Torchlight().SayChat("Error: {0}".format(str(e)))
|
||||
|
||||
RetMessage = None
|
||||
RetMessage = None
|
||||
|
||||
if isinstance(Ret, str):
|
||||
Message = Ret.split(sep = ' ', maxsplit = 1)
|
||||
Ret = None
|
||||
if isinstance(Ret, str):
|
||||
Message = Ret.split(sep = ' ', maxsplit = 1)
|
||||
Ret = None
|
||||
|
||||
if Ret != None and Ret > 0:
|
||||
break
|
||||
if Ret != None and Ret > 0:
|
||||
break
|
||||
|
||||
if Ret != None and Ret >= 0:
|
||||
break
|
||||
if Ret != None and Ret >= 0:
|
||||
break
|
||||
|
||||
if RetMessage:
|
||||
self.Torchlight().SayPrivate(player, RetMessage)
|
||||
if RetMessage:
|
||||
self.Torchlight().SayPrivate(player, RetMessage)
|
||||
|
||||
if self.NeedsReload:
|
||||
self.NeedsReload = False
|
||||
self.Reload()
|
||||
if self.NeedsReload:
|
||||
self.NeedsReload = False
|
||||
self.Reload()
|
||||
|
||||
return Ret
|
||||
return Ret
|
||||
|
||||
Reference in New Issue
Block a user