【问题标题】:How to get the user information through the user name?如何通过用户名获取用户信息?
【发布时间】:2021-08-03 03:42:29
【问题描述】:

我试图向不和谐公会的人发送消息。之所以会这样,是因为这个公会被黑了,很多成员被踢了。我正在考虑的一个解决方案是:让每个用户从审核日志中踢到一个 json,读取这个 json 并使用用户名以<class 'discord.user.User'> 的形式获取他们的信息,然后我可以使用这个数据类型向他们发送一条消息把它们带回来 (user_info.send(msg))。

出于这个原因,我想知道是否可以使用用户名 (Mycustomname#1234) 以 <class 'discord.user.User'> 的形式获取用户信息。

会是这样的:

@bot.commands(name=user_info)
async def get_user_info(ctx, user_name, msg):
    ...
   await user_class.send(msg)

# Input/output of the user
input: Mycustomname#1234
output: <User id=113112246122784145 name='Mycustomname' discriminator='1234' bot=False>

【问题讨论】:

  • 你能分享一个你想从中检索信息的 json 样本吗?虚拟数据就可以了。
  • 首先,您的机器人需要与您尝试向其发送 DM 的用户共享一个服务器,因此您要尝试的操作将不起作用,而是引发 discord.Forbidden 403 错误。其次,你正在寻找这个discordpy.readthedocs.io/en/latest/…
  • @schilli 样本数据已经添加
  • @MysteryR ,但应该是使用我的用户令牌的一种方式,因为我可以向不是我朋友且我们不共享服务器的人发送消息,但我有用户名
  • @Y4RD13 不是,即使您不应该与不与您共享共同服务器的用户进行 dm 管理(只有当您与他们成为朋友时才可以)

标签: python discord discord.py


【解决方案1】:

您可以通过discord.utils获取它

user = discord.utils.get(bot.users, name="Mycustomname", discriminator="1234")

user = discord.utils.find(lambda u: str(u) == "Mucustomname#1234", bot.users)

【讨论】:

  • 当我尝试打印 user 的类型和输出时,我得到:&lt;class 'NoneType'&gt; None
  • 如果你的机器人和那个用户没有共同的公会,它返回 NoneType。
  • 在您的情况下,如果您想获取 discord.User 对象,我建议使用 fetch_user (API 调用),但它只能由 discord.py 文档中提到的机器人帐户使用
  • @Weylyn 我们正在共享公会并返回None
猜你喜欢
  • 2022-01-10
  • 1970-01-01
  • 1970-01-01
  • 2019-09-02
  • 2011-10-31
  • 2013-01-27
  • 2020-08-27
  • 2015-11-22
  • 1970-01-01
相关资源
最近更新 更多