[英]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.