此语法是否正确地取消对成员的挂起?

2024-10-02 00:22:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试执行一个暂停命令,但不确定它是否会在一段时间后正确取消暂停。我想在前缀后使用1m/30s/5h/2d挂起,但它不会取消挂起。我不确定我等待的时间是否足够长,但是它没有响应或产生错误

@bot.command()
@commands.has_any_role('✪ Commissioner ✪', '✪ Vice Commissioner ✪', '✪ Board of Directors ✪')
async def suspend(ctx, member:discord.Member, time, *, reason):
    guild = bot.get_guild(766292887914151949)
    role_name = 'Suspended'
    role = discord.utils.get(guild.roles, name='Suspended')
    embed = discord.Embed(colour = discord.Colour.red())
 
    embed.add_field(name='<a:CheckMark:768095274949935146> **Success!**', value=f'{member.mention} has been successfully suspended for {time} for {reason}')
    
    # Defile the "role" variable
    role = ctx.guild.get_role(766647041483866132)

    await ctx.send(embed=embed)
    await member.add_roles(role)
    await bot.delete_message(ctx.message)
    # Using asyncio module to wait
    expired = await asyncio.sleep(time)
    await member.remove_roles(role)
    thing = discord.Embed(name='<a:CheckMark:768095274949935146> Suspension Expired', value=f"{member.mention}'s suspension is over.")
    await expired.send(embed=thing)

Tags: namegettimebotembedawaitrolemember
1条回答
网友
1楼 · 发布于 2024-10-02 00:22:35

你的问题在这里:

expired = await asyncio.sleep(time)
await member.remove_roles(role)
thing = discord.Embed(name='<a:CheckMark:768095274949935146> Suspension Expired', value=f"{member.mention}'s suspension is over.")
await expired.send(embed=thing) # expired isn't a messageable...

#                               -
# To fix this, you can use ctx.send instead.

expired = await asyncio.sleep(time)
await member.remove_roles(role)
thing = discord.Embed(name='<a:CheckMark:768095274949935146> Suspension Expired', value=f"{member.mention}'s suspension is over.")
await ctx.send(embed=thing)

相关问题 更多 >

    热门问题