【发布时间】:2020-06-22 02:52:12
【问题描述】:
我正在尝试为 discord.py 机器人创建一个 !mute 命令。我希望它的格式如下:!mute @user 10s。 s 是几秒钟。我还希望它能够读取 m 几分钟,h 几小时和 d 几天。如果可能的话,甚至可能是!mute @user 1d 3h 3s。这是我现在的代码。
@client.command()
@commands.has_permissions(kick_members=True)
async def mute(ctx, member: discord.Member, mute_time : int):
guild = ctx.guild
for role in guild.roles:
if role.name == "Muted":
await member.add_roles(role)
await ctx.send("{} has has been muted!" .format(member.mention))
await asyncio.sleep(mute_time)
await member.remove_roles(role)
await ctx.send("{} has been unmuted!" .format(member.mention))
目前它工作正常。 !mute @user 10 持续 10 秒。
我还有一个取消静音命令。它是这样工作的。 !unmute @user.
@client.command()
@commands.has_permissions(kick_members=True)
async def unmute(ctx, member : discord.Member):
guild = ctx.guild
for role in guild.roles:
if role.name == "Muted":
await member.remove_roles(role)
await ctx.send("{} has has been unmuted!" .format(member.mention))
除非我们有这个命令的问题。假设我执行!mute @user 60。如果我决定在 60 秒结束之前使用命令 !unmute @user 取消静音,它会成功取消静音。但是当 60 秒结束时,它会再次取消静音并第二次发送消息。
再次澄清一下,我的目标是创建一个 !mute 命令,以便可以执行!mute @user 1d 3s。 s 是秒,m 是分钟,h 是小时,d 是几天,mo 是几个月,y 是几年。
任何答案都会很棒,谢谢!
【问题讨论】:
标签: python discord discord.py