首页 > 解决方案 > 如何在 Python Discord Bot(重写)中获取用户输入?

问题描述

我有一个我在 Python 3.8.5 上制作的不和谐机器人。我正在通过正确的语法和命令打印此菜单。现在我希望用户根据他想要选择的选项键入数字 1 或 2。这是我的代码:

    async def menu(self, ctx):
        await ctx.message.delete()
        embed = discord.Embed(
            title = "Heartbeat Menu",
            description = "Select and enter a number.\n 1. Check Status of Heartbeat\n 2. Hearbeat Check"
        )
        sent = await ctx.send(embed=embed)

它工作正常。当用户输入 1 或 2 时,应该编写什么代码,机器人会识别并打印其他内容。

标签: pythondiscord.pydiscord.py-rewrite

解决方案


@client.command()
async def menu(ctx):
    await ctx.message.delete()

    embed = discord.Embed(
            title = "Heartbeat Menu",
            description = "Select and enter a number.\n 1. Check Status of Heartbeat\n 2. Hearbeat Check"
        )
    sent = await ctx.send(embed=embed)
    
    def check(msg):
        return msg.author == ctx.author and msg.channel == ctx.channel and msg.content in ["1", "2"]
    msg = await client.wait_for("message", check=check)

    if msg.content == "1":
        #code for number 1
    else:
        #code for number 2

我使用client.wait_for方法等待用户输入,check()函数内部的menu函数会检查权限user , channel , message is 1/2,如果满足,就会执行#code for number 1or !#code for number 2如果您仍然无法理解,我建议您阅读文档!


推荐阅读