【问题标题】:Voice channel limit in discord.pydiscord.py 中的语音通道限制
【发布时间】:2021-11-13 13:33:34
【问题描述】:

您好,我正在尝试制作一个功能,让用户加入等候室语音频道,并在他对某个频道中的消息做出反应时使用某些表情符号 他将被拖到另一个语音频道

那么我们有什么办法可以做到这一点吗?

【问题讨论】:

  • 请提供足够的代码,以便其他人更好地理解或重现问题。

标签: python discord discord.py


【解决方案1】:

由于细节模糊,我想出了这段代码

@bot.event
async def on_raw_reaction_add(payload):
    member = payload.member
    # change ... to your desired message-id and "" to your desired emoji
    if payload.message_id == ... and str(payload.emoji) == "":
        # change ... to your desired voice channel id:
        if member.voice and member.voice.channel.id == ...:
            # change ... to your "different voice channel" id
            await member.move_to(bot.get_channel(...))
        else:
            await member.send("Please join the x voice channel")

这使用原始事件,因为正常事件不适用于在机器人启动之前发送的消息。它检查消息ID和与之反应的表情符号。然后它检查成员是否在语音通道中,如果成员在语音通道中,它检查语音通道是否是所需的。如果这些都失败了,那么它会向成员发送消息,要求他加入语音频道(例如 x)。然后如果是那个语音通道,它会将成员移动到另一个语音通道

【讨论】:

  • 非常感谢!!!
  • 如果那个特定的 VC 已满,机器人还有什么办法可以向曾经做出反应的用户发送 DM 吗??
  • @user15609381 我似乎找不到任何方法来查找 vc 的最大成员数,但如果您知道,您可以使用 bot.get_channel(...) 部分并将其保存到名为 @ 的变量中987654324@ 例如在函数的开头,然后在move_to 中将bot.get_channel(...) 更改为您的变量名(例如vc)。对于成员检查,在 move_to 之前使用 if len(vc.members) > 123 并将 123 更改为最大成员数,如果 if 语句通过则只需 dm 用户
  • @user15609381 如果这有帮助,你应该考虑accepting this answer
  • 对不起,我是 stackoverflow 的新手,再次感谢 :)
猜你喜欢
  • 2021-08-26
  • 1970-01-01
  • 2020-06-15
  • 2020-09-24
  • 2018-04-04
  • 2021-01-31
  • 2021-12-11
  • 2021-04-15
  • 1970-01-01
相关资源
最近更新 更多