<?php
class AccessManager {
private $tg;
public $userIdBlackList;
public $userIdlimitedList;
function __construct($tg)
{
$this->tg = $tg;
}
private function getTranslateGerman(): TranslateService {
return $this->tg;
}
public function getTG(): TranslateService{
return $this->tg;
}
public function userIsInBlackList(){
$this->userIdBlackList[]= '1658517323333333';
$this->userIdBlackList[]= '299959723';
$this->userIdBlackList[]= '289011740';// he is sending many unrelated messages
$this->userIdBlackList[]= '172141318';
$this->userIdBlackList[]= '214284723'; // many hello /start
$this->userIdBlackList[]= '269367568'; // many hello /start
$this->userIdBlackList[]= '95834979'; // many hello /start
$this->userIdBlackList[]= '278398360'; // copy to channel https://t.me/ichbinrezasprachtraining
$this->userIdBlackList[]= '105682877'; // copy to channel https://t.me/ichbinrezasprachtraining
$this->userIdBlackList[]= '1281197873'; // he wrties bad words
$this->userIdBlackList[]= '687990883'; // he wrties bad words
$this->userIdLimitedList[]= '156318132';
$this->userIdLimitedList[]= '244973174'; // just to safe the database
$this->userIdLimitedList[]= '172141318'; // he is sending many unrelated messages
$this->userIdLimitedList[]= '247644114'; // he is sending many unrelated messages
$this->userIdLimitedList[]= '68779174'; // he is translating alot
$this->userIdLimitedList[]= '171247688'; // he is translating alot
$this->userIdLimitedList[]= '302020264'; // he is translating alot
$this->userIdLimitedList[]= '181634976'; // he is translating alot
$this->userIdLimitedList[]= '381996837'; // he is translating alot
$this->userIdLimitedList[]= '91826293'; // he is translating alot
$this->userIdLimitedList[]= '147870630'; // he is translating alot
$this->userIdLimitedList[]= '14738434'; // he is translating alot
$this->userIdLimitedList[]= '553834457'; // he is translating alot
$this->userIdLimitedList[]= '535955384'; // he is translating alot
$this->userIdLimitedList[]= '535955384'; // he is translating alot
$this->userIdLimitedList[]= '105682877'; // he is translating alot
return in_array( $this->getTranslateGerman()->message ['from'] ['id'], $this->userIdBlackList);
}
public function canConvertCurrency(){
$numberOfConverts=10;
$sentInviteNumber = 3;
$notJust2PersonsSuggestedByUser = true;
$numberOfConverts= $this->getTranslateGerman()->getDB()->getNumberOfCurrencyConverts($this->getTranslateGerman()->message['from']['id']);
$sentInviteNumber = $this->getTranslateGerman()->
getDB()->getSentInviteNumber($this->getTranslateGerman()->message['from']['id']);
$notJust2PersonsSuggestedByUser = !$this->getTranslateGerman()->
getDB()->hasUserSuggested($this->getTranslateGerman()->message['from']['id'], 2);
if( $numberOfConverts >= 4 && $sentInviteNumber < 5 && $notJust2PersonsSuggestedByUser ){
$askText = "سلام.";
$askText .= PHP_EOL." خیلی خوشحالم که برای تبدیل مقدار ارز از من سوال می پرسی";
$askText .= PHP_EOL."من خیلی دوست دارم که به دوستان دیگه هم کمک کنم";
$askText .= PHP_EOL."برای همین ازت خواهش می کنم که منو به ۵ نفر از دوستات معرفی کنی";
$askText .= PHP_EOL."با استفاده از دکمه ارسال دعوتنامه به دوستان می تونی منو به دوستات معرفی کنی";
$askText .= PHP_EOL."وقتی که دوستانت به من پیام بدن دیگه این پیغام فرستاده نمی شه";
$this->getTranslateGerman()->sendMessage($askText,$this->getTranslateGerman()->chat_id);
$this->getTranslateGerman()->inviteService->sendInvitation();
return false;
}
return true;
}
public function canExtractText(){
$numberOfExtracts=50;
$sentInviteNumber = 3;
$notJust2PersonsSuggestedByUser = false;
$numberOfExtracts= $this->getTranslateGerman()->getDB()->getNumberOfExtracts($this->getTranslateGerman()->message['from']['id']);
$sentInviteNumber = $this->getTranslateGerman()->
getDB()->getSentInviteNumber($this->getTranslateGerman()->message['from']['id']);
$notJust2PersonsSuggestedByUser = !$this->getTranslateGerman()->
getDB()->hasUserSuggested($this->getTranslateGerman()->message['from']['id'], 2);
/* if( $numberOfConverts >= 0 && $sentInviteNumber < 50 && $notJust2PersonsSuggestedByUser ){
*/ if( $numberOfExtracts >= 4 && $sentInviteNumber < 5 && $notJust2PersonsSuggestedByUser ){
$askText = "سلام.";
$askText .= PHP_EOL." خیلی خوشحالم که برای استخراج متن از من سوال می پرسی";
$askText .= PHP_EOL."من خیلی دوست دارم که به دوستان دیگه هم کمک کنم";
$askText .= PHP_EOL."برای همین ازت خواهش می کنم که منو به ۵ نفر از دوستات معرفی کنی";
$askText .= PHP_EOL."با استفاده از دکمه ارسال دعوتنامه به دوستان می تونی منو به دوستات معرفی کنی";
$askText .= PHP_EOL."وقتی که دوستانت به من پیام بدن دیگه این پیغام فرستاده نمی شه";
$this->getTranslateGerman()->sendMessage($askText,$this->getTranslateGerman()->chat_id);
$this->getTranslateGerman()->getInviteService()->sendInvitation();
$this->getTranslateGerman()->sendMessageLog("ask for invite to extract: ".$this->getTranslateGerman()->message['from']['id']);
return false;
}
return true;
}
public function canExtractSpeechText(){
$numberOfExtracts=50;
$sentInviteNumber = 3;
$notJust2PersonsSuggestedByUser = false;
$numberOfExtracts= $this->getTranslateGerman()->getDB()->getNumberOfActivityWithIntentId($this->getTranslateGerman()->message['from']['id'],5);
$sentInviteNumber = $this->getTranslateGerman()->
getDB()->getSentInviteNumber($this->getTranslateGerman()->message['from']['id']);
$notJust2PersonsSuggestedByUser = !$this->getTranslateGerman()->
getDB()->hasUserSuggested($this->getTranslateGerman()->message['from']['id'], 2);
/* if( $numberOfConverts >= 0 && $sentInviteNumber < 50 && $notJust2PersonsSuggestedByUser ){
*/ if( $numberOfExtracts >= 4 && $sentInviteNumber < 5 && $notJust2PersonsSuggestedByUser ){
$askText = "سلام.";
$askText .= PHP_EOL." خیلی خوشحالم که برای استخراج متن از من سوال می پرسی";
$askText .= PHP_EOL."من خیلی دوست دارم که به دوستان دیگه هم کمک کنم";
$askText .= PHP_EOL."برای همین ازت خواهش می کنم که منو به ۵ نفر از دوستات معرفی کنی";
$askText .= PHP_EOL."با استفاده از دکمه ارسال دعوتنامه به دوستان می تونی منو به دوستات معرفی کنی";
$askText .= PHP_EOL."وقتی که دوستانت به من پیام بدن دیگه این پیغام فرستاده نمی شه";
$this->getTranslateGerman()->sendMessage($askText,$this->getTranslateGerman()->chat_id);
$this->getTranslateGerman()->getInviteService()->sendInvitation();
$this->getTranslateGerman()->sendMessageLog("ask for invite to extract: ".$this->getTranslateGerman()->message['from']['id']);
return false;
}
return true;
}
public function canShowTranslated(){
$numberOfTranslated=0;
$sentInviteNumber = 50;
$notJust2PersonsSuggestedByUser = false;
$ovreUsage= $this->getTranslateGerman()->getDB()->isOverUsage(
$this->getTranslateGerman()->message['from']['id'],
100,
$numberOfTranslated);
$sentInviteNumber = $this->getTranslateGerman()->
getDB()->getSentInviteNumber($this->getTranslateGerman()->message['from']['id']);
$notJust2PersonsSuggestedByUser = !$this->getTranslateGerman()->
getDB()->hasUserSuggested($this->getTranslateGerman()->message['from']['id'], 2);
if($numberOfTranslated > 85 ){
$this->getTG()->getPatreonService()->sendJoinRequest();
}
if($numberOfTranslated > 85 && $sentInviteNumber < 5 && $notJust2PersonsSuggestedByUser )
{
$askText = "سلام دوست خوبم، من لغتنامه هستم".PHP_EOL
. "خیلی خوشحالم که امروز تونستم ترجمه بیش از ".$numberOfTranslated
. " .لغت رو بهت بگم ".
" .برای اینکه بتونم به بقیه کسانی که می خوان آلمانی رو یاد بگیرن هم کمک کنم ".
PHP_EOL.".لطفا دعوتنامه زیر رو برای 5 تا از بهترین دوستانت ارسال کن ".
PHP_EOL.".بعد از ارسال 5 تا می تونی امروز دوباره لغت های بیشتری ترجمه کنی".
" وگرنه باید تا فردا صبر کنی ".
PHP_EOL."🌷😊";
$this->getTranslateGerman()->sendMessage($askText, $this->getTranslateGerman()->chat_id);
$this->getTranslateGerman()->inviteService->sendInvitation();
return false;
}
// else if($numberOfTranslated > 140 )
// {
// // $this->sendMessage("متاسفانه میزان استفاده امروز شما از لغت نامه بیش از حد پیش بینی شده بوده است، لطفا فردا امتحان کنید");
// $message = "افراد زیادی تا الان از این ربات استفاده کردن، و روزانه تعداد زیادی لغت ترجمه می شه، سرعت ربات به علت ترجمه های زیاد برای بعضی ها میاد پایین. متاسفانه فعلا تعداد ترجمه ها در روز محدود شده ولی سعی می کنیم به زودی این محدودیت برداشته بشه";
// $message .= PHP_EOL.PHP_EOL." لطفا فردا امتحان کنید :)";
// $message .= PHP_EOL." @tamasbabot";
// $this->getTranslateGerman()->sendMessage($message, $this->getTranslateGerman()->message ['from'] ['id']);
// return false;
// }
return true;
}
public function isAllowedToTranslate(){
if($this->isUnwantedWord())
return false;
if($this->userIsInBlackList()){
return false;
}
$userID = $this->getTranslateGerman()->message['from']['id'];
if(!$this->isMemberOfChannel($userID)){
$this->getTranslateGerman()->apiRequest ( "sendPhoto", array (
'chat_id' => $userID,
'photo' => "http://redirect.bayadic.com/assets/book.gif",
"caption" => "برای استفاده از لغتنامه، باید در کانال لغتکده عضو شد"
.PHP_EOL."در غیر این صورت لغتنامه قادر به ترجمه لغات نمی باشد "
.PHP_EOL."https://t.me/loghatkad".PHP_EOL
) );
$this->getTranslateGerman()->sendMessage("پس از عضویت در لینک کانال بالا به این صفحه برگردید، و لغت خود را در این صفحه وارد کنید",$this->message['from']['id']);
return false;
}
if(!$this->canShowTranslated()){
return false;
}
return true;
}
public function isMemberOfChannel($userID){
$memberObject = $this->getTranslateGerman()->apiRequest ( "getChatMember", array (
'chat_id' => "@loghatkad",
'user_id' => $userID
) );
return strcmp($memberObject['status'], "member") == 0
|| strcmp($memberObject['status'], "administrator") == 0
|| strcmp($memberObject['status'], "creator") == 0;
}
public function isUserSpamming($userID, $allowNumber = 8 ){
$sentNumber = $this->getTranslateGerman()->db->getMessagesNumberInLastRequests($userID);
if($sentNumber>$allowNumber)
return true;
else
return false;
}
public function isUnwantedWord(){
if(mb_strlen($this->getTG()->word) < 2 ){
$this->getTG()->sendMessage("was meinst du?", $this->getTG()->chat_id);
return true;
}
if($this->getTG()->isPersianLanguage($this->getTG()->word) && mb_strlen($this->getTG()->word) < 3 ){
$this->getTG()->sendMessage("منظورت چیه ؟", $this->getTG()->chat_id);
return true;
}
return false;
}
}
?>