【问题标题】:on_member_join not giving roles when a member joins the server当成员加入服务器时,on_member_join 不赋予角色
【发布时间】:2020-10-06 19:10:29
【问题描述】:

我正在尝试制作一个机器人,它会在成员加入服务器时执行某些操作。更准确地说,它必须给他们一些角色并 DM 成员。

@client.event
async def on_member_join(member):
    roles = {"Level": 705112591927869513, "Interests": 705116168444444773, "Region": 725984087948656710,
             "Subscriptions": 705122149152850062}
    
    member_role = discord.utils.get(member.guild.roles, name = "member")
    await member.add_roles(member_role)
    for role in roles.keys():
        newrole = discord.utils.get(member.guild.roles, id = roles[role])
        await member.add_roles(newrole)
    await member.send("Welcome to the server! Please read the rules and verify yourself to be able to type! "
"Link to jump directly to the message - link")

我的问题是,由于某种原因,它不能始终如一地工作。有时它会提供所有角色,其他人只是成员之一,而其他人则根本没有。我知道并非所有成员都会获得 DM(因为隐私设置),这很好,但我真的不明白为什么不是所有成员在加入时都获得所有角色。提前致谢!

【问题讨论】:

    标签: python discord discord.py


    【解决方案1】:

    这可能是因为 Discord API 的速率限制。

    这可能有效

    @client.event
    async def on_member_join(member):
        roles = {"Level": 705112591927869513, "Interests": 705116168444444773, "Region": 725984087948656710,
                 "Subscriptions": 705122149152850062}
        
        member_role = discord.utils.get(member.guild.roles, name = "member")
        await member.add_roles(member_role)
        roles = [member.guild.get_role(i) for i in roles.values()]
        await member.add_roles(*roles)
        await member.send("Welcome to the server! Please read the rules and verify yourself to be able to type! "
    "Link to jump directly to the message - link")
    

    【讨论】:

      猜你喜欢
      • 2018-12-13
      • 2021-10-11
      • 1970-01-01
      • 2021-03-26
      • 2019-02-12
      • 2019-09-22
      • 2021-11-23
      • 2020-12-05
      • 2021-06-16
      相关资源
      最近更新 更多