Discord.py 成员加入特定频道时的消息

时间:2021-04-04 11:06:54

标签: python discord discord.py

下午好。

我还有一个关于 discord python bot 的问题。 所以我想做一些类似支持脚本的事情。我的想法是在所有支持者值班时写一个命令,该命令保存在 json 文件中。这没问题,但我的问题是我希望用户在连接到名为“Support-Room”的特定语音通道时接收值班的支持者数量。有谁知道我如何编写一个脚本,当成员加入这个特定的语音频道时,他会收到一条消息,例如: member.send('你现在在支持室。请等待支持者移动你。' )

@bot.command()
async def on_member_join(member):
    for channel in bot.get_all_channels():
        if channel.name == 'Support-Room':
            await member.send(''You are now in the Support-Room. Please wait till a Supporter moves you.')

这就是我尝试过的,但它不起作用:(

1 个答案:

答案 0 :(得分:0)

混合事件和机器人命令不是它的工作方式。使用 event 是解决方案。 我们必须使用名为 on_voice_state_update 的事件,有关详细信息,请参阅 docs

看看下面的代码:

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

    if channel.id == VoiceChannelID: # Insert voice channel ID
        if before.channel is None and after.channel is not None: # Member joins the defined channel
            await member.send("Your text here.") # Send a DM to the member who joined

我们做了什么?

  • 查看了他之前和现在所在的频道。
  • 检查加入的频道是否与定义的频道匹配。
  • 如果频道正确,则向用户发送消息。