private function onNight(Game $game) { $nightMsg = ":crescent_moon: :zzz: The sun sets and the villagers go to sleep."; $this->sendMessageToChannel($game, $nightMsg); $wolves = $game->getPlayersOfRole(Role::WEREWOLF); $wolfMsg = ":crescent_moon: It is night and it is time to hunt. Type !kill #channel @player to make your choice. "; foreach ($wolves as $wolf) { $this->client->getDMByUserId($wolf->getId())->then(function (DirectMessageChannel $channel) use($wolfMsg) { $this->client->send($wolfMsg, $channel); }); } $seerMsg = ":mag_right: Seer, select a player by saying !see #channel @username."; $seers = $game->getPlayersOfRole(Role::SEER); foreach ($seers as $seer) { $this->client->getDMByUserId($seer->getId())->then(function (DirectMessageChannel $channel) use($seerMsg) { $this->client->send($seerMsg, $channel); }); } $bodyGuardMsg = ":muscle: Bodyguard, you may guard someone once per night. That player cannot be eliminated. Type !guard #channel @user"; $bodyguards = $game->getPlayersOfRole(Role::BODYGUARD); foreach ($bodyguards as $bodyguard) { $this->client->getDMByUserId($bodyguard->getId())->then(function (DirectMessageChannel $channel) use($bodyGuardMsg) { $this->client->send($bodyGuardMsg, $channel); }); } }
protected function sendMessageByDestName($message, $destinationName) { if ($destinationName[0] === '#') { $destinationName = substr($destinationName, 1); $this->client->getChannelByName($destinationName)->then(function (ChannelInterface $channel) use($message) { $this->client->send($message, $channel); }); } if ($destinationName[0] === '@') { $destinationName = substr($destinationName, 1); $this->client->getUserByName($destinationName)->then(function (User $user) use($message) { $this->client->getDMByUser($user)->then(function (ChannelInterface $channel) use($message) { $this->client->send($message, $channel); }); }); } }
/** * Sends a message to a game. * * @param Game $game * The game to send the message. * * @param $msg * The message. */ public function sendMessageToChannel($game, $msg) { $this->client->getChannelGroupOrDMByID($game->getId())->then(function (ChannelInterface $channel) use($msg) { $this->client->send($msg, $channel); }); }