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

discord.py获取用户信息报错:user_id非snowflake格式求助

问题分析与解决方案

错误原因

  1. fetch_user() 参数错误:client.fetch_user() 需要传入的是用户ID(整数类型的Snowflake),但你传了 message.author——这本身已经是一个 User/Member 对象,并非ID,所以触发了「Value is not snowflake」的报错。
  2. 发送对象类型错误:message.channel.send() 无法直接发送 User 对象,必须提取对象中的字符串属性(比如用户名)再发送。

修正代码

其实你完全不需要调用 fetch_user(),因为 message.author 已经包含了发送者的所有用户信息,直接提取属性即可:

@client.event
async def on_message(message):
    # 获取纯用户名
    username = message.author.name
    # 获取带服务器昵称的用户名(如果用户设置了昵称)
    display_name = message.author.display_name
    # 获取带标签的完整用户名(如:User#1234)
    full_username = str(message.author)
    
    # 发送用户名到频道
    await message.channel.send(f"发送消息的用户:{username}")
    # 或者@该用户
    await message.channel.send(f"@{message.author}")

如果确实需要使用 fetch_user()(比如获取不在当前服务器的用户信息),则需要传入用户ID:

@client.event
async def on_message(message):
    user_id = message.author.id
    user = await client.fetch_user(user_id)
    await message.channel.send(f"用户名:{user.name}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 03:52:03