Question

Je veux faire un programme qui se connecte quelques ID sur différents protocoles, reçoit les messages et donne des réponses aux différents messages (commandes).

exemple:

me qui
bot. Je suis un bot alimenté libpurple

Le look de code comme ceci:

static void received_im_msg(PurpleAccount *account, char *sender, char *message,
                              PurpleConversation *conv, PurpleMessageFlags flags)
{
    if (conv==NULL) {
        conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, sender);
    }

    printf("%s: %s\n", sender, message);

    char *answer;

    if (message == "who") {
        answer="I'm a libpurple powered bot.";
    } else if (message=="hello") {
        answer="Hello, my firend!";
    } else {
        answer="Unknown command.";
    }
    //print the answer, so we can see it in terminal:
    printf("bot: %s\n",message);  

    //send the message:
    purple_conv_im_send(purple_conversation_get_im_data(conv),answer);
}

Pour moi, ce code semble correct, mais ne fonctionne pas comme prévu. Tout message que le bot reçoit, la réponse sera toujours commande Unknown. . Je ne comprends pas pourquoi le

message == "who"

est pas vrai, même si

printf("%s: %s\n", sender, message);

imprime quelque chose comme:
example_id_345:. Qui

Avez-vous une idée de pourquoi cette chose arrive? Ce que je fait de mal?

Merci et désolé pour mon mauvais anglais.

Était-ce utile?

La solution

Vous devez utiliser la fonction strcmp :

if (strcmp(message, "who") == 0) {
    answer="I'm a libpurple powered bot.";
} else if (strcmp(message, "hello") == 0) {

vérifie == que les pointeurs détiennent la même adresse, ce qui est pas ce que vous voulez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top