【问题标题】:how to make a bot that gives role when we join a particular voice channel and removes when left如何制作一个机器人,在我们加入特定语音频道时赋予角色并在离开时移除
【发布时间】:2021-04-03 09:44:17
【问题描述】:

我正在学习如何使用 discord.py,我想制作机器人功能,当我们加入特定语音频道时赋予角色,并在用户离开频道时移除相同角色

@client.event
async def on_voice_state_update():

【问题讨论】:

  • 嗨,有没有授予状态的命令

标签: python discord.py


【解决方案1】:

on_voice_state_update 为您提供 afterbefore 参数,这是检查成员何时加入和离开语音频道的方法

async def on_voice_state_update(member, before, after):
    if before.channel is None and after.channel is not None:
        # member joined a voice channel, add the roles here
    elif before.channel is not None and after.channel is None:
        # member left a voice channel, remove the roles here

要添加角色,首先你需要得到一个discord.Role对象,然后你可以做member.add_roles(role)

role = member.guild.get_role(role_id)

await member.add_roles(role)

删除一个角色也是一样的,只不过@9​​87654332@

await member.remove_roles(role)

编辑:

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

    if channel.id == some_id:
        if before.channel is None and after.channel is not None:
            # member joined a voice channel, add the roles here
        elif before.channel is not None and after.channel  is None:
            # member left a voice channel, remove the roles here

参考:

【讨论】:

  • 以及如何在加入和离开特定语音频道时赋予和移除角色?
  • 检查频道名称/ID,我编辑了我的答案
  • @client.event async def on_voice_state_update(member, before, after): channel = before or after if channel.id == 792778963302744094: 如果 before.voice 是 None 并且 after.voice 不是 None: role = member.guild.get_role(791601378593734667) await member.add_roles(role) elif before.voice is not None and after.voice is None: role = member.guild.get_role(791601378593734667) await member.remove_roles(role) like this ???它给了我错误
猜你喜欢
  • 2021-07-13
  • 2019-06-01
  • 2018-10-11
  • 2020-09-26
  • 2021-04-30
  • 2021-04-05
  • 2018-06-16
  • 2020-09-05
  • 1970-01-01
相关资源
最近更新 更多