收到信息消息

时间:2010-12-28 21:37:23

标签: c signals instant-messaging libpurple

我想创建一个程序,在不同的协议上记录几个ID,接收消息并给出不同消息(命令)的答案。

示例:

我: bot:我是一个libpurple动力机器人。

代码如下所示:

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);
}

对我来说,这段代码看起来还不行,但是没有按预期工作。机器人收到的任何消息,答案将始终是未知命令。

我无法理解
message == "who"

不是,即使

printf("%s: %s\n", sender, message);

打印如下:
example_id_345:谁

你知道为什么会发生这件事吗?我做错了什么?

谢谢你,抱歉我的英语不好。

1 个答案:

答案 0 :(得分:2)

您需要使用strcmp功能:

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

==检查指针是否保持相同的地址,这不是您想要的。