Вопрос

Я хочу сделать программу, которая регистрирует несколько идентификаторов по разным протоколам, получает сообщения и дает ответы на разные сообщения (команды).

пример:

мне: кто
Бот: Я бот с питанием либерополита.

Код выглядит так:

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