У меня есть команда vote
, которая принимает 2 подкоманды start
или end
. Идея состоит в том, что если он не указан, он будет использовать значение по умолчанию, которое я могу установить. В противном случае он анализирует его с помощью функций start
и end
.
Так, например, выполнение $vote new start 5m
будет использовать время окончания по умолчанию и проанализировать время начала.
Выполнение $vote new end 5m
будет использовать время начала по умолчанию и проанализировать время окончания.
Выполнение $vote new start 5m end 10m
будет анализировать как время начала, так и время окончания.
@vote.group(pass_context=True, invoke_without_command=True)
async def new(ctx):
log.debug('New')
# Do logic for default values here
@new.command()
async def start(ctx, start_time):
# Parse start time
delta = convert_to_timedelta(start_time)
vote_date = datetime.today() + delta
@new.command()
async def end(ctx, end_time):
# Parse end time
delta = convert_to_timedelta(end_time)
Но есть ли правильный способ цепочки этот? В моем текущем решении использовалась только 1 команда, new
, и я проанализировал аргументы с помощью чего-то вроде if 'start' in args
.
Будет ли это лучший способ сделать это, или есть более правильный способ связать необязательные подкоманды?