You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在discord.py中提交Modal后修改用户昵称?

Discord.py Modal提交后修改用户昵称的正确实现

你的代码核心问题是直接引用了TextInput对象本身,而非用户输入的实际文本内容。要获取Modal输入框里的用户输入值,必须访问每个输入框的.value属性。

修正后的完整代码

class RenameModal(ui.Modal, title="Rename"):
    vorname = ui.TextInput(label="Vorname", placeholder="Mein Vorname lautet...", required=True, style=discord.TextStyle.short)
    nachname = ui.TextInput(label="Nachname", placeholder="Mein Nachname lautet...", required=True, style=discord.TextStyle.short)
    spielerid = ui.TextInput(label="ID", placeholder="Meine ID lautet...", required=True, style=discord.TextStyle.short)

    async def on_submit(self, interaction: discord.Interaction):
        # 通过 .value 获取用户输入的文本内容
        new_nick = f"{self.vorname.value} {self.nachname.value} | {self.spielerid.value}"
        await interaction.user.edit(nick=new_nick)
        # 给用户发送操作反馈(仅用户可见)
        await interaction.response.send_message(f"昵称已更新为: {new_nick}", ephemeral=True)

@client.tree.command(name="rename", description="修改你的服务器昵称")
async def rename(interaction: discord.Interaction):
    await interaction.response.send_modal(RenameModal())

重要注意事项

  • 输入值获取:所有ui.TextInput实例的用户输入内容都存在.value属性里,直接调用对象本身会得到类似<discord.ui.TextInput object at 0x...>的无效字符串,这不是你需要的内容。
  • 机器人权限:确保机器人在服务器中拥有「修改成员昵称」的权限,否则会触发权限不足的错误。
  • 用户权限限制:如果目标用户是服务器管理员,机器人无法修改其昵称;另外,Discord昵称长度上限为32字符,超过长度会导致修改失败。
  • 反馈机制:添加interaction.response.send_message能让用户直观确认操作结果,ephemeral=True设置可让反馈仅提交者可见,避免刷屏。

内容的提问来源于stack exchange,提问作者Icxless

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 19:45:50