如何在 discord.py 中将字符串更改为不和谐 id
Posted
技术标签:
【中文标题】如何在 discord.py 中将字符串更改为不和谐 id【英文标题】:How to change a string into a discord id in discord.py 【发布时间】: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 会容易得多,这样我就可以复制你的代码并得到你的错误。
【参考方案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
以上是关于如何在 discord.py 中将字符串更改为不和谐 id的主要内容,如果未能解决你的问题,请参考以下文章