void Student::Introduce() { Person::Introduce(); std::cout << "I am a Student. "; if(MyId() == classes.leader) { std::cout << "I am the leader of Class "; } else { std::cout << "I am in Class "; } std::cout << MyClasses() << "." << std::endl; }
void TwitterTask::Entry(TaskServer &server, const std::atomic<bool> &cancel) { // 初回実行時のみ // 自分の最後のツイート以降でフィルタする if (m_since_id == 0) { m_since_id = GetInitialSinceId(); logger.Log(LogLevel::Info, "Initial since_id: %" PRIu64, m_since_id); } // ホームタイムラインを取得 auto twitter = system::Get().twitter; auto json = twitter.Statuses_HomeTimeline({ {"since_id", std::to_string(m_since_id)}, {"count", "200"}}); auto log_tweet = [](const json11::Json &status, std::time_t timestamp) { logger.Log(LogLevel::Info, "id=%s time=%s local=%s screen=%s name=%s", status["id_str"].string_value().c_str(), status["created_at"].string_value().c_str(), util::DateTimeStr(timestamp).c_str(), status["user"]["screen_name"].string_value().c_str(), status["user"]["name"].string_value().c_str()); logger.Log(LogLevel::Info, "%s", status["text"].string_value().c_str()); }; for (const auto &status : json.array_items()) { // ID uint64_t id = util::to_uint64(status["id_str"].string_value()); // ローカルタイムに変換 std::time_t timestamp = util::StrToTimeTwitter( status["created_at"].string_value()); struct tm local; ::localtime_r(×tamp, &local); // 自分のツイートには反応しない if (util::to_uint64(status["id_str"].string_value()) == twitter.MyId()) { continue; } // リツイートには反応しない if (!status["retweeted_status"].is_null()) { continue; } if (IsWhite(status)) { logger.Log(LogLevel::Info, "Find White"); log_tweet(status, timestamp); std::string msg = u8"@"; msg += status["user"]["screen_name"].string_value(); msg += ' '; msg += u8"ホワイト!"; twitter.Tweet(msg, status["id_str"].string_value()); m_since_id = std::max(id, m_since_id); } if (IsBlack(status)) { logger.Log(LogLevel::Info, "Find Black"); log_tweet(status, timestamp); std::string msg = u8"@"; msg += status["user"]["screen_name"].string_value(); msg += ' '; msg += u8"ブラック"; twitter.Tweet(msg, status["id_str"].string_value()); m_since_id = std::max(id, m_since_id); } } }