如何修复不和谐机器人的类型错误(缺少注释)? (Python 3)

问题描述 投票:0回答:1

每当我运行我的机器人时,我总是收到“TypeError:参数‘reason’在回调‘moderation.kick’中缺少类型注释”。

@app_commands.command(name='kick', description='Kicks the member of your choice if you have kick permissions.')
@has_permissions(kick_members=True)
async def kick(s, interaction:discord.Interaction, member:discord.Member, *, reason='None'):
    await interaction.response.send_message(f'User {member} has been kicked.')
    await member.kick(reason=reason)
@kick.error
async def kick_error(s, interaction:discord.Interaction, error):
    if isinstance(error, commands.MissingPermissions):
        await interaction.response.send_message('You don\'t have permission to kick people!')

我不明白我做错了什么,因为“reason”的默认值是一个字符串。我什至将代码重写为:

async def kick(s, interaction:discord.Interaction, member:discord.Member, *, reason='None') -> str:

这也没有帮助。我确信这很简单,但任何建议将不胜感激!

python-3.x discord.py annotations typeerror discord-bot
1个回答
0
投票

正如错误指出的那样:将类型注释添加到您的回调中:

async def kick(s, interaction: discord.Interaction, member: discord.Member, *, reason: str = 'None'):
    await interaction.response.send_message(f'User {member} has been kicked.')
    await member.kick(reason=reason)

通常 python 应该能够从默认值推断类型,但 Discord.py 似乎需要严格的类型。

© www.soinside.com 2019 - 2024. All rights reserved.