Полученное сообщение
Я хочу сделать программу, которая регистрирует несколько идентификаторов на разных протоколах, получает сообщения и дает ответы на разные сообщения (команды).
пример:
я: кто
бот: я бот на базе libpurple.
Код выглядит так:
static void receive_im_msg(PurpleAccount *account, char *sender, char *message, PurpleConversation *conv, флаги PurpleMessageFlags) { if (conv==NULL) { conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, аккаунт, отправитель); } printf("%s: %s\n", отправитель, сообщение); символ * ответ; if (message == "кто") { answer="Я бот, работающий на libpurple."; } else if (message=="hello") { answer="Привет, мой бранд!"; } еще { answer = "Неизвестная команда."; } // напечатать ответ, чтобы мы могли видеть его в терминале: printf("бот: %s\n", сообщение); // отправить сообщение: purple_conv_im_send(purple_conversation_get_im_data(ко), ответ); }
Для меня этот код выглядит нормально, но не работает так, как ожидалось. На любое сообщение, которое получает бот, ответом всегда будет Неизвестная команда., Я не могу понять, почему
сообщение == "кто"
не верно, даже если
printf("%s: %s\n", отправитель, сообщение);
печатает что-то вроде:
пример_ид_345: кто.
Ты хоть представляешь, почему это происходит? Что я сделал не так?
Спасибо и извините за мой плохой английский.
1 ответ
Решение
Вам нужно использовать strcmp
функция:
if (strcmp(message, "who") == 0) {
answer="I'm a libpurple powered bot.";
} else if (strcmp(message, "hello") == 0) {
==
проверяет, что указатели содержат один и тот же адрес, а это не то, что вам нужно.