【问题标题】:How do I get a user's private message channel in Discord.py?如何在 Discord.py 中获取用户的私信频道?
【发布时间】:2017-09-20 10:18:42
【问题描述】:

我需要获取用户的 PM 频道才能查看我的机器人之前发送给该用户的消息。我已经从标准频道的命令消息中获得了他们的用户对象。

这是我迄今为止尝试过的:

@client.event
async def in_msg(msg):
    user = msg.author
    privateChannel = client.get_channel(user.id) # not working
    if privateChannel is not None:
        await doSomethingWithChannel(privateChannel, user)
    else:
        privateChannel = await client.start_private_message(user)
        await firstMessageToUser(privateChannel, user)

但是,用户的 DM 频道似乎与其用户 ID 无关。我现在该怎么办?

【问题讨论】:

    标签: python python-3.x discord discord.py


    【解决方案1】:

    您的用户对象本身成为 pm 的目的地。

    所以,privateChannel = user

    【讨论】:

    • 您无法从用户对象获取频道历史记录
    【解决方案2】:

    目前没有任何简单的方法可以做到这一点。可能有计划在较新的版本中使用 user.dm_channel,但现在我们必须通过循环访问 client.private_channels 并寻找用户:

    @client.event
    async def in_msg(msg):
        user = msg.author
        for ch in client.private_channels:
            if user in recipients and len(recipients) == 2:
                await doSomethingWithChannel(ch, user)
                return
        # user doesn't have a PM channel yet if we got here
        ch = await client.start_private_message(user)
        await firstMessageToUser(ch, user)
    

    【讨论】:

      猜你喜欢
      • 2021-07-27
      • 2021-03-13
      • 2022-01-16
      • 2021-01-12
      • 2022-08-15
      • 1970-01-01
      • 2017-09-19
      • 1970-01-01
      • 2019-03-25
      相关资源
      最近更新 更多