当前位置: 首页 > 知识库问答 >
问题:

当特定的人加入语音频道时,如何制作加入语音频道的机器人?

田晨
2023-03-14

这是很新的。我一直在阅读readthedocs API参考资料以了解不和谐。这对我来说没什么意义。到目前为止我有

import os
import discord
#os.environ['targetID']

bot = discord.Client()
intents = discord.Intents.default()
intents.members = True


channel_id = os.environ['channelID']
voice_channel = bot.get_channel(channel_id)

async def on_ready():
  print ("Ready")
  channel_id = os.environ['channelID']
  voice_channel = bot.get_channel(channel_id)
  await voice_channel.connect()


#async def on_voice_state_update(Member, channel[None], channel['general']):
#  print(client.member.id)

#move_to(None)
bot.run(os.environ['token'])

我们的目标是让机器人加入带有targetID用户加入的语音频道,但我在让机器人加入频道时遇到了麻烦。

共有2个答案

蒯硕
2023-03-14

on_voice_state_update是你需要的。当服务器上发生语音状态更改时,将调用此事件,包括

>

  • 成员加入语音频道。

    成员离开语音频道。

    一个成员自动静音或耳聋。

    成员被公会管理员静音或耳聋。

    此函数接受3个参数,更新发生的成员、之前的状态和之后的状态。触发此事件时,检查member.id==target_member.id。如果是这样,那么等待after.channel.connect()

    您还应该添加检查,如果机器人还没有在这个通道和其他东西,但这应该指出你在正确的方向

  • 史磊
    2023-03-14

    基于Nathan Marotte的回答,我将提供一个代码示例。

    您可以使用on_voice_state_update功能来检查成员所在的频道。

    因此,请查看以下代码:

    @bot.event
    async def on_voice_state_update(member, before, after):
        targetID = bot.get_user(TargetIDHere)
    
        if before.channel is None and after.channel is not None and member.id == targetID.id: # Condition that must be fulfilled
            await member.voice.channel.connect() # Connect to the channel
    

    要解释代码中的不同功能,请执行以下操作:

    之前。channel is None=检查用户是否不在频道中/不在频道中。

    之后。channel is not None=检查用户加入的频道,然后授予角色。

    成员。id==targetID。id=检查成员是否存在。加入匹配项的idtargetID。id。

     类似资料:
    • 我试图制作一个不和谐机器人,当被召唤时,它将加入作者所在的语音频道。 这是我所拥有的: 当我加入语音频道并键入命令时,我收到以下错误:

    • 我正在尝试让我的discord机器人连接到一个语音频道,目前如下所示: 基本上,当他们发送消息时,我希望它加入消息作者的语音频道“-skip”,然后我的机器人加入,在聊天中说-p scotland forever,然后离开。我收到一条错误消息,说“频道”未定义或“连接”未定义,我尝试了几种不同的方法,我想我只是没有导入插件或其他东西,这可能是我的问题,但我知道应该使用什么插件。任何帮助都将不胜感激

    • 我希望我的不和谐机器人加入语音频道。但是我遇到了一个问题,每当我想让它加入风投时,什么都不会发生——甚至没有错误。我尝试过SO/Git的其他解决方案,但没有一个适合我(下面有一个)。 编辑:解决了!问题是:没有不和。已安装py[语音]模块。解决方案:

    • 我正在努力让我的机器人进入语音频道,我已经阅读了这里的很多帖子,但没有一篇能够解决我的问题,我正在尝试让我的机器人复制yt视频的声音,但它甚至没有加入,我不知道该怎么办,下面是代码:

    • 我只是想做一个简单的方法,让我的不和谐机器人加入一个频道。我已经看了多个线程,其中一些已经过时,因为它们是在discord.py迁移到v1.0之前。我已经使用type()和dir()来检查通道是什么类型,并查看它有什么方法。我将其与discord.py的API进行了比较,我发现一个问题是dir()创建了一个名为的字段,但是API显示对象有一个名为方法。感谢所有的帮助!:)

    • 我正在做一个简单的不和谐机器人,node.js.我让它运行并响应,但我不能召唤它到语音频道这是我使用的代码 它总是转到“加入语音频道”消息,即使我在语音频道。