Discord.py中DiscordBotReminder命令中的另一个问题



最近我制作了一个discord bot提醒命令,并遇到了一个问题,但多亏了Nurqm的帮助,我才得以修复。然而,我在时间设置中遇到了另一个问题,当我执行/reminder 5days Fix the server时,它提醒我在5天后修复服务器,我得到了一个ValueError。

这是我的代码:

@client.command(case_insensitive = True, aliases = ["remind", "remindme", "remind_me"])
@commands.bot_has_permissions(attach_files = True, embed_links = True)
async def reminder(ctx, time, *, reminder):
print(time)
print(reminder)
user = ctx.message.author
embed = discord.Embed(color=0x55a7f7, timestamp=datetime.utcnow())
embed.set_footer(text="If you have any questions, suggestions or bug reports, please join our support Discord Server: link hidden", icon_url=f"{client.user.avatar_url}")
seconds = 0
if reminder is None:
embed.add_field(name='Warning', value='Please specify what do you want me to remind you about.') # Error message
if time.lower().endswith("days"):
seconds += int(time[:-4]) * 60 * 60 * 24
counter = f"{seconds // 60 // 60 // 24} days"
if time.lower().endswith("h"):
seconds += int(time[:-1]) * 60 * 60
counter = f"{seconds // 60 // 60} hours"
elif time.lower().endswith("m"):
seconds += int(time[:-1]) * 60
counter = f"{seconds // 60} minutes"
elif time.lower().endswith("s"):
seconds += int(time[:-1])
counter = f"{seconds} seconds"
if seconds == 0:
embed.add_field(name='Warning',
value='Please specify a proper duration, send reminder_help for more information.')
elif seconds < 300:
embed.add_field(name='Warning',
value='You have specified a too short duration!nMinimum duration is 5 minutes.')
elif seconds > 7776000:
embed.add_field(name='Warning', value='You have specified a too long duration!nMaximum duration is 90 days.')
else:
await ctx.send(f"Alright, I will remind you about {reminder} in {counter}.")
await asyncio.sleep(seconds)
await ctx.send(f"Hi, you asked me to remind you about {reminder} {counter} ago.")
return
await ctx.send(embed=embed)

错误为:Command raised an exception: ValueError: invalid literal for int() with base 10: '5day'

如果有人知道如何处理这个错误的任何信息,请通知我。提前感谢。

我刚刚想好了为什么这不起作用,因为你每次都会创建一个if statement,所以当你键入/reminder 10days test时,它会触发天,但也会触发elif time.lower().endswith("s"):。如果您将此if time.lower().endswith("h"):if statement更改为elif statement,您的问题将得到解决。

相关内容

最新更新