【问题标题】:How to assign a user a role in a server from a direct message discord.py如何从直接消息 discord.py 中为用户分配服务器中的角色
【发布时间】:2018-08-23 05:21:49
【问题描述】:

所以我正在尝试制作一个机器人,如果用户直接向机器人发送消息,它将在用户和机器人所在的服务器中为他们提供一个角色。我试图根据角色添加角色身份证,但那不起作用。

这是我的想法的一个例子,它可能有助于更好地解释它。

role = (role ID)

member = message.author
await client.add_roles(member, role)

现在请记住,这将在直接消息中发生,而不是在服务器中,这会更容易。

如果有人知道如何做到这一点或有任何想法,请告诉我。

谢谢

【问题讨论】:

  • 如果用户和机器人共享许多服务器怎么办?你会在所有公共服务器中授予角色,还是以某种方式选择?或者这仅适用于在机器人中硬编码的一台服务器?
  • 这是专门针对一台服务器的

标签: python discord discord.py


【解决方案1】:

这里我们记录id,然后在收到命令时访问适当的对象。

target_server_id = "123..."
target_role_id   = "456..."

@bot.command(pass_context=True)
async def gimmieRole(ctx):
    if not ctx.message.channel.is_private:
        await bot.say("Private command only")
    server = await bot.get_Server(target_server_id)
    role = discord.utils.get(server.roles, id=target_role_id)
    member = server.get_member(ctx.message.author.id)
    if member:
        await bot.add_roles(member, role)
    else:
        await bot.say("You are not a member")

【讨论】:

  • 这太完美了,非常感谢!我到处找这个。
  • 您能否显示代码的整个上下文?我的方法遇到了一些问题。也许显示进口会有所帮助?
猜你喜欢
  • 2020-01-07
  • 1970-01-01
  • 1970-01-01
  • 2021-08-03
  • 1970-01-01
  • 2018-09-13
  • 2020-09-06
  • 2021-10-19
  • 2021-07-16
相关资源
最近更新 更多