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

Discord.py中无法不@用户显示名称,调用display_name报错

问题解决:Discord.py中无法正确显示用户名称的问题

问题原因

  1. 属性调用方式错误:discord.User.display_name是类属性,直接调用会返回属性对象而非实际名称,必须通过具体的用户实例(如user.display_name)访问。
  2. 参数类型未指定:命令中的user参数默认是字符串类型,未被解析为discord.User对象,导致无法正常访问其mention、display_name等属性。

修复后的完整代码

import discord
import json
import random
from discord.ext import commands

@bot.command(name="kiss")
async def kiss(ctx, user: discord.User):  # 添加类型注解,自动解析用户对象
    if ctx.message.channel.is_nsfw():
        with open('kiss.json') as kg:
            kissgifs = json.load(kg)
        ksrandomchoice = random.choice(kissgifs)
        embed = discord.Embed()
        embed.set_image(url=ksrandomchoice['kiss'])
        # 使用user.display_name获取用户昵称,或user.name获取账号用户名
        embed.add_field(name=f"{ctx.author.display_name} kissed {user.display_name}", value="")
        await ctx.send(embed=embed)
    else:
        await ctx.send("此命令仅允许在NSFW频道使用")

关键修改说明

  • 添加类型注解:在user参数后追加: discord.User,让discord.py自动将传入的用户提及、ID或用户名转换为discord.User实例。
  • 正确访问属性:用user.display_name(优先显示服务器昵称,无昵称则显示账号名)或user.name(固定显示账号用户名)替代错误的discord.User.display_name写法。
  • 优化提示文本:将模糊的"I'm not"替换为明确的中文提示,提升用户体验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 19:36:20