簡體   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