如何在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
相关产品推荐
相关产品推荐

