Fix bug when commands have no body

master
DustyP 6 years ago
parent 1d8b16add0
commit 2abee4572d

@ -62,7 +62,9 @@ class Bot(Client):
if not raw_body.startswith(prefix): if not raw_body.startswith(prefix):
return None return None
raw_body = raw_body.lstrip(prefix) raw_body = raw_body.lstrip(prefix)
called_with, body = raw_body.split(' ', 1) body_list = raw_body.split(' ', 1)
called_with = body_list[0]
body = body_list[1] if len(body_list) > 1 else None
return Context.get_context(event, prefix, called_with, body) return Context.get_context(event, prefix, called_with, body)
async def process_command(self, event): async def process_command(self, event):
@ -73,7 +75,7 @@ class Bot(Client):
command = self.commands.get(ctx.called_with) command = self.commands.get(ctx.called_with)
if not command: if not command:
return return
await command.invoke(ctx, ctx.body.split(' ')) await command.invoke(ctx, ctx.body.split(' ') if ctx.body else None)
def listener(self, name=None): def listener(self, name=None):
def decorator(func): def decorator(func):

@ -69,13 +69,16 @@ class Command:
args = [] args = []
kwargs = {} kwargs = {}
params = self.parser.parse_args(args_list) if args_list:
params = self.parser.parse_args(args_list)
for key, value in iterator:
value: inspect.Parameter for key, value in iterator:
if value.kind == value.VAR_POSITIONAL or value.kind == value.POSITIONAL_OR_KEYWORD: value: inspect.Parameter
args.extend(params.__dict__[key]) if value.kind == value.VAR_POSITIONAL or value.kind == value.POSITIONAL_OR_KEYWORD:
else: args.extend(params.__dict__[key])
kwargs[key] = params.__dict__[key] else:
kwargs[key] = params.__dict__[key]
await self.function(ctx, *args, **kwargs)
await self.function(ctx, *args, **kwargs)
else:
await self.function(ctx)

Loading…
Cancel
Save