2017-04-23 1 views
0

Je dois obtenir le canal MP d'un utilisateur pour voir les messages que mon bot a précédemment envoyés à cet utilisateur. J'ai déjà leur objet Utilisateur d'un message de commande dans un canal standard.Comment puis-je obtenir un canal de message privé d'un utilisateur dans Discord.py?

C'est ce que je l'ai essayé jusqu'à présent:

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

Cependant, il semble que le canal de DM d'un utilisateur n'est pas lié à leur nom d'utilisateur. Qu'est-ce que je devrais faire maintenant?

Répondre

1

Il n'y a aucun moyen simple de le faire actuellement. Il pourrait y avoir des plans pour un user.dm_channel dans une version plus récente, mais pour l'instant nous devons faire avec une boucle à travers client.private_channels et la recherche de l'utilisateur:

@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

votre objet utilisateur lui-même devient la destination h. Donc, privateChannel = utilisateur