2010-12-28 3 views
0

Je veux créer un programme qui enregistre quelques identifiants sur différents protocoles, reçoit les messages et donne des réponses à différents messages (commandes).message de signal reçu-im-msg

exemple:

moi: qui
bot: Je suis un bot alimenté libpurple.

Le code ressemble à 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 inconnue.. Je ne comprends pas pourquoi le

message == "who"

n'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 j'ai mal fait?

Merci et désolé pour mon mauvais anglais.

Répondre

2

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.

+1

Cela fonctionne. Merci beaucoup! –