繁体   English   中英

加入特定语音时如何添加角色 discord.py

[英]How to add a role when i join a specific voice discord.py

我为此做了一个代码,但我想要更多语音文本通道到语音通道

@bot.event
async def voice1_role(member, before, after):
    if not before.channel and after.channel:
        role = discord.utils.get(member.guild.roles, name="voice1")
        await member.add_roles(role)
    elif before.channel and not after.channel:
        role = discord.utils.get(member.guild.roles, name="voice1")
        await member.remove_roles(role)

如果我加入任何一个语音通道,此代码将添加相同的角色,如果它加入Voice1voice1角色,如果它加入voice2 ,我将如何赋予它Voice2

您的代码部分有效。 但是,我们必须使用不同的event并重新检查,以便将代码用于更多事件/角色。

您可以使用on_voice_state_update function 来检查成员所在的频道。

@bot.event
async def on_voice_state_update(member, before, after):
    channel = before.channel or after.channel

    if channel.id == ChannelID:
        if before.channel is None and after.channel is not None: # Member joins the defined channel
            role = discord.utils.get(member.guild.roles, id=RoleID)
            await member.add_roles(role) # Role is given
        elif before.channel is not None and after.channel is None:
            role = discord.utils.get(member.guild.roles, id=RoleID)
            await member.remove_roles(role) # Role removed because he left the channel

(请注意,如果您想拥有更多活动,可以复制代码并插入新的频道 ID 或角色 ID。)

解释代码中的不同功能:

before.channel is None = 检查用户是否不在频道中/不在频道中。

after.channel is not None = 检查用户加入的频道,然后授予角色。

before.channel is notn None and after.channel is None = 用户不再在频道中。

我们所做的如下:

  • 更改检查:我们在会员加入频道之前和之后检查频道。 这将导致add_rolesremove_roles
  • name已更改为id ,以便您可以重命名角色而不必更改代码。
  • 使用channel.id而不是名称,因此您可以随时再次更改它

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM