Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Discord.py Tempmute命令_Python_Bots_Discord_Discord.py_Discord.py Rewrite - Fatal编程技术网

Python Discord.py Tempmute命令

Python Discord.py Tempmute命令,python,bots,discord,discord.py,discord.py-rewrite,Python,Bots,Discord,Discord.py,Discord.py Rewrite,我正在尝试在discord.py中生成tempmute命令。 我已经做出了实际的命令,但我希望能够使用1s表示1秒,1m表示一分钟,1h表示一小时,1d表示一天 目前,我只能以秒为单位使用time参数。我怎样才能让它像我之前提到的那样 这是我的密码: @client.command() @commands.has_any_role(569518553112510475, 641312393447866398, 673530318166294550, 670694992314105927, 680

我正在尝试在discord.py中生成tempmute命令。 我已经做出了实际的命令,但我希望能够使用1s表示1秒,1m表示一分钟,1h表示一小时,1d表示一天

目前,我只能以秒为单位使用time参数。我怎样才能让它像我之前提到的那样

这是我的密码:

@client.command()
@commands.has_any_role(569518553112510475, 641312393447866398, 673530318166294550, 670694992314105927, 680137747822018560, 689135000414715980, 677844825004834827, 677848974224392192)
async def tempmute(ctx, member : discord.Member, time=0, reason=None):
    if not member or time == 0 or time == str:
        await ctx.channel.send(embed=commanderror)
        return
    elif reason == None:
        reason = "No Reason Provided"

    muteRole = discord.utils.get(ctx.guild.roles, id=663076470180151339)
    await member.add_roles(muteRole)

    tempMuteEmbed = discord.Embed(colour=embedcolour, description=f"**Reason:** {reason}")
    tempMuteEmbed.set_author(name=f"{member} Has Been Muted", icon_url=f"{member.avatar_url}")
    tempMuteEmbed.set_footer(text=embedfooter)

    await ctx.channel.send(embed=tempMuteEmbed)

    tempMuteModLogEmbed = discord.Embed(color=embedcolour)
    tempMuteModLogEmbed.set_author(name=f"[MUTE] {member}", icon_url=f"{member.avatar_url}")
    tempMuteModLogEmbed.add_field(name="User", value=f"{member.mention}")
    tempMuteModLogEmbed.add_field(name="Moderator", value=f"{ctx.message.author}")
    tempMuteModLogEmbed.add_field(name="Reason", value=f"{reason}")
    tempMuteModLogEmbed.add_field(name="Duration", value=f"{str(time)}")
    tempMuteModLogEmbed.set_footer(text=embedfooter)
    modlog = client.get_channel(638783464438759464)
    await modlog.send(embed=tempMuteModLogEmbed)

    tempMuteDM = discord.Embed(color=embedcolour, title="Mute Notification", description="You Were Muted In **The Official Vanmanyo Discord Server**")
    tempMuteDM.set_footer(text=embedfooter)
    tempMuteDM.add_field(name="Reason", value=f"{reason}")
    tempMuteDM.add_field(name="Duration", value=f"{time}")

    userToDM = client.get_user(member.id)
    await userToDM.send(embed=tempMuteDM)

    await asyncio.sleep(time)
    await member.remove_roles(muteRole)

    unMuteModLogEmbed = discord.Embed(color=embedcolour)
    unMuteModLogEmbed.set_author(name=f"[UNMUTE] {member}", icon_url=f"{member.avatar_url}")
    unMuteModLogEmbed.add_field(name="User", value=f"{member.mention}")
    unMuteModLogEmbed.set_footer(text=embedfooter)
    modlog = client.get_channel(638783464438759464)
    await modlog.send(embed=unMuteModLogEmbed)

您可以创建一个单独的函数,将值转换为所需的秒数

例如:

time_convert = {"s": 1, "m": 60, "h": 3600, "d": 86400}

def convert_time_to_seconds(time):
    try:
        return int(time[:-1]) * time_convert[time[-1]]
    except:
        return time

这将尝试转换时间。如果它不能转换它,它将只返回原始值。因此,您可以使用“40”或“40”。

让机器人接受“时间”之后的每个字符作为“原因”

async def tempmute(ctx, member : discord.Member, time=0,*, reason=None):