我想制作一个程序,该程序在不同协议上登录几个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:谁.

您是否知道为什么这件事会发生?我做错了什么?

谢谢,对不起,我的英语不好。

有帮助吗?

解决方案

您需要使用 strcmp 功能:

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top