首页 > 解决方案 > disord.py 中的命令后是/否确认

问题描述

我正在使用 discord.py 库在 python 中制作一个不和谐的机器人。我需要知道,如何在命令后实现是/否确认。例如,考虑一个“禁止”命令,该命令禁止用户访问服务器,并且只能由主持人使用。在写完“!ban @user”之后,我希望机器人回复“Ban @user?(y/n)”,如果那个版主回复的不是“y”,那么禁令就会被取消。我该如何实施?像这样的东西:

@client.command()
@commands.is_owner()
async def ban(ctx, member : discord.Member, *, reason = None):
    await ctx.send("Ban @member?(y/n)")
    if get_confirmation():
        await member.ban(reason = reason)
    else:
        await ctx.send("Ban Cancelled")

标签: pythondiscord.py

解决方案


你需要使用wait_for.

以下是修改后的代码:

@client.command()
@commands.is_owner()
async def ban(ctx, member : discord.Member, *, reason = None):
    await ctx.send(f"Ban {member.mention}?(y/n)")
    msg = await bot.wait_for("message", check=lambda m:m.author==ctx.author and m.channel.id==ctx.channel.id)
    if msg.content.lower in ("y", "yes"):
        await member.ban(reason = reason)
    else:
        await ctx.send("Ban Cancelled")

推荐阅读