Я пытаюсь сделать команду приостановки, но не уверен, что она будет правильно разблокирована по истечении времени. Я хочу использовать 1 м / 30 с / 5 ч / 2 дня для приостановки после префикса, но он не отключается. Я не уверен, что ждал достаточно долго, однако он не отвечает или не создает ошибку.
@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)
Ваша проблема здесь:
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)