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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top