void QStreamCubeChat::onSmilesLoaded() { QNetworkReply * reply = qobject_cast< QNetworkReply * >( sender() ); QJsonParseError parseError; QJsonDocument jsonDoc = QJsonDocument::fromJson( reply->readAll(), &parseError ); if( QJsonParseError::NoError == parseError.error && jsonDoc.isArray() ) { QJsonArray jsonArr =jsonDoc.array(); for( const QJsonValue & smileVal : jsonArr ) { QJsonArray smileInfo = smileVal.toArray(); addSmile( smileInfo[ 0 ].toString(), DEFAULT_STREAM_CUBE_SMILE_PREFIX + smileInfo[ 1 ].toString() ); } if( isShowSystemMessages() ) { emit newMessage( ChatMessage( SERVICE_NAME, SERVICE_USER_NAME, tr( "Smiles loaded..." ), QString(), this ) ); emitSystemMessage( SERVICE_NAME, SERVICE_USER_NAME, tr( "Smiles loaded..." ) ); } } else { emit newMessage( ChatMessage( SERVICE_NAME, SERVICE_USER_NAME, tr( "Can not load smiles..." ), QString(), this ) ); emitSystemMessage( SERVICE_NAME, SERVICE_USER_NAME, tr( "Can not laod smiles..." ) ); } reply->deleteLater(); }
void QVidiChat::onSocketMessageReceived( const QString & message ) { QJsonParseError parseError; QJsonDocument jsonDoc = QJsonDocument::fromJson( message.toUtf8(), &parseError ); if( QJsonParseError::NoError == parseError.error && jsonDoc.isObject() ) { QJsonObject jsonObj = jsonDoc.object(); QString type = jsonObj[ "type" ].toString(); if( "message" == type ) { //{\"type\":\"message\",\"data\":{\"channel_id\":1024,\"user_id\":1016,\"user_name\":\"c0deum\",\"user_rights\":20,\"user_groups\":[],\"hideIcon\":0,\"icon\":\"\",\"color\":\"\",\"isStatus\":0,\"mobile\":0,\"paidsmiles\":{\"0\":[],\"1024\":[]},\"message_id\":3,\"timestamp\":1460203043,\"text\":\"123\"}} QJsonObject jsonMessageInfo = jsonObj[ "data" ].toObject(); QString nickName = jsonMessageInfo[ "user_name" ].toString(); QString messageText = jsonMessageInfo[ "text" ].toString(); messageText = ChatMessage::deleteTags( messageText ); emit newMessage( ChatMessage( SERVICE_NAME, nickName, messageText, QString(), this ) ); } else if( "welcome" == type ) { socket_->sendTextMessage( "{\"type\":\"auth\",\"data\":{\"token\":\"undefined\",\"site_id\":2}}" ); } else if( "success_auth" == type ) { socket_->sendTextMessage( "{\"type\":\"unjoin\",\"data\":{\"channel_id\":\"" + channelId_ +"\"}}" ); socket_->sendTextMessage( "{\"type\":\"join\",\"data\":{\"channel_id\":\"" + channelId_ + "\",\"hidden\":false,\"mobile\":0}}" ); } else if( "success_join" == type ) { if( isShowSystemMessages() ) { emit newMessage( ChatMessage( SERVICE_NAME, SERVICE_USER_NAME, tr( "Connected to " ) + channelName_ + "...", QString(), this ) ); emitSystemMessage( SERVICE_NAME, SERVICE_USER_NAME, tr( "Connected to " ) + channelName_ + tr( "..." ) ); } loadStatistic(); startUniqueTimer( statisticTimerId_, STATISTIC_INTERVAL ); startUniqueTimer( saveSocketConnectionTimerId_, SAVE_SOCKET_CONNECTION_INTERVAL ); } } //{\"type\":\"get_channel_counters\",\"data\":{\"channel_id\":1024}} //{\"type\":\"get_channel_history\",\"data\":{\"channel_id\":1024,\"from\":0}} // //{\"type\":\"channel_counters\",\"data\":{\"channel_id\":\"1024\",\"clients_in_channel\":1,\"users_in_channel\":0}} //{\"type\":\"message\",\"data\":{\"channel_id\":1024,\"user_id\":1016,\"user_name\":\"c0deum\",\"user_rights\":20,\"user_groups\":[],\"hideIcon\":0,\"icon\":\"\",\"color\":\"\",\"isStatus\":0,\"mobile\":0,\"paidsmiles\":{\"0\":[],\"1024\":[]},\"message_id\":3,\"timestamp\":1460203043,\"text\":\"123\"}} }
void CChatControl::AddServer(CString Host, UINT Port) { // If server already exists for(int i = 0; i < m_ServerList.size(); i++) { CChatServer* pServer = m_ServerList[i]; if(pServer->m_Host == Host) { if(pServer->m_Status == SOCK_CLOSED) { if(pServer->m_hSocket == INVALID_SOCKET) pServer->Create(); //m_pDoc->LogError("Chat Create Error: " + DWrdtoStr(pServer->GetLastError())); pServer->Connect(Host, Port); } ChatMessage(CHAT_UPDATE, NULL); ChatMessage(CHAT_SELECT, (DWORD) pServer->m_Console); return; } } if(!m_pPrefs->m_DisableIdent) StartIdentd(); CChatServer* Server = new CChatServer(this, Host, Port); //Attempt to connect to node Server->Create(); //m_pDoc->LogError("Chat Create Error: " + DWrdtoStr(Server->GetLastError())); if( !Server->Connect(Host, Port) ) if (Server->GetLastError() != WSAEWOULDBLOCK) { delete Server; return; } // Add node to list m_ServerList.push_back(Server); ChatMessage(CHAT_UPDATE, NULL); }
void Manager::ManageIncMsg() { while (!inc_msg_.empty()) { network::Message *msg = inc_msg_.front(); network::Message::MessageType type = msg->GetType(); std::string name; switch (type) { case network::Message::kTypeLogin: int fd; msg->Extract(name); msg->Extract(fd); LoginClient(fd, name); break; case network::Message::kTypeLogout: boost::uuids::uuid uid; msg->Extract(uid); LogoutClient(uid); break; case network::Message::kTypeChat: network::Message::ChatMessage chat; std::string chat_msg; msg->Extract(chat); msg->Extract(name); msg->Extract(chat_msg); ChatMessage(chat, name, chat_msg); break; } inc_msg_.pop(); delete msg; } }
void QStreamCubeChat::onChannelInfoLoaded() { QNetworkReply * reply = qobject_cast< QNetworkReply * >( sender() ); QJsonParseError parseError; QJsonDocument jsonDoc = QJsonDocument::fromJson( reply->readAll(), &parseError ); if( QJsonParseError::NoError == parseError.error && jsonDoc.isArray() ) { QJsonArray jsonArr = jsonDoc.array(); channelId_ = jsonArr[ 0 ].toString(); if( isShowSystemMessages() ) { emit newMessage( ChatMessage( SERVICE_NAME, SERVICE_USER_NAME, tr( "Connected to " ) + channelName_ + tr( "..." ), QString(), this ) ); emitSystemMessage( SERVICE_NAME, SERVICE_USER_NAME, tr( "Connected to " ) + channelName_ + tr( "..." ) ); } loadMessages(); startUniqueTimer( updateTimerId_, UPDATE_INTERVAL ); } reply->deleteLater(); }
// We received a new incoming chat message... Add it to the list void AbstractChat::newMessage(const string &from, const string &message, bool isPrivate, bool isSystem, bool fromSelf) { // Don't display it if it is from a muted player if(mGame->isOnMuteList(from)) return; // Choose a color Color color; if(fromSelf) color = Colors::white; else { if(mFromColors.count(from) == 0) // See if we have a color for this nick mFromColors[from] = getNextColor(); // If not, get one color = mFromColors[from]; } mMessages[mMessageCount % MESSAGES_TO_RETAIN] = ChatMessage(from, message, color, isPrivate, isSystem); mMessageCount++; if(fromSelf && isPrivate) // I don't think this can ever happen! ==> Should be !fromSelf ? deliverPrivateMessage(from.c_str(), message.c_str()); }
TEST(GoodEnoughTest, SimpleTrigger) { GoodEnoughBot testbot; GoodEnough test(&testbot); test.HandleMessage(ChatMessage("TestUser", "", "", "This test shoud be good enough", false)); EXPECT_TRUE(testbot._success); }
void CChatControl::RemoveServer(CChatServer* pServer) { if(pServer) { std::vector<CChatServer*>::iterator itServer; for(itServer = m_ServerList.begin(); itServer != m_ServerList.end(); itServer++) if(*itServer == pServer) { delete *itServer; m_ServerList.erase(itServer); itServer--; } // First clear channel, then select it ChatMessage(CHAT_UPDATE, NULL); ChatMessage(CHAT_UPDATE, NULL); } }
void QVidiChat::onSocketConnetError() { if( isShowSystemMessages() ) { emit newMessage( ChatMessage( SERVICE_NAME, SERVICE_USER_NAME, tr( "WebSocket Error... " ), QString(), this ) ); emitSystemMessage( SERVICE_NAME, SERVICE_USER_NAME, tr( "WebSocket Error..." )); } startUniqueTimer( reconnectTimerId_, RECONNECT_INTERVAL ); }
void QStreamCubeChat::onMessagesLoadError() { QNetworkReply * reply = qobject_cast< QNetworkReply * >( sender() ); if( isShowSystemMessages() ) { emit newMessage( ChatMessage( SERVICE_NAME, SERVICE_USER_NAME, tr( "Can not load messages..." ), QString(), this ) ); emitSystemMessage( SERVICE_NAME, SERVICE_USER_NAME, tr( "Can not laod messages..." ) ); } reply->deleteLater(); }
void QStreamCubeChat::reconnect() { QString oldChannelName = channelName_; disconnect(); loadSettings(); if( isEnabled() && !channelName_.isEmpty() && !oldChannelName.isEmpty() && isShowSystemMessages() ) { emit newMessage( ChatMessage( SERVICE_NAME, SERVICE_USER_NAME, tr( "Reconnecting to " ) + channelName_ + tr( "..." ), QString(), this ) ); emitSystemMessage( SERVICE_NAME, SERVICE_USER_NAME, tr( "Reconnecting to " ) + channelName_ + tr( "..." ) ); } connect(); }
void QStreamCubeChat::onMessagesLoaded() { QNetworkReply * reply = qobject_cast< QNetworkReply * >( sender() ); QByteArray data = reply->readAll(); QJsonParseError parseError; QJsonDocument jsonDoc = QJsonDocument::fromJson( data, &parseError ); if( QJsonParseError::NoError == parseError.NoError && jsonDoc.isArray() ) { QJsonArray jsonMessagesArr = jsonDoc.array(); if( "0" == lastMessageId_ ) { for( const QJsonValue & messageValue : jsonMessagesArr ) { QJsonArray messageInfoArr = messageValue.toArray(); if( messageInfoArr[ 1 ].toString().toInt() > lastMessageId_.toInt() ) lastMessageId_ = messageInfoArr[ 1 ].toString(); } } else { for( const QJsonValue & messageValue : jsonMessagesArr ) { QJsonArray messageInfoArr = messageValue.toArray(); if( messageInfoArr[ 1 ].toString().toInt() > lastMessageId_.toInt() ) { QString nickName = messageInfoArr[ 3 ].toString(); QString message = messageInfoArr[ 5 ].toString(); if( "1" == messageInfoArr[ 0 ].toString() ) { message = messageInfoArr[ 7 ].toString() + ", " + message; } message = insertSmiles( message ); lastMessageId_ = messageInfoArr[ 1 ].toString(); emit newMessage( ChatMessage( SERVICE_NAME, nickName, message, QString(), this ) ); } } } } reply->deleteLater(); }
void QVidiChat::connect() { if( !isEnabled() || channelName_.isEmpty() ) return; if( isShowSystemMessages() ) { emit newMessage( ChatMessage( SERVICE_NAME, SERVICE_USER_NAME, tr( "Connecting to " ) + channelName_ + tr( "..." ), QString(), this ) ); emitSystemMessage( SERVICE_NAME, SERVICE_USER_NAME, tr( "Connecting to " ) + channelName_ + tr( "..." ) ); } loadChannelInfo(); }
void QStreamCubeChat::onChannelInfoLoadError() { QNetworkReply * reply = qobject_cast< QNetworkReply * >( sender() ); if( isShowSystemMessages() ) { emit newMessage( ChatMessage( SERVICE_NAME, SERVICE_USER_NAME, tr( "Can not connect to " ) + channelName_ + tr( "..." ), QString(), this ) ); emitSystemMessage( SERVICE_NAME, SERVICE_USER_NAME, tr( "Can not connect to " ) + channelName_ + tr( "..." ) ); } startUniqueTimer( reconnectTimerId_, RECONNECT_INTERVAL ); reply->deleteLater(); }
void QYoutubeChatEx::message(const QString message, const QString authorName, const QString authorImageLogo, bool isChatModerator, bool isChatOwner, bool isChatSponsor) { bool blackListUser = blackList().contains( authorName ); bool supportersListUser = supportersList().contains( authorName ); QString userType = ""; if (blackListUser) userType = "ignore"; else if (supportersListUser||isChatSponsor) userType = "supporter"; emit newMessage( ChatMessage( YOUTUBE_SERVICE, authorName, message , userType, this ) ); }
void Connection::readChat(QDataStream& s) { int a,b; s>>a; qDebug()<<"Hei "<<a; char* buf = new char[2*a+1]; s.readRawData(buf,2*a); buf[2*a]=0; QString chatName=QString::fromRawData((QChar*)buf,a); s>>b; buf = new char[2*b+1]; s.readRawData(buf,2*b); buf[2*b]=0; QString chatMsg=QString::fromRawData((QChar*)buf,b); engine.chatList.append(ChatMessage(QDateTime::currentDateTime(),chatName,chatMsg)); }
void Bot::StartGame (void) { // this function handles the selection of teams & class // handle counter-strike stuff here... if (m_startAction == CMENU_TEAM) { m_startAction = CMENU_IDLE; // switch back to idle if (yb_forceteam.GetString ()[0] == 'C' || yb_forceteam.GetString ()[0] == 'c') m_wantedTeam = 2; else if (yb_forceteam.GetString ()[0] == 'T' || yb_forceteam.GetString ()[0] == 't') m_wantedTeam = 1; if (m_wantedTeam != 1 && m_wantedTeam != 2) m_wantedTeam = 5; // select the team the bot wishes to join... FakeClientCommand (GetEntity (), "menuselect %d", m_wantedTeam); } else if (m_startAction == CMENU_CLASS) { m_startAction = CMENU_IDLE; // switch back to idle if (g_gameVersion == CSVER_CZERO) // czero has spetsnaz and militia skins { if (m_wantedClass < 1 || m_wantedClass > 5) m_wantedClass = engine->RandomInt (1, 5); // use random if invalid } else { if (m_wantedClass < 1 || m_wantedClass > 4) m_wantedClass = engine->RandomInt (1, 4); // use random if invalid } // select the class the bot wishes to use... FakeClientCommand (GetEntity (), "menuselect %d", m_wantedClass); // bot has now joined the game (doesn't need to be started) m_notStarted = false; // check for greeting other players, since we connected if (engine->RandomInt (0, 100) < 20) ChatMessage (CHAT_HELLO); } }
void ProcessChatStanza(const buzz::XmlElement* Stanza) { check(Stanza != NULL); const buzz::XmlElement* XmlBody = Stanza->FirstNamed(buzz::QN_BODY); static const buzz::StaticQName QN_DELAY = { "urn:xmpp:delay", "delay" }; const buzz::XmlElement* Delay = Stanza->FirstNamed(QN_DELAY); FXmppChatMessageJingle ChatMessage( buzz::Jid(Stanza->Attr(buzz::QN_FROM)), buzz::Jid(Stanza->Attr(buzz::QN_TO)), XmlBody != NULL ? XmlBody->BodyText() : std::string(), Delay != NULL ? Delay->Attr(buzz::kQnStamp) : std::string() ); SignalChatReceived(ChatMessage); }
void QVidiChat::onChannelInfoLoaded() { QNetworkReply * reply = qobject_cast< QNetworkReply * >( sender() ); QJsonParseError parseError; QJsonDocument jsonDoc = QJsonDocument::fromJson( reply->readAll(), &parseError ); if( QJsonParseError::NoError == parseError.error && jsonDoc.isObject() ) { QJsonObject jsonObj = jsonDoc.object(); QJsonObject jsonUser = jsonObj[ "user" ].toObject(); QJsonObject jsonChannel = jsonUser[ "Channel" ].toObject(); channelId_ = jsonChannel[ "name" ].toString(); int delPos = channelId_.indexOf( '_' ); if( delPos > 0 ) { channelId_ = channelId_.right( channelId_.length() - delPos - 1 ); connectToSocket(); } else { if( isShowSystemMessages() ) { emit newMessage( ChatMessage( SERVICE_NAME, SERVICE_USER_NAME, tr( "Can not connect to " ) + channelName_ + "...", QString(), this ) ); emitSystemMessage( SERVICE_NAME, SERVICE_USER_NAME, tr( "Can not connect to " ) + channelName_ + tr( "..." ) ); } startUniqueTimer( reconnectTimerId_, RECONNECT_INTERVAL ); } // connectToJoinSocket(); //loadSid(); } reply->deleteLater(); }
static int __cdecl CHAT_EVENT(WPARAM /* wParam */, LPARAM lParam) { GCHOOK* pgch = (GCHOOK*)lParam; switch ( pgch->pDest->iType ) { case GC_USER_MESSAGE: { // ƒублирование в чат ChatMessage( pgch->pDest->ptszID, pgch->ptszText ); // ќтправка сообщени¤ DWORD dwLastError = 0; SendMessage( pgch->pDest->ptszID, pgch->ptszText, dwLastError ); } break; } return 0; }
void UserConnection::handlePM(const AdcCommand& c, bool echo) noexcept { auto message = c.getParam(0); auto cm = ClientManager::getInstance(); auto lock = cm->lock(); auto peer = cm->findOnlineUser(user->getCID(), hubUrl); auto me = cm->findOnlineUser(cm->getMe()->getCID(), hubUrl); // null pointers allowed here as the conn may be going on without hubs. if(echo) { std::swap(peer, me); } if(peer && peer->getIdentity().noChat()) return; if(PluginManager::getInstance()->runHook(HOOK_CHAT_PM_IN, peer, message)) return; string tmp; fire(UserConnectionListener::PrivateMessage(), this, ChatMessage(message, peer, me, peer, c.hasFlag("ME", 1), c.getParam("TS", 1, tmp) ? Util::toInt64(tmp) : 0)); }
void GameChat::add_message(const std::string& msg, const Colour& colour) { add_message(ChatMessage("", msg, Colour(), colour)); }
void Game::handleRenderMessage(const Json::Value &v) { auto entities = must_have_idx(v, "entities"); invariant(entities.isObject(), "should have entities array"); auto entity_keys = entities.getMemberNames(); for (auto &eid : entity_keys) { // find or create GameEntity corresponding to the auto it = game_to_render_id.find(eid); GameEntity *entity = nullptr; if (it == game_to_render_id.end()) { id_t new_id = Renderer::get()->newEntityID(); auto game_entity = new GameEntity(new_id); game_entity->setGameID(eid); Renderer::get()->spawnEntity(game_entity); game_to_render_id[eid] = new_id; entity = game_entity; } else { entity = GameEntity::cast(Renderer::get()->getEntity(it->second)); } renderEntityFromJSON(entity, entities[eid]); } auto events = must_have_idx(v, "events"); invariant(events.isArray(), "events must be array"); for (auto&& event : events) { add_effect( must_have_idx(event, "name").asString(), must_have_idx(event, "params")); } auto players = must_have_idx(v, "players"); invariant(players.isArray(), "players must be array"); for (int i = 0; i < players.size(); i++) { auto player = players[i]; id_t pid = toID(must_have_idx(player, "pid")); requisition_[pid] = must_have_idx(player, "req").asFloat(); power_[pid] = must_have_idx(player, "power").asFloat(); } auto teams = must_have_idx(v, "teams"); for (int i = 0; i < teams.size(); i++) { auto team = teams[i]; id_t tid = toID(must_have_idx(team, "tid")); victoryPoints_[tid] = must_have_idx(team, "vps").asFloat(); } auto chats = must_have_idx(v, "chats"); for (int i = 0; i < chats.size(); i++) { auto json_chat = chats[i]; auto chat = ChatMessage( toID(must_have_idx(json_chat, "pid")), must_have_idx(json_chat, "msg").asString(), Clock::now()); chatListener_(chat); } const float t = must_have_idx(v, "t").asFloat(); const float dt = must_have_idx(v, "dt").asFloat(); const float render_t = Renderer::get()->getGameTime(); if (render_t + dt > t) { LOG(WARNING) << "Renderer is ahead of game: " << render_t << " vs " << t << '\n'; Renderer::get()->setGameTime(t - dt); } if (render_t < t - 2 * dt) { LOG(WARNING) << "Renderer is behind server " << render_t << " vs " << t << '\n'; Renderer::get()->setGameTime(t - dt); } }
void DisplayTeamMsg(Player *player, string line) { if (!player) return; game.world->hud->messageDisplayer->addMessage(ChatMessage(*player, line)); }
void ReceiveContactMessage(LPCTSTR msg_from, LPCTSTR msg_to, LPCTSTR msg_text, int msg_len) { if ( ! pluginInstalled ) return; CString from( msg_from ); CString to( msg_to ); CString text( msg_text, msg_len ); from.MakeUpper(); to.MakeUpper(); // Свое собственное сообщение? if ( IsItMe( from ) ) { LOG ( "Ignoring my message." ); return; } // Нормализация разбиения сообщения на строки Normalize( text ); // Дубликат? if (db_get_b (NULL, modname, "Filter-dups", TRUE)) { // Вычисление прошедшего времени с последнего сообщения static FILETIME last_time = { 0, 0 }; FILETIME current_time; GetSystemTimeAsFileTime (¤t_time); ULONGLONG elapsed = ((ULONGLONG) current_time.dwLowDateTime | (ULONGLONG) current_time.dwHighDateTime << 32) - ((ULONGLONG) last_time.dwLowDateTime | (ULONGLONG) last_time.dwHighDateTime << 32); // Вычисление MD5-хэшей отправителя MD5Context ctx; md5init (&ctx); md5update (&ctx, (const unsigned char*)(LPCTSTR)from, from.GetLength() * sizeof (TCHAR)); unsigned char digest_from_current [16] = {0}; static unsigned char digest_from_last [16] = {0}; md5final (digest_from_current, &ctx); // Вычисление MD5-хэшей сообщения md5init (&ctx); md5update (&ctx, (const unsigned char*)(LPCTSTR)text, text.GetLength() * sizeof (TCHAR)); unsigned char digest_text_current [16] = {0}; static unsigned char digest_text_last [16] = {0}; md5final (digest_text_current, &ctx); // Если прошло менее 2 секунд между сообщениями if (elapsed < 20000000) { // И отправители совпадают if (memcmp (digest_from_current, digest_from_last, 16) == 0) { // И сообщение совпадает if (memcmp (digest_text_current, digest_text_last, 16) == 0) { // то пропускаем такое сообщение LOG ("Duplicate message detected"); return; } } } last_time = current_time; CopyMemory (digest_from_last, digest_from_current, 16); CopyMemory (digest_text_last, digest_text_current, 16); } #ifdef CHAT_ENABLED if ( ! IsItMe( to ) && pluginChatEnabled ) // Групповой адрес? { // Формирование группового сообщения if ( ChatNewSession( to ) ) { // Добавить группу ATLVERIFY( ChatAddGroup( to, _T("Normal") ) ); // Добавить себя ATLVERIFY( ChatJoinMe( to, _T("Normal") ) ); // Добавить "От Кого" ATLVERIFY( ChatJoinUser( to, from, _T("Normal") ) ); // Завершение создания чата ATLVERIFY( ChatInitDone( to ) ); // Перевод чат-контакта в онлайн ATLVERIFY( ChatOnline( to ) ); // Сообщение ATLVERIFY( ChatMessage( to, from, text ) ); } } else #endif // CHAT_ENABLED { // Формирование приватного сообщения HANDLE hContact = AddToListByName( from, 0, NULL, false, false ); if ( hContact ) { PROTORECVEVENT pre = { 0 }; pre.timestamp = time (); CT2A textA( text ); pre.szMessage = (LPSTR)(LPCSTR)textA; CCSDATA ccs = { 0 }; ccs.szProtoService = PSR_MESSAGE; ccs.hContact = hContact; db_unset (ccs.hContact, "CList", "Hidden"); ccs.lParam = (LPARAM) ⪯ CallServiceSync (MS_PROTO_CHAINRECV, 0, (LPARAM) &ccs); // Переводим контакт в онлайн SetContactStatus( hContact, contact_scanner::ScanContact( hContact ), true ); // Авто-ответчик if ( db_get_b( NULL, modname, "Auto-answer", FALSE ) ) Autoanswer( hContact ); } } }
//#yotube signals region void QYoutubeChatEx::error(const QString errorMessage) { if( isShowSystemMessages() ) emit newMessage( ChatMessage( YOUTUBE_SERVICE, YOUTUBE_USER, "Error: " + errorMessage , "", this ) ); }