2017-04-23 3 views
0

ボットが以前にそのユーザーに送信したメッセージを表示するには、ユーザーのPMチャネルを取得する必要があります。私はすでに標準チャンネルのコマンドメッセージからUserオブジェクトを持っています。Discord.pyでユーザーのプライベートメッセージチャンネルを取得するにはどうすればよいですか?

@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に関連していないように思える:

は、これは私がこれまで試したものです。私は今どうすればいい?

答えて

1

これを行う簡単な方法は現在ありません。そこより新しいバージョンで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) 
-1

ユーザーオブジェクト自体は、午後の送信先となります。 だから、privateChannel = user

関連する問題