我的TEMPMUTE命令出现错误 [英] I'm getting a certain error on my TEMPMUTE command
本文介绍了我的TEMPMUTE命令出现错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我已经创建了一个临时代码,或者可以说我在stackoverflow上找到了一个.我复制了代码,但似乎无法正常工作.如果现在有谁能帮助我,谢谢!代码是;
I have made a tempmute code or we can say I found one on stackoverflow. I copied the code but it doesn't seem to work. If anyone of you now and can help me thanks! The code is;
@commands.has_permissions(kick_members=True)
async def tempmute(ctx, member: discord.Member, time=0, reason=None):
if not member or time == 0:
return
elif reason == None:
reason = 'No reason'
try:
if time_list[2] == "s":
time_in_s = int(time_list[1])
if time_list[2] == "min":
time_in_s = int(time_list[1]) * 60
if time_list[2] == "h":
time_in_s = int(time_list[1]) * 60 * 60
if time_list[2] == "d":
time_in_s = int(time_list[1]) * 60 * 60 * 60
except:
time_in_s = 0
tempmuteembed = discord.Embed(colour=discord.Colour.from_rgb(0, 255, 0))
tempmuteembed.set_author(icon_url=member.avatar_url, name=f'{member} has been tempmuted!')
tempmuteembed.set_footer(text=f"{ctx.guild.name} • {datetime.strftime(datetime.now(), '%d.%m.%Y at %I:%M %p')}")
tempmuteembed.add_field(name=f'ID:', value=f'{member.id}', inline=False)
tempmuteembed.add_field(name='Reason:', value=f"{reason}")
tempmuteembed.add_field(name='Duration:', value=f"{time}")
tempmuteembed.add_field(name=f'By:', value=f'{ctx.author.name}#{ctx.author.discriminator}', inline=False)
await ctx.send(embed=tempmuteembed)
guild = ctx.guild
for role in guild.roles:
if role.name == 'Muted':
await member.add_roles(role)
await ctx.send(embed=tempmuteembed)
await asyncio.sleep(time_in_s)
await member.remove_roles(role)
return
我得到的错误如下;
discord.ext.commands.errors.BadArgument: Converting to "int" failed for parameter "time".
推荐答案
This is because Command
s have Converter
s that are run on their arguments. Since time
defaults to 0
, which is of type int
, the library tries to convert time
to an int
. However, this conversion will fail if you give a unit suffix like 10m
, since int('10m')
fails with a ValueError
, which in turn raises BadArgument
.
要解决此问题,只需在您的 time
参数中添加适当的类型注释:
To fix this, simply add a proper type annotation to your time
parameter:
from typing import Union
async def tempmute(ctx, member: discord.Member, time: Union[int, str] = 0, reason=None):
这篇关于我的TEMPMUTE命令出现错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文