public function getFriendsUsernames(TwitterBot $bot) { $response = $bot->getClient()->getFriends(['screen_name' => $bot->getUsername()]); return array_map(function ($friendData) { return $friendData->screen_name; }, $response->users); }
public function behave(TwitterBot $bot) { $username = $bot->getUsername(); $client = $bot->getClient(); $request = []; $lastSeenTweetId = $client->getLastSeenTweetId(); if ($lastSeenTweetId !== null) { $request['since_id'] = $lastSeenTweetId; } $lastSeenTweetId = null; $tweets = $client->getMentions($request); foreach ($tweets as $tweet) { $id = $tweet->id_str; $text = $tweet->text; if (strpos($text, '@' . $username) === 0) { $response = $this->getResponse($bot, $tweet); if ($response !== null) { if (is_string($response)) { $response = ['status' => $response]; } $client->tweet($response); } } $lastSeenTweetId = $id; } if ($lastSeenTweetId !== null) { $client->setLastSeenTweetId($lastSeenTweetId); } }
public function behave(TwitterBot $bot) { $client = $bot->getClient(); $username = $bot->getUsername(); $request = []; $lastSeenDmId = $client->getLastSeenDmId(); if ($lastSeenDmId !== null) { $request['since_id'] = $lastSeenDmId; } $lastSeenDmId = null; $dms = $client->getDms($request); $dms = array_reverse($dms); foreach ($dms as $dm) { $response = $this->getResponse($bot, $dm); if ($response !== null) { if (is_array($response)) { $dmRequest = $response; } else { $dmRequest = ['text' => $response]; } $dmRequest['user_id'] = $dm->sender->id_str; $client->dm($dmRequest); } $lastSeenDmId = $dm->id_str; } if ($lastSeenDmId !== null) { $client->setLastSeenDmId($lastSeenDmId); } }
public function finish(TwitterBot $bot) { $db = Di::getDefault()->getDb(); $sql = <<<'SQL' SELECT guesser, score FROM spymaster_game_guess WHERE spymaster_game_id = :spymaster_game_id ORDER BY score DESC LIMIT 5 SQL; $params = ['spymaster_game_id' => $this->id]; $result = $db->query($sql, $params); $filename = $this->generateGridImage(true); $mediaResponse = $bot->getClient()->uploadMedia(['media' => $filename]); $lines = []; $i = 1; while ($row = $result->fetch()) { $lines[] = $i++ . '. @' . $row['guesser'] . ': ' . ($row['score'] === null ? 'DIED' : $row['score']); } $text = implode("\n", $lines); $bot->getClient()->tweet(['status' => $text, 'in_reply_to_status_id' => $this->tweetId, 'media_ids' => [$mediaResponse->media_id_string]]); $sql = <<<'SQL' UPDATE spymaster_game SET finished = TRUE WHERE id = :spymaster_game_id SQL; $params = ['spymaster_game_id' => $this->id]; $result = $db->query($sql, $params); }