discord.py 我的静音命令阻止了其他命令
discord.py my mute command blocks other commands
我正在为我的 Discord 服务器制作一个定时静音命令,但是当我使用 .mute 命令时,机器人有一段时间没有响应,然后它就可以工作了。但是当成员被静音时,其他命令不起作用,当静音时间结束时,我在静音时间编写的命令正在工作。这是命令:
@commands.command()
async def mute(self, ctx, member: discord.Member, time1, reason):
time1 = int(time1) * 60
guild = ctx.guild
var1 = 0
for role in guild.roles:
if role.name == "Muted":
var2 = var1
continue
else:
var1 += 1
for channel in guild.channels:
await channel.set_permissions(guild.roles[var2], send_messages=False)
for rol in guild.roles:
if rol.name == "Muted":
await member.add_roles(rol)
await ctx.send(f"{member.mention} muted by {ctx.author.mention}, reason : {reason}")
time.sleep(time1)
await member.remove_roles(rol)
await ctx.send(f"{member.mention} can type now.")
并且当成员自动取消静音时,“on_ready”事件无故再次发生。
当有人因您使用 time.sleep
而被静音时,您的代码中的任何其他内容都不会 运行。使用 time.sleep
将冻结您的整个代码。
要解决您的问题,您可以使用 asyncio
library, especially, asyncio.sleep
.
我正在为我的 Discord 服务器制作一个定时静音命令,但是当我使用 .mute 命令时,机器人有一段时间没有响应,然后它就可以工作了。但是当成员被静音时,其他命令不起作用,当静音时间结束时,我在静音时间编写的命令正在工作。这是命令:
@commands.command()
async def mute(self, ctx, member: discord.Member, time1, reason):
time1 = int(time1) * 60
guild = ctx.guild
var1 = 0
for role in guild.roles:
if role.name == "Muted":
var2 = var1
continue
else:
var1 += 1
for channel in guild.channels:
await channel.set_permissions(guild.roles[var2], send_messages=False)
for rol in guild.roles:
if rol.name == "Muted":
await member.add_roles(rol)
await ctx.send(f"{member.mention} muted by {ctx.author.mention}, reason : {reason}")
time.sleep(time1)
await member.remove_roles(rol)
await ctx.send(f"{member.mention} can type now.")
并且当成员自动取消静音时,“on_ready”事件无故再次发生。
当有人因您使用 time.sleep
而被静音时,您的代码中的任何其他内容都不会 运行。使用 time.sleep
将冻结您的整个代码。
要解决您的问题,您可以使用 asyncio
library, especially, asyncio.sleep
.