signal reçu-im-msg Message
-
13-10-2019 - |
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.
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.