【问题标题】:How to change a string into a discord id in discord.py如何在 discord.py 中将字符串更改为不和谐 id
【发布时间】:2021-08-12 14:21:33
【问题描述】:

我正在尝试让一段代码工作,但它总是卡住。

role = discord.utils.get(Player.guild.roles, name="role")
await member.add_role(role)

我使用的是bot,而不是client,我没有使用ctx,而是使用message,我使用的是on_message()。每当我运行代码时,它都会给我错误消息

Unresolved attribute reference 'guild' for class 'str' 

那么我如何将Player 设为用户ID 而不是字符串。 Player显示

@!8214498848170 etc

【问题讨论】:

  • 你能告诉我们更多关于Player的信息吗?
  • Player 是一个包含用户 ID @!8214498848170 etc 的字符串,现在我正在尝试使用 Player 查找用户并在我的不和谐服务器中赋予他们一个角色
  • 这个字符串中是etc还是等等你的意思是id后面还有更多的东西?
  • etc 是用户 ID,但我不想将我的完整 ID 公开
  • 什么是会员?如果你给 Minimal, Reproducible Example 会容易得多,这样我就可以复制你的代码并得到你的错误。

标签: python discord discord.py


【解决方案1】:

guild 对象只是真实member 的属性,而不是字符串的属性,因此您的错误。 但是,您可以解析字符串以检索用户 ID,然后获取或获取成员。 Discord-ID 的长度为 18 19 位数字。应避免对 id 的长度使用静态字符串索引。

userID = int(Player[2:])

获取成员

member = await message.guild.fetch_member(userID)

现在您可以为成员分配角色

userID = int(Player[2:].split(" ")[0])
member = await message.guild.fetch_member(userID)
role = discord.utils.get(member.guild.roles, name="role")
await member.add_roles(role)

【讨论】:

  • 当我运行代码时它显示AttributeError: 'NoneType' object has no attribute 'guild'
  • 我刚刚意识到8214498848170 不是用户ID。它到底位于您的Player 字符串中的什么位置?在不知道您的 Player 字符串包含什么的情况下,我无法正确说出如何从您的示例命令中提取用户 ID。我现在猜测 Player 看起来像这样 @!8214498848170 <your-user-id> <etc> 并更新我的答案
  • 删除<>后的完整用户ID为@!821449884817031238
  • 这就是Player中写的所有内容?只有@!{user-id}?
  • 是的 Player 只包含 @!821449884817031238
猜你喜欢
  • 2021-03-10
  • 2015-01-14
  • 2020-05-25
  • 1970-01-01
  • 2021-10-30
  • 2021-04-23
  • 2012-02-09
  • 2013-09-04
  • 1970-01-01
相关资源
最近更新 更多