【问题标题】:problem in discord bot (on_voice_state_update) (member aruguement)不和谐机器人中的问题(on_voice_state_update)(成员争论)
【发布时间】:2021-08-30 08:37:37
【问题描述】:
    @commands.Cog.listener()
    async def on_voice_state_update(self, channel, before, after, member):
        channel = self.bot.get_channel([CHANNEL-ID])
        member = VoiceChannel.members
        if before.channel is None and after.channel is not None:
                await channel.send(f'{member} JOINED {after.channel}')

错误:等待 coro(*args, **kwargs) 类型错误:on_voice_state_update() 缺少 1 个必需的位置参数:'member'

如果:没有问题:

    @commands.Cog.listener()
    async def on_voice_state_update(self, channel, before, after):
        channel = self.bot.get_channel([CHANNEL-ID])
        if before.channel is None and after.channel is not None:
                await channel.send(f'someone JOINED {after.channel}')

那么我如何获取加入语音频道的成员的姓名

【问题讨论】:

标签: python discord.py bots


【解决方案1】:

首先,您会收到错误消息,因为事件函数应该正好有三个(不包括 self)参数。这些参数是memberbeforeafter

回答您的问题:您使用您当前称为channel 的第一个位置参数获取加入的成员。要获取频道,您可以分别使用before.channelafter.channel。请注意,频道可能是None,表示加入/离开,而不仅仅是切换频道。

另请参阅有关此事件的官方文档:discord.on_voice_state_update

discord.on_voice_state_update(member, before, after)

Member 更改其VoiceState 时调用。 以下但不限于示例说明何时调用此事件:

  • 成员加入语音频道。
  • 成员离开语音频道。
  • 成员自行静音或耳聋。
  • 成员被公会管理员静音或耳聋。

这需要启用Intents.voice_states

参数

  • member (Member) – 语音状态发生变化的成员。
  • before (VoiceState) – 更改前的语音状态。
  • after (VoiceState) – 变化后的语音状态。

【讨论】:

    猜你喜欢
    • 2020-12-31
    • 2022-11-10
    • 2020-06-08
    • 2019-02-26
    • 2019-09-04
    • 2020-12-25
    • 1970-01-01
    • 2020-05-10
    • 1970-01-01
    相关资源
    最近更新 更多