正在等待消息,但机器人没有响应

@client.command()

@has_permissions(administrator=True)

async def nuke(ctx, channel_name):

    channel_id = int(''.join(i for i in channel_name if i.isdigit()))

    existing_channel = client.get_channel(channel_id)

    await ctx.send("Please confirm nuke: type yes or no")


    def check(m):

        return m.content == 'yes'


    msg = await client.wait_for('message', check=check)

    if existing_channel is not None:

        await existing_channel.clone(reason="Has been nuked")

        await existing_channel.delete()

    else:

        await ctx.send(f'No channel named **{channel_name}** was found')


    def check(s):

        return s.content == 'no'

    msg = await client.wait_for('message', check=check)

    await ctx.send("Nuke has been canceled")

我遇到的问题:一旦你说不,机器人应该取消命令,但它不会取消命令。如果您在说“不”后立即说“是”,机器人无论如何都会继续克隆并删除频道。也没有错误消息。如果您需要任何其他信息,请告诉我。

https://img1.sycdn.imooc.com/654c9e5400010d0403430167.jpg

缥缈止盈
浏览 97回答 1
1回答

幕布斯6054654

该行不会暂停执行直到满足msg = await client.wait_for('message', check=check)条件吗?m.content == 'yes'这应该效果更好:@client.command()@has_permissions(administrator=True)async def nuke(ctx, channel_name):    channel_id = int(''.join(i for i in channel_name if i.isdigit()))    existing_channel = client.get_channel(channel_id)    await ctx.send("Please confirm nuke: type yes or no")    def check(m):        return m.content == 'yes' or m.content == 'no'    msg = await client.wait_for('message', check=check)    if msg.content == 'yes':        if existing_channel is not None:            await existing_channel.clone(reason="Has been nuked")            await existing_channel.delete()        else:            await ctx.send(f'No channel named **{channel_name}** was found')    elif msg.content == 'no':        await ctx.send("Nuke has been canceled")
打开App,查看更多内容
随时随地看视频慕课网APP