Python pycord: AttributeError: 'ApplicationContext' object has no attribute 'selected_options'

Python pycord: AttributeError: 'ApplicationContext' object has no attribute 'selected_options'

我有 2 个命令:testsend_arg。在执行test命令的过程中,需要从send_arg命令接收数据。

我正在等待通过 wait_for 调用 send_arg 命令,我将上下文传递给 test 以获取传递给 send_arg 的参数。

但是当我尝试获取 selected_options 属性 时,出现错误。

AttributeError: 'ApplicationContext' object has no attribute 'selected_options'

同时,looking at the documentation,我确信这样的属性肯定存在

import discord
from discord.ext import commands
from discord.commands import Option

bot = commands.Bot(command_prefix='!', intents=discord.Intents.all())

@bot.slash_command()
async def send_arg(ctx, arg: Option(str, choices=['var1', 'var2', 'var3'], required=True)):
    pass

@bot.slash_command()
async def test(ctx):

    def check(context):
        return context.author == ctx.author

    app_cmd_ctx = await bot.wait_for('application_command', check=check)
    print(app_cmd_ctx.selected_options)

bot.run(TOKEN)

py-cord 版本:

pip install py-cord==2.0.0b1

说明

ApplicationContext.selected_options 在 2.0 beta 5 之前的 pycord 版本中不存在。 要修复您的错误,您可以使用 pip install git+https://github.com/Pycord-Development/pycord.

将 pycord 更新到此版本

如果您需要使用 2.0 beta 1 或 beta 5 之前的任何其他版本,可以将 ApplicationContext.selected_options 替换为以下代码:

代码

ApplicationContext.interaction.data.get("options", None)

参考

Application Context

Commit where this property was added