invalid literal for int() with base 10: '' в discord.py

Появляется ошибка invalid literal for int() with base 10: '' при вводе команды в discord.py.

Код:

@client.command(pass_context=True)
async def tempmute(ctx, member:discord.Member = None, time = None, *, reason = None):
    mute_role = discord.utils.get(ctx.message.guild.roles, id=968192093229043732)
    author = ctx.message.author.id
    time_convert = {"s": 1, "m": 60, "h": 3600, "d": 86400}
    if member == None:
        await ctx.send(f'Укажите пользователя!')
    elif time == None:
        await ctx.send(f'Укажите время мьюта!')
    elif reason == None:
        reason = 'Не указано'
    amount = int(time[:-1]) * time_convert[time[-1]]
    await member.add_roles(mute_role)
    await asyncio.sleep(amount)
    await ctx.send(f'Вы замутили пользователя бла бла бла')
    await member.remove_roles(mute_role)

Ранее такой ошибки не было, а сейчас есть.


Ответы (1 шт):

Автор решения: Universall

Если ввести боту time без указания единицы времени, то time[:-1] вернёт пустую строку которую нельзя преобразовать в int. Вы можете сделать проверку на корректность вначале функции:

import re


async def tempmute(ctx, member: discord.Member, time, *, reason = None):
    time_convert = {"s": 1, "m": 60, "h": 3600, "d": 86400}
    if not re.match(r"\d+[smhd]", time):
        await ctx.send("Ошибка ввода времени!")
        return
    amount = int(time[:-1]) * time_convert[time[-1]]
→ Ссылка