messaggio di segnale ricevuto-im-msg
-
13-10-2019 - |
Domanda
Voglio fare un programma che accede pochi gli ID su diversi protocolli, riceve i messaggi e dà risposte a diversi messaggi (comandi).
Esempio:
me: che
bot. sono un bot alimentato libpurple
Il look codice come questo:
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); }
Per quanto mi riguarda, questo codice sembra proprio male, ma non funziona come previsto. Qualsiasi messaggio il bot riceve, la risposta sarà sempre Comando sconosciuto. . Non riesco a capire il motivo per cui la
message == "who"
Non è vero, anche se
printf("%s: %s\n", sender, message);
stampa qualcosa come:
example_id_345:. Che
Avete qualche idea del perché questo accade? Quello che ho fatto di sbagliato?
te e mi dispiace Grazie per il mio cattivo inglese.
Soluzione
È necessario utilizzare il strcmp
funzione:
if (strcmp(message, "who") == 0) {
answer="I'm a libpurple powered bot.";
} else if (strcmp(message, "hello") == 0) {
controlli ==
che i puntatori tenere lo stesso indirizzo, che non è quello che si desidera.