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]]