2017-04-23 3 views
0

Ich muss einen PM-Kanal eines Benutzers abrufen, um die Nachrichten zu sehen, die mein Bot zuvor an diesen Benutzer gesendet hat. Ich habe bereits ihr Benutzerobjekt von einer Befehlsnachricht in einem Standardkanal.Wie erhalte ich den privaten Nachrichtenkanal eines Nutzers in Discord.py?

Das ist, was ich bisher versucht habe:

@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) 

Allerdings scheint es wie ein DM-Kanal des Benutzers, um ihren Benutzer-ID nicht verwendet. Was sollte ich jetzt tun?

Antwort

1

Es gibt keine einfache Möglichkeit, dies zur Zeit zu tun. Es könnte Pläne für ein user.dm_channel in einer neueren Version sein, aber jetzt müssen wir mit Looping durch client.private_channels und suchen für den Benutzer machen tun:

@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

Ihr Benutzerobjekt selbst das Ziel für pm wird. Also, privateChannel = Benutzer

Verwandte Themen