#python #discord #discord.py
Вопрос:
Я новичок, так что не ненавидь меня. Я пытаюсь дать кому-то роль, когда он присоединяется к определенному голосовому каналу.
Вот мой код:
import discord
from discord import Member, Guild
client = discord.Client()
#########################################################################
@client.event
async def on_ready():
print('Hello!'.format(client.user.name))
@client.event
async def on_voice_state_update(before, after ):
role = discord.utils.get(after.server.roles, name="Talk-1")
if not before.voice.voice_channel and after.voice.voice_channel:
await client.add_roles(after, role)
elif before.voice.voice_channel and not after.voice.voice_channel:
await client.remove_roles(after, role)
client.run('My Token')```
Ответ №1:
Вы двигались в правильном направлении. Вам нужно только определить идентификатор конкретного голосового канала, а затем проверить after.channel.id
, соответствует ли он этому. Также убедитесь, что используете member.add_roles
вместо client.add_roles
. Так что что-то вроде этого должно сработать:
@client.event
async def on_voice_state_update(member, before, after):
role = discord.utils.get(after.server.roles, name="Talk-1")
channel_id = 123456
if before.channel is None or before.channel.id != voice_channel:
if after.channel is not None and after.channel.id == voice_channel:
await member.add_roles(vc_role)
#reversed from above
if after.channel is None or after.channel.id != voice_channel:
if before.channel is not None and before.channel.id == voice_channel:
await member.remove_roles(vc_role)