获取用户对象和发送私聊信息
# 1.用户对象和服务器用户对象
在khl.py中,有User对象和GuildUser对象,后者除了用户的基本信息外,还包含了用户在服务器内的角色组和昵称等相关信息;
User对象因为没有明确服务器,所以不包含用户角色和昵称信息。
注意:机器人必须和用户至少同时在一个服务器内,且用户对机器人可见,机器人才能获取该用户信息。
# 2.获取用户对象
获取User对象和获取GuildUser对象的方式有所不同,后者需要先获取一个Guild对象,再调用Guild对象的fetch_user
方法。
# 获取User对象
user = await bot.client.fetch_user("用户ID")
# 获取GuildUser对象
guild = await bot.client.fetch_guild("服务器ID")
guild_user = await guild.fetch_user("用户ID")
另外,@bot.command
所修饰的命令处理函数中,msg.author
的类型为GuildUser,是命令发起人的基本信息。
# 3.发送私聊信息
不管是User还是GuildUser对象,都可以调用send方法向用户发送私聊信息,参数可以为字符串或卡片消息。
user = await bot.client.fetch_user("用户ID")
await user.send("消息内容") # 发送私聊
注意:用户的隐私设置中,必须允许服务器内其他用户发起私聊,机器人才能给用户发送信息,否则会403发送失败。该问题可以通过用户主动向机器人发送消息解除。
上次更新: 2024/01/28, 12:57:47