<?php
class TranslateEnglish extends MessageProcessor {
private $databseFriend;
function __construct($botUsername,$botToken,$webhookUrl,$sign){
//$botUsername,$botToken,$webhookUrl,$sign,$adminId
parent::__construct($botUsername,$botToken,$webhookUrl,$sign, 44903244);
}
public function getMoreContent($newsId){
$news=$this->databseFriend->getNewsFromDbById($newsId);
$miniCurl = new MiniCurl($news['link']);
return $miniCurl->getData();
}
public function processCallback($update){
// $testMessage = var_export ( $update, true );
// file_put_contents ( "testbotprocessCallback.html", $testMessage, FILE_APPEND | LOCK_EX );
// $this->apiRequest ( "answerInlineQuery", array (
// 'inline_query_id' => $this->chat_id,
// "results" => $this->callback_data
// ) );
$callBackData= explode(":", $this->callback_data);
if($callBackData[0] == "task" && $callBackData[1] == "more" ){
$message = " ادامه خبر";
$newsId=$callBackData[2];
$newsContent = $this->getMoreContent($newsId);
$regex ='/articleBody\s[^&]*p>(.*)<\/strong>/';
if (preg_match_all ( $regex, $newsContent, $matches )) {
$moreText = $matches [1] [0];
}
$moreText = str_replace("<strong>", "", $moreText);
$moreText = str_replace("<em>", "", $moreText);
$moreText = str_replace("<", "", $moreText);
$moreText = str_replace("</em", "", $moreText);
// $testMessage = var_export ( $newsContent, true );
// file_put_contents ( "testgrabdata.html", $testMessage, FILE_APPEND | LOCK_EX );
$message.=PHP_EOL.PHP_EOL.$moreText;
}
else if($callBackData[0] == "task" && $callBackData[1] == "translate"){
// $key = "trnsl.1.1.20161227T200147Z.ea68ee52a784814b.d57d90672c621ed4b707e054a845d8e0367ad95d";
// $translated = file_get_contents("https://translate.yandex.net/api/v1.5/tr.json/translate?key="
// .$key."&lang=de-fa&text=abmachen");
$key="trnsl.1.1.20161227T200147Z.ea68ee52a784814b.d57d90672c621ed4b707e054a845d8e0367ad95d";
$translator = new Translator($key);
$message = $translator->translate($this->message['text'], "de-fa");
$message .= " ";
}
else if($callBackData[0] == "task" && $callBackData[1] == "approve"){
$postbaker = new PostBaker ( $this->botUsername, $this->BOT_TOKEN, $this->sign );
$postbaker->postNews( $this->message );
$this->apiRequest ( "sendMessage", array (
'chat_id' => $this->chat_id,
"text" => $message,
));
$keyboard = [
'inline_keyboard' => [[['text' => "ارسال شد", 'callback_data' => "task:nothing:nothing"]]],
];
// $keyboard = [
// 'inline_keyboard' => [[]],
// ];
$markup = json_encode($keyboard, true);
$message = "ترجمه خبر در کانال قرار داده شد";
$this->apiRequest ( "editMessageText", array (
'chat_id' => $this->chat_id,
"message_id" => $this->message['message_id'],
'text' => $message
) );
$this->apiRequest ( "sendMessage", array (
'chat_id' => $callBackData[2],
"text" => $message
) );
}
else if($callBackData[0] == "task" && $callBackData[1] == "deny"){
$message = "ترجمه خبر نیاز به اصلاؠدارد";
$this->apiRequest ( "sendMessage", array (
'chat_id' => $callBackData[2],
"text" => $message
) );
}
$this->apiRequest ( "answerCallbackQuery", array (
'callback_query_id' => $this->callback_id,
"text" => "اضا�ه شد"
) );
$this->apiRequest ( "sendMessage", array (
'chat_id' => $this->chat_id,
"text" => $message
) );
}
public function translateWordProcess($word){
$loghatnameh = new LoghatnamehEnglish();
$dictionary = new DictionaryEnglishDatabaseHandlerDatabaseHandler($this->botUsername);
if (preg_match ( '/[^A-Za-z0-9]/', $word )
&& !preg_match('/ü/',$word)
&& !preg_match('/Ü/',$word)
&& !preg_match('/ä/',$word)
&& !preg_match('/Ä/',$word)
&& !preg_match('/ö/',$word)
&& !preg_match('/Ö/',$word)
&& !preg_match('/ß/',$word)) {
$translationsArray = $dictionary->getTrnslations ( $word, "FA" );
if (empty ( $translationsArray )){
$translationsArray = $loghatnameh->translate ( urlencode ($word), "FA" );
// $translatedTextMessage = $loghatnameh->makeTranslationTextMessage();
$dictionary->insertWordsWithTranslation($translationsArray, "FA", $word);
$dictionary->getTrnslations ( $word, "FA" );
$translatedTextMessage = $dictionary->makeTranslationTextMessage();
}
else {
$translatedTextMessage = $dictionary->makeTranslationTextMessage();
}
}
else {
$translationsArray = $dictionary->getTrnslations ( $word, "DE" );
if (empty ( $translationsArray )){
$translationsArray = $loghatnameh->translate ( $word, "DE" );
// $translatedTextMessage = $loghatnameh->makeTranslationTextMessage();
$dictionary->insertWordsWithTranslation($translationsArray, "DE", $word);
$dictionary->getTrnslations ( $word, "DE" );
$translatedTextMessage = $dictionary->makeTranslationTextMessage();
}
else {
$translatedTextMessage = $dictionary->makeTranslationTextMessage();
}
}
$dictionary->insertUser($this->message['from']['id'], $this->message['from']['username'], $this->message['from']['first_name'],$this->message['from']['last_name']);
$translated = true;
if(strlen($translatedTextMessage) <= 5){
$translatedTextMessage ="keine Ahnung ðŸ˜";
$translated = false;
}
$dictionary->insertUserActivity($this->message['from']['id'],$word,$translated);
if($translated)
return $translatedTextMessage;
}
public function processInlineQuery($update){
$memberObject = $this->apiRequest ( "getChatMember", array (
'chat_id' => "@loghatkad",
'user_id' => $update['inline_query']['from']['id']
) );
$textQuery = $update['inline_query']['query'];
// if($memberObject['status']!="member" && $memberObject['status']!="administrator" && $memberObject['status']!="owner"){
if($memberObject['status']=="left" ){
$this->apiRequest ( "sendMessage", array (
'chat_id' => $update['inline_query']['from']['id'],
"text" => "برای است�اده از لغتنامه از شما خواهشمندیم در این کانال loghatnameh عضو شوید، تا بتوانیم اطلاعات بیشتر را در اختیار شما قرار بدهیم"
.PHP_EOL."https://t.me/loghatkad".PHP_EOL
) );
$readyResult =[[
"type" => "article",
"id" => "0",
"title" => $textQuery." باید عضو کانال باشید تا بتونین ترجمه کنید",
"message_text" => "برای است�اده از لغتنامه از شما خواهشمندیم در این کانال عضو شوید، تا بتوانیم اطلاعات بیشتر را در اختیار شما قرار بدهیم"
.PHP_EOL."https://t.me/loghatkad".PHP_EOL
]];
}
else if($textQuery=="invite"){
$invitationText = "سلام دوست عزیزم
این دعوتنامه است�اده از لغتنامه
�ارسی به آلمانی
و آلمانی به �ارسی هست.
برای است�اده از لغت نامه باید روی لینک زیر کلیک کنی".PHP_EOL
.PHP_EOL."https://telegram.me/translateGerman_bot?start=".$update['inline_query']['from']['id'].PHP_EOL;
$invititionUrl= "https://telegram.me/translateGerman_bot?start=".$update['inline_query']['from']['id'];
$markUp = [
'inline_keyboard' => [[['text' => "باز کردن دعوتنامه", 'url' => $invititionUrl]]],
];
// $markUp = json_encode($keyboard, true);
$readyResult =[[
"type" => "article",
"id" => "0",
"title" => "دعوتنامه ارسال شود",
"message_text" => $invitationText,
"reply_markup" => $markUp,
"cache_time" => 5
]];
}
else {
/*$result = [
'InlineQueryResultArticle' => [[['type' => "article", 'id' => "43",'title' => "Translation",'message_text' => "translated"]]],
];
*/
$translatedText =$this->translateWordProcess($textQuery);
$readyResult =[[
"type" => "article",
"id" => "0",
"title" => $textQuery." ترجمه",
"message_text" => $translatedText.PHP_EOL."@TranslateGerman_bot",
"cache_time" => 1
]];
// $readyResult = json_encode($readyResult, true);
}
$this->apiRequest ( "answerInlineQuery", array (
'inline_query_id' => $this->inline_message_id,
'results' => $readyResult
) );
}
public function processText() {
// $this->apiRequest ( "sendMessage", array (
// 'chat_id' => $this->chat_id,
// "text" => "سلام من درحال بروز رسانی لغات هستم، کمی صبر کن لطفا ممنون"
// ) );
// incoming text message
$text = $this->message ['text'];
if(!empty($this->message ['reply_to_message']))
$repliedTomessage = $this->message ['reply_to_message'];
if (! empty ( $repliedTomessage ['text'] ) && !empty($repliedTomessage['entities'][1]['url'])) {
$postbaker = new PostBaker ( $this->botUsername, $this->BOT_TOKEN, $this->sign );
$postbaker->sendToApproveGroup ( $repliedTomessage, $this->message ['text'].var_export($repliedTomessage) );
} else if(! empty ( $repliedTomessage ['text'] ) && empty($repliedTomessage['entities'][1]['url'])) {
$reply = explode ( "@", $repliedTomessage ['text'] );
// $this->apiRequestWebhook ( "sendMessage", array (
$this->apiRequest ( "sendMessage", array (
'chat_id' => $reply [0],
"text" => $text
) );
} else if(strtolower($text)=="invite") {
$keyboard = [
'inline_keyboard' => [[['text' => "ارسال به دوستان", 'switch_inline_query' => "invite"]]],
];
$markup = json_encode($keyboard, true);
$this->apiRequest ( "sendPhoto", array (
'chat_id' => $this->message['from']['id'],
'photo' => "http://redirect.bayadic.com/assets/book.gif",
"caption" => "سلام دوست خوبم، این یک دعوتنامه از طر� من برای است�اده از لغتنامه �ارسی به آلمانی و آلمانی به �ارسی هست، با ارسال این دعوتنامه دوستان شما اجازه است�اده از لغتنامه را خواهند داشت ",
"reply_markup" =>$markup
) );
} else if($text=="invite5215996") {
$keyboard = [
'inline_keyboard' => [[['text' => "ارسال دعوتنامه", 'switch_inline_query' => "invite"]]],
];
$markup = json_encode($keyboard, true);
$this->apiRequest ( "sendPhoto", array (
'chat_id' => "@botposter",
'photo' => "http://redirect.bayadic.com/assets/book.gif",
"caption" => "برای ارسال دعوتنامه به دوستانتون می تونید با کلیک روی دکمه زیر، دوستتون رو از توی لیست انتخاب کنید، و یک دعوتنامه از طر� خودتون براش ب�رستید. اگه تلگرامتون به روز باشه دکمه رو می بینید",
"reply_markup" =>$markup
) );
} else if(strpos($text,"/start") === 0) {
$startMessageParts = explode(" ", $text);
$referneceUserId = $startMessageParts[1];
$dictionary = new DictionaryDatabaseHandler($this->botUsername);
$newUserId= $this->message['from']['id'];
if(!empty($referneceUserId) && $referneceUserId !=$newUserId ) {
$membership = $dictionary->insertSuggested($referneceUserId,$newUserId);
if($membership){
$messageText= "تبریک، دعوتنامه شما معتبر است، برای است�اده از لغتنامه باید در کانال لغت نامه عضو شوید";
$messageText.=PHP_EOL."لینک کانال";
$messageText.=PHP_EOL."https://t.me/loghatkad";
}
else {
$messageText= "شما قبلا در لغتنامه عضویت داشته اید";
$messageText.=PHP_EOL."لینک کانال";
$messageText.=PHP_EOL."https://t.me/loghatkad";
}
$this->apiRequest ( "sendMessage", array (
'chat_id' => $this->message['from']['id'],
'text' => $messageText
) );
$this->apiRequest ( "sendMessage", array (
'chat_id' => 44903244,
"text" => $this->message['from']['id']."@@@".$this->message['from']['username']."--".$this->message['from']['first_name']." ".$this->message['from']['last_name']
.PHP_EOL.$this->message ['text'].PHP_EOL.$translatedTextMessage." member:".$memberObject['status'].PHP_EOL.PHP_EOL.$messageText,
) );
}
else {
$this->apiRequest ( "sendMessage", array (
'chat_id' => $this->message['from']['id'],
'text' => "به زودی کاربران برای عضویت در لغتنامه نیاز به دعوتنامه از سمت دوستان خود را خواهند داشت، اما شما می توانید هم اکنون برای است�اده از لغتنامه در کانال لغتنامه عضو شوید."
) );
}
// .PHP_EOL."@loghatkad"
$this->apiRequest ( "sendPhoto", array (
'chat_id' => $this->message['from']['id'],
'photo' => "http://redirect.bayadic.com/assets/book.gif",
"caption" => "https://t.me/loghatha"
.PHP_EOL."https://t.me/loghatkad".PHP_EOL
) );
} else {
$memberObject = $this->apiRequest ( "getChatMember", array (
'chat_id' => "@loghatha",
'user_id' => $this->message['from']['id']
) );
// .PHP_EOL."@loghatkad"
// if($memberObject['status']!="member" && $memberObject['status']!="administrator"){
if($memberObject['status']=="left" ){
$this->apiRequest ( "sendPhoto", array (
'chat_id' => $this->message['from']['id'],
'photo' => "https://www.towist.com/autopost/images/loghatnamehenglish.jpg",
"caption" => "برای استفاده از لغتنامه، باید در کانال خصوصی لغتنامه عضو شد"
.PHP_EOL."در غیر این صورت لغتنامه قادر به ترجمه لغات نمی باشد "
.PHP_EOL."https://t.me/joinchat/AAAAAEH84BG5nqvOgB6tDA".PHP_EOL
) );
if(!$this->debug)
return;
}
$loghatnameh = new LoghatnamehEnglish();
$dictionary = new DictionaryEnglishDatabaseHandler($this->botUsername);
$word = $this->message ['text'];
if (preg_match ( '/[^A-Za-z0-9]/', $word )
&& !preg_match('/ü/',$word)
&& !preg_match('/Ü/',$word)
&& !preg_match('/ä/',$word)
&& !preg_match('/Ä/',$word)
&& !preg_match('/ö/',$word)
&& !preg_match('/Ö/',$word)
&& !preg_match('/ß/',$word)) {
$translationsArray = $dictionary->getTrnslations ( $word, "FA" );
if (empty ( $translationsArray )){
$translatedFrom ="😉";
$translationsArray = $loghatnameh->translate ( urlencode ($word), "FA" );
// $translatedTextMessage = $loghatnameh->makeTranslationTextMessage();
$dictionary->insertWordsWithTranslation($translationsArray, "FA", $word);
$dictionary->getTrnslations ( $word, "FA" );
$translatedTextMessage = $dictionary->makeTranslationTextMessage();
}
else {
$translatedTextMessage = $dictionary->makeTranslationTextMessage();
$this->apiRequest ( "sendMessage", array (
'chat_id' => $this->chat_id,
"text" => $translatedTextMessage
) );
}
}
else {
$translationsArray = $dictionary->getTrnslations ( $word, "EN" );
if (empty ( $translationsArray ) ){
$translationsArray = $loghatnameh->translate ( $word, "EN" );
// $translatedTextMessage = $loghatnameh->makeTranslationTextMessage();
$dictionary->insertWordsWithTranslation($translationsArray, "EN", $word);
$dictionary->getTrnslations ( $word, "EN" );
$translatedTextMessage = $dictionary->makeTranslationTextMessage();
$translatedFrom ="😉";
}
else {
$translatedTextMessage = $dictionary->makeTranslationTextMessage();
}
}
$dictionary->insertUser($this->message['from']['id'], $this->message['from']['username'], $this->message['from']['first_name'],$this->message['from']['last_name']);
$translated = true;
if(strlen($translatedTextMessage) <= 5){
$translatedTextMessage ="I dont know :(";
$translated = false;
}
$dictionary->insertUserActivity($this->message['from']['id'],$word,$translated);
$this->apiRequest ( "sendMessage", array (
'chat_id' => $this->chat_id,
"text" => $translatedTextMessage.PHP_EOL.$translatedFrom
) );
// $key="trnsl.1.1.20161227T200147Z.ea68ee52a784814b.d57d90672c621ed4b707e054a845d8e0367ad95d";
// $translator = new Translator($key);
// $messageTranslation = $translator->translate($this->message['text'], "en-fa");
// $this->apiRequestWebhook( "sendMessage", array (
// 'chat_id' => 44903244,
// "text" => $messageTranslation
// ) );
if($dictionary->isOverUsage($this->message['from']['id'],3)){
// $keyboard = [
// 'inline_keyboard' => [[['text' => "معر�ی‌ به دوستان", 'switch_inline_query' => "invite"]]],
// ];
// $markup = json_encode($keyboard, true);
// $this->apiRequest ( "sendMessage", array (
// 'chat_id' => 44903244,
// "text" => $this->message['from']['id']."@@@".$this->message['from']['username']."--".$this->message['from']['first_name']." ".$this->message['from']['last_name']
// .PHP_EOL.$this->message ['text'].PHP_EOL.$translatedTextMessage." member:".$memberObject['status'].strlen($translatedTextMessage),
// "reply_markup" =>$markup
// ) );
$this->apiRequest ( "sendMessage", array (
'chat_id' => 44903244,
"text" => $this->message['from']['id']."@@@".$this->message['from']['username']."--".$this->message['from']['first_name']." ".$this->message['from']['last_name']
.PHP_EOL.$text.PHP_EOL."translated:".$translated,
));
// $this->apiRequest ( "sendMessage", array (
// 'chat_id' => 44903244,
// "text" => $this->message['from']['id']."@@@".$this->message['from']['username']."--".$this->message['from']['first_name']." ".$this->message['from']['last_name']
// .PHP_EOL.$this->message ['text'].PHP_EOL.$translatedTextMessage." member:".$memberObject['status'].strlen($translatedTextMessage),
// ));
}
}
// $this->apiRequest ( "sendMessage", array (
// 'chat_id' => $this->chat_id,
// // "text" => $text." hi". $newsMaker->hasTopic
// "text" => "در ØÂال ساخت"
// ) );
}
}