[英]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)
如果我加入任何一個語音通道,此代碼將添加相同的角色,如果它加入Voice1
和voice1
角色,如果它加入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_roles
或remove_roles
name
已更改為id
,以便您可以重命名角色而不必更改代碼。channel.id
而不是名稱,因此您可以隨時再次更改它
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.