【问题标题】:Discord.py get_member with on_readyDiscord.py get_member 和 on_ready
【发布时间】:2021-09-10 16:35:20
【问题描述】:

我们在服务器上有一个 bot 命令 !verifyme1

将成员添加到角色。

async def verfiyme1(ctx):
    user=ctx.message.author
    #user=ctx.guild.get_member(536147700115308545)
    print(user)
    channel = bot.get_channel(858993936932274196)
    print(client)
    await user.send('Welcome to the Member Club!')
    role= discord.utils.get(user.guild.roles, name="Holder Club")
    if role in user.roles:
        await channel.send(f"You are already a member of the holder club!")
        #exit()

    else:
        await user.add_roles(role)
        await channel.send(f"Congrats {user.mention} You are now a member of the Holder Club!")
        #exit()

我们需要更改命令,使其不是由用户触发,而是由我们触发脚本(因此我们可以进行一些额外的验证检查),即加载 members.py 触发它将角色添加到所选成员然后退出。

查看我需要使用 on_ready() 的文档

async def on_ready():
    #user=ctx.message.author
    print("this is a test")
   
    channel = bot.get_channel(858993936932274196)
    print(channel)
    user=ctx.guild.get_member([we will pass this ID in])
    print(user)
    await user.send('Welcome to the Member Club!')
    role= discord.utils.get(user.guild.roles, name="Holder Club")
    if role in user.roles:
        await channel.send(f"You are already a member of the  holder club!")
        #exit()

    else:
        await user.add_roles(role)
        await channel.send(f"Congrats {user.mention} You are now a member of the Holder Club!")
        #exit()

bot.run(DISCORD_TOKEN)

但问题是您不能将 ctx 与 on_ready 一起使用,因此 ctx.guild.get_member 返回错误。是否有任何可以替代 guild.get.member 的方法?

【问题讨论】:

    标签: python discord.py roles


    【解决方案1】:

    你可以得到公会,就像你得到频道一样

    guild = bot.get_guild(guild_id)

    发现于docs


    @bot.event
    async def on_ready():
        guild = bot.get_guild(guild_id)
        if guild == None:
            guild = await bot.fetch_guild(guild_id) # if guild not in cache
    
        user = guild.get_member(536147700115308545)
        channel = guild.get_channel(858993936932274196)
    
        await user.send('Welcome to the Member Club!')
        role = discord.utils.get(guild.roles, name="Holder Club")
        if role in user.roles:
            await channel.send(f"You are already a member of the holder club!")
            #exit()
    
        else:
            await user.add_roles(role)
            await channel.send(f"Congrats {user.mention} You are now a member of the Holder Club!")
            #exit()
    

    【讨论】:

      猜你喜欢
      • 2021-11-10
      • 2019-03-01
      • 2021-10-25
      • 2021-02-25
      • 2021-01-21
      • 1970-01-01
      • 2021-06-09
      • 2021-01-17
      • 2021-01-07
      相关资源
      最近更新 更多