Example #1
1
 private function main_menu()
 {
     $DbUser = new User($this->db);
     $group_chats = $DbUser->getActiveChatsByUser($this->Message->User);
     $Vote = new Vote($this->db);
     $popularity = $Vote->getVoteTotalForUser($this->Message->User);
     $ranking = Query::getGlobalRanking($this->db, $this->Message->User);
     $this->out = emoji(0x1f44b) . " Hi *" . $this->Message->User->getName() . "*!" . "\nI'm *" . BOT_FRIENDLY_NAME . "*, your _Premier Shitposting Solution_ " . emoji(0x2122) . "." . "\n\n" . emoji(0x1f481) . emoji(0x1f3fb) . "You're a " . $this->Message->User->getLevelAndTitle() . " with `" . $this->Message->User->getBalance() . "` Coin." . "\nOverall, your popularity is at *{$popularity}* points, and you're ranked *" . addOrdinalNumberSuffix($ranking) . "* on the global leaderboard.";
     $this->out .= "\n\n*This menu system is currently under development and may be incomplete/broken. You've been warned!*";
     if ($group_chats) {
         $this->out .= "\n\nI see you in the following group chats:";
         foreach ($group_chats as $chat) {
             $this->out .= "\n`   `• `" . $chat->title . "`";
         }
     }
     $this->out .= "\n\nWhat would you like?";
     $this->keyboard = [[['text' => emoji(0x2754) . ' Help', 'callback_data' => '/help help'], ['text' => emoji(0x1f4bc) . ' Business', 'callback_data' => '/help business']], [['text' => emoji(0x1f3ae) . ' Play a game', 'callback_data' => '/help games'], ['text' => emoji(0x2699) . ' Change preferences', 'callback_data' => '/preferences']]];
 }
Example #2
0
 /**
  * @param UserVote[] $votes
  * @return UserVote[]
  */
 private function map_users($votes)
 {
     $DbUser = new User($this->db);
     foreach ($votes as $vote) {
         $vote->voter = $DbUser->getUserFromId($vote->voter);
     }
     return $votes;
 }
Example #3
0
 private function getBank(Transaction $transaction)
 {
     if ($transaction->user_sending->user_id == COIN_BANK_ID) {
         return $transaction->user_sending;
     } elseif ($transaction->user_receiving->user_id == COIN_BANK_ID) {
         return $transaction->user_receiving;
     }
     return $this->UserSQL->getUserFromId(COIN_BANK_ID);
 }
Example #4
0
 private function losePopularity()
 {
     $this->out .= "\n" . emoji(0x1f465) . " Sickening groans surround you, as corpses rise from the earth. ";
     $Vote = new Vote($this->db);
     $DbUser = new User($this->db);
     $users_in_chat = $DbUser->getAllUsersInChat($this->Message->Chat->id);
     foreach ($users_in_chat as $user) {
         if ($user->user_id != $this->Message->User->user_id) {
             $userVote = new UserVote();
             $userVote->construct($user, $this->Message->User, new VoteType(VoteType::Down));
             $Vote->SQL->update_vote($userVote);
         }
     }
     $this->out .= "\n*" . $this->Message->User->getName() . "*, you become very unpopular. ";
 }
Example #5
0
 public function sendReminders()
 {
     $reminders = $this->SQL->select_reminders();
     $UserDb = new User($this->db);
     /** @var Reminder $reminder */
     foreach ($reminders as $reminder) {
         $date_due = Carbon::parse($reminder->date_due);
         $date_created = Carbon::parse($reminder->date_created);
         if ($date_due->lte(Carbon::now())) {
             $user = $UserDb->getUserFromId($reminder->user_id);
             $out = emoji(0x23f0) . " *" . $user->getName() . "*, your reminder from *" . $date_created->diffForHumans(Carbon::now(), true) . "* ago:" . "\n" . "\n`" . $reminder->content . "`";
             Telegram::talkForced($reminder->chat_id, $out);
             $this->SQL->delete_reminder($reminder);
         }
     }
 }
Example #6
0
 private function getUserTimeZones()
 {
     $DbUser = new User($this->db);
     if ($this->Message->Chat->id == '56390227') {
         $users = $DbUser->getAllUsersInChat('-1001033369096');
     } else {
         $users = $DbUser->getAllUsersInChat($this->Message->Chat->id);
     }
     $timezones = [];
     foreach ($users as $user) {
         if (isset($user->timezone)) {
             $timezones[$user->timezone][] = $user->getName();
         }
     }
     $timezones['Australia/Perth'][] = 'ShitBot';
     return $timezones;
 }
Example #7
0
 private function collectPeriodicTax()
 {
     $bank = $this->UserSQL->getUserFromId(COIN_BANK_ID);
     $this->Transact->CoinSQL->CollectPeriodicTax();
     $to_collect = COIN_PERIODIC_TAX * $this->Transact->CoinSQL->getTotalCoinExisting(false);
     $bank->balance = $bank->getBalance(true) + $to_collect;
     $this->Transact->CoinSQL->AddTransactionLog(new Transaction(NULL, $bank, $to_collect, new TransactionType(TransactionType::AllTax)));
     $this->Transact->maintainFixedLevel($bank);
     $bank->save($this->db);
     Telegram::customShitpostingMessage(emoji(0x1f4e2) . " " . COIN_TAXATION_BODY . " just collected " . round($to_collect, 2) . " " . COIN_CURRENCY_NAME . " in tax.");
     return true;
 }
Example #8
0
 private function sed()
 {
     $s = explode('/', $this->Message->text);
     if (count($s) == 3 && $s[0] == 's') {
         if ($this->Message->MessageType == MessageType::Reply) {
             $out = preg_replace("/" . $s[1] . "/", $s[2], $this->Message->reply_to_message->text);
             if (strcmp($out, $this->Message->reply_to_message->text) === 0) {
                 return false;
             }
         } else {
             $DbUser = new User($this->db);
             $last_message = $DbUser->getUserPostStatsInChat($this->Message->Chat, $this->Message->User)->lastpost;
             $out = preg_replace("/" . $s[1] . "/", $s[2], $last_message);
             if (strcmp($out, $last_message) === 0) {
                 return false;
             }
         }
         Telegram::talk($this->Message->Chat->id, "*{$out}*");
         return true;
     }
     return false;
 }
Example #9
0
 /**
  * @param $game_id
  * @return Player|bool
  */
 public function select_players($game_id)
 {
     $sql = 'SELECT * FROM bj_players WHERE game_id = :game_id ORDER BY player_no ASC';
     $query = $this->db->prepare($sql);
     $query->bindValue(':game_id', $game_id);
     $query->execute();
     if ($query->rowCount()) {
         $Players = $query->fetchAll(\PDO::FETCH_CLASS, 'GroupBot\\Brains\\Blackjack\\Types\\Player');
         usort($Players, function ($a, $b) {
             if ($a->player_no == $b->player_no) {
                 return 0;
             }
             return $a->player_no < $b->player_no ? -1 : 1;
         });
         $DbUser = new User($this->db);
         foreach ($Players as $key => $player) {
             $Players[$key]->user = $DbUser->getUserFromId($player->user_id);
             unset($Players[$key]->user_id);
         }
         return $Players;
     }
     return false;
 }
Example #10
0
 private function processStats()
 {
     $userSQL = new User($this->db);
     if ($this->Message->isNormalMessage()) {
         $userSQL->updateUserMessageStats($this->Message);
     } elseif ($this->Message->MessageType == MessageType::NewChatParticipant) {
         $userSQL->updateWhetherUserIsInChat($this->Message->Chat, $this->Message->User, true);
     } elseif ($this->Message->MessageType == MessageType::LeftChatParticipant) {
         $userSQL->updateWhetherUserIsInChat($this->Message->Chat, $this->Message->User, false);
     } elseif ($this->Message->isCommand()) {
         $userSQL->updateUserCommandStats($this->Message);
     }
 }
Example #11
-1
 /**
  * @param \PDO $db
  * @param Chat $chat
  * @param $name
  * @return \GroupBot\Types\User|string
  */
 public static function getUserMatchingStringOrErrorMessage(\PDO $db, Chat $chat, $name)
 {
     $userSQL = new User($db);
     $userInChat = true;
     if (isset($chat)) {
         if (!($user_receiving = $userSQL->getUsersInChatWithName($chat, $name))) {
             if (!($user_receiving = $userSQL->getUsersWithName($name))) {
                 return emoji("0x1F44E") . " Can't find any users matching `" . $name . "`, brah";
             }
             $userInChat = false;
         }
     } else {
         if (!($user_receiving = $userSQL->getUsersWithName($name))) {
             return emoji("0x1F44E") . " Can't find any users matching `" . $name . "`, brah";
         }
         $userInChat = false;
     }
     if (count($user_receiving) > 1) {
         $out = "There are " . count($user_receiving) . " users matching that name" . ($userInChat ? " in this chat:" : ":");
         foreach ($user_receiving as $user) {
             $out .= "\n`   `•` " . $user->getNameLevelAndTitle();
         }
         $out .= "Please redefine your query";
         return $out;
     }
     return $user_receiving[0];
 }