7 votes

Envoyer un message privé avec discordgo

Je voudrais qu'un robot discord réponde à un message fait dans un canal public par un message privé.

Je suis en mesure de détecter si un canal est privé ou non en utilisant le code suivant de l'application FAQ :

func isTheChannelTheMessageWasSentInPrivate(s *discordgo.Session, m *discordgo.MessageCreate) {
    channel, err := s.State.Channel(m.ChannelID)
    if err != nil {
        astilog.Fatal(err)
        return
    } else if m.Author.ID == s.State.User.ID {
        return
    }
    channelIsPrivate := strconv.FormatBool(channel.IsPrivate)
    print("Channel ID: " + m.ChannelID + ". Is it private? " + channelIsPrivate + "\n")
}

Et je peux répondre à un message sur le même canal qu'il a été reçu en utilisant ce code :

func recieveMessage(s *discordgo.Session, m *discordgo.MessageCreate) {
    s.ChannelMessageSend(m.ChannelID, "Reply!")
}

Mais je n'arrive pas à comprendre comment faire pour que le ChannelID de la chaîne de messages directs d'un utilisateur du Message qui est disponible à la réception d'un message.

4voto

tsdtsdtsd Points 225

La structure de session possède une méthode UserChannelCreate(recipientID string) qui renvoie le canal DM pour l'ID utilisateur donné. Ne faites pas attention au 'Create', si un canal DM existe déjà, il sera réutilisé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X