当我的机器人应该只给触发它的用户一个角色时,它会给每个人一个角色

Posted

技术标签:

【中文标题】当我的机器人应该只给触发它的用户一个角色时,它会给每个人一个角色【英文标题】:my bot gives everyone role when it should only give the user that trigger it a role 【发布时间】:2021-08-13 13:00:01 【问题描述】:

我想创建一个验证系统,当我 dm 机器人时会触发此系统,但它为每个服务器中的每个人提供了角色我只希望触发它的用户获得我认为for user in guild.members: 的角色正在做的事情

user = message.author
guild = client.guilds[0]
Verified = discord.utils.get(guild.roles, name="Verified")

for user in guild.members:
  await user.add_roles(Verified)
message.reply(f'You are verified in guild')

【问题讨论】:

嗯,你正在遍历每个公会成员,你认为会发生什么? 【参考方案1】:

for 循环的作用是遍历公会中的每个用户。这就是为什么它将角色授予所有人。

相反,由于您已经拥有作者(来自 user = message.author),您可以删除 for 循环并简单地授予他们角色:

await user.add_roles(Verified)

【讨论】:

以上是关于当我的机器人应该只给触发它的用户一个角色时,它会给每个人一个角色的主要内容,如果未能解决你的问题,请参考以下文章

我如何制作一个机器人,如果你做出反应,它会给你一个 Python 角色?

代码在我的系统上运行良好,但是当我将它提交给应该检查它的机器人时会导致堆栈粉碎错误

Discord.js V13 使用斜线命令时添加角色

Discord Bot 选择角色不会将角色授予用户

Discord JS V12 问题检查用户是不是已经拥有角色

Discord JS 消息分级系统