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

如何在discord.py的Slash命令中获取用户好友?

问题解决方法

1. 修复fetch_user的异步调用错误

client.fetch_user()是异步协程函数,必须用await关键字获取返回的User对象,直接调用会返回协程对象,这是触发AttributeError的直接原因。正确写法:

user = await client.fetch_user(user_id)

2. 关于friends属性的问题

Discord官方API不允许第三方机器人获取用户的好友列表,因此discord.py的User或Member对象不存在friends属性,无论如何调用都无法获取用户好友。如果需要类似好友关系的功能,只能通过其他方式实现,比如让用户手动将好友信息录入机器人数据库,或者利用服务器内的成员/角色关系模拟。

3. Slash命令中替代ctx的方式

在discord.py的Slash命令中,通常用interaction对象替代传统的ctx,它包含了命令触发的上下文信息(如触发用户、服务器信息等)。示例代码:

from discord import app_commands

@client.tree.command(name="test", description="测试Slash命令")
async def test_command(interaction: discord.Interaction):
    # 获取触发命令的用户
    user = interaction.user
    await interaction.response.send_message(f"你好,{user.name}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 00:25:53