2

我需要获取用户的 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 无关。我现在该怎么办?

4

2 回答 2

4

目前没有任何简单的方法可以做到这一点。可能有更新版本的计划,但现在我们必须通过循环和寻找用户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)
于 2017-04-23T20:28:18.627 回答
-1

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

所以, privateChannel = user

于 2017-05-17T03:40:25.537 回答