如何在 Discord.py 中获取用户的私人消息频道?
How do I get a user's private message channel in Discord.py?
我需要获取用户的 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 无关。我现在该怎么办?
目前没有任何简单的方法可以做到这一点。可能有在较新版本中使用 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)
您的用户对象本身成为 pm 的目的地。
所以,privateChannel = user
我需要获取用户的 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 无关。我现在该怎么办?
目前没有任何简单的方法可以做到这一点。可能有在较新版本中使用 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)
您的用户对象本身成为 pm 的目的地。
所以,privateChannel = user