【问题标题】:Add ctx in on_member_join Event在 on_member_join 事件中添加 ctx
【发布时间】:2021-10-03 21:52:43
【问题描述】:

所以我对此很陌生,这是我第一次提出问题。

我希望我的机器人在成员加入时创建一个新频道,并使其只有特定成员才能查看。我计划添加更多内容,以便在特定时间后删除。我已经做到了,以便它创建一个频道,但要使用频道权限,我需要拥有我无法在 on_member_join 函数中定义的 ctx。

附上代码以供参考,是的,我正在使用 cogs。

@commands.Cog.listener()
  async def on_member_join(self,member : discord.Member):
    ChannelName = member.name
    guild = member.guild
    
    await guild.create_text_channel(name = '{}'.format(ChannelName))
    overwrites = ctx.channel.overwrites_for(ctx.default_role)
    overwrites.read_messages, overwrites.send_messages = False, False
    await ctx.channel.set_permissions(guild.default_role, overwrite=overwrites)
    overwrites = ctx.channel.overwrites_for(ctx.member)
    overwrites.send_messages, overwrites.read_messages = True, True
    await guild.channel.set_permissions(ctx.member, overwrite=overwrites)
    await ctx.send ('Success!!')

【问题讨论】:

    标签: python python-3.x discord discord.py


    【解决方案1】:

    create_text_channel 返回TextChannel,您可以使用它来替换ctx.channel,因为ctx.channel 是调用命令的通道。对于 default_role,它存在于 Member 中,可以从 member.guild.default_role 访问

    下面的代码应该可以工作:

    @commands.Cog.listener()
      async def on_member_join(self,member : discord.Member):
        ChannelName = member.name
        guild = member.guild
        
        channel = await guild.create_text_channel(name = '{}'.format(ChannelName))
        overwrites = channel.overwrites_for(member.guild.default_role)
        overwrites.read_messages, overwrites.send_messages = False, False
        await channel.set_permissions(member.guild.default_role, overwrite=overwrites)
        overwrites = channel.overwrites_for(member)
        overwrites.send_messages, overwrites.read_messages = True, True
        await channel.set_permissions(member, overwrite=overwrites)
        await channel.send ('Success!!')
    

    【讨论】:

    • 因为你的回答比我的早 8 秒而且更详细,所以我删除了我的 :)
    • 我知道@Abdulaziz 你的有一些错误,我只是想写一篇关于的评论
    • 非常感谢。我只需要从最后第二行删除公会,因为公会没有属性通道。否则,它的工作原理非常感谢您的帮助。我已经编辑了你的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-16
    • 1970-01-01
    • 2021-04-12
    • 2023-03-12
    • 2022-10-02
    • 1970-01-01
    相关资源
    最近更新 更多