0

異なるプロトコルでいくつかの ID にログインし、メッセージを受信し、異なるメッセージ (コマンド) に応答するプログラムを作成したいと考えています。

例:

me: who
bot: libpurple を使ったボットです。

コードは次のようになります。

static void received_im_msg(PurpleAccount *アカウント、char *送信者、char *メッセージ、
                              PurpleConversation *conv、PurpleMessageFlags フラグ)
{
    if (conv==NULL) {
        conv = Purple_conversation_new(PURPLE_CONV_TYPE_IM、アカウント、送信者);
    }

    printf("%s: %s\n", 送信者, メッセージ);

    char *答え;

    if (メッセージ == "誰") {
        answer="私は libpurple を搭載したボットです。";
    } その他の場合 (メッセージ =="こんにちは") {
        answer="こんにちは、私の友人です!";
    } そうしないと {
        answer="不明なコマンドです。";
    }
    //答えを出力して、ターミナルで確認できるようにします。
    printf("ボット: %s\n",メッセージ);  

    // メッセージを送信:
    Purple_conv_im_send(purple_conversation_get_im_data(conv),answer);
}

私にとって、このコードは問題ないように見えますが、期待どおりには機能しません。ボットが受信するメッセージは、常に不明なコマンドです。. なぜだか理解できない

メッセージ == 「誰」

であっても、真実ではありません

printf("%s: %s\n", 送信者, メッセージ);


example_id_345: whoのようなものを出力します。

なぜこのようなことが起こるのか、何か考えがありますか? 私は何を間違えましたか?

ありがとう、私の悪い英語でごめんなさい。

4

1 に答える 1

2

strcmp次の関数を使用する必要があります。

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

==ポインターが同じアドレスを保持していることを確認しますが、これは必要なものではありません。

于 2010-12-28T21:40:13.123 に答える