|
|
|
<?php
|
|
|
|
require_once('config.php');
|
|
|
|
|
|
|
|
function botlog($info) {
|
|
|
|
if ($file = fopen(LOGFILE, 'a'))
|
|
|
|
{
|
|
|
|
fwrite($file, $info);
|
|
|
|
fclose($file);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Unrecoverable error, program must be terminated
|
|
|
|
function error($message) {
|
|
|
|
if (DEBUG) botlog("[EE] $message\n");
|
|
|
|
die();
|
|
|
|
}
|
|
|
|
|
|
|
|
// Uncommon event
|
|
|
|
function warning($message) {
|
|
|
|
if (DEBUG) botlog("[WW] $message\n");
|
|
|
|
}
|
|
|
|
|
|
|
|
// Routine debugging informations
|
|
|
|
function info($message) {
|
|
|
|
if (DEBUG) botlog("[II] $message\n");
|
|
|
|
}
|
|
|
|
|
|
|
|
// Interpreta un comando inviato al bot - mettere null o simili invece di -1
|
|
|
|
function getCommand($messaggio, $NoOffset = true) {
|
|
|
|
if (!isset($messaggio->entities))
|
|
|
|
return null;
|
|
|
|
foreach ($messaggio->entities as $entity) {
|
|
|
|
if ($entity->type == "bot_command") {
|
|
|
|
if ($NoOffset == true and $entity->offset != 0)
|
|
|
|
return null;
|
|
|
|
//~ if (DEBUG) botlog("[II] Comando: ".$entity->offset. " ".$messaggio->text);
|
|
|
|
//return substr($messaggio->text, $entity->offset, $entity->length);
|
|
|
|
$ret['command'] = substr($messaggio->text, $entity->offset, $entity->length);
|
|
|
|
$ret['options'] = substr($messaggio->text, $entity->length+$entity->offset+1);
|
|
|
|
info("Command: $ret[command]");
|
|
|
|
return $ret;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**** Telegram query functions ****/
|
|
|
|
|
|
|
|
// return a message object, null if is error
|
|
|
|
function sendMessage($chat_id, $text, $parse_mode = null,
|
|
|
|
$disable_web_preview = false,
|
|
|
|
$disable_notification = false,
|
|
|
|
$reply_to_message_id = null,
|
|
|
|
$reply_markup = null) {
|
|
|
|
$query = API_URL.API_TOKEN."/sendMessage?chat_id=".$chat_id.
|
|
|
|
"&text=".urlencode($text);
|
|
|
|
|
|
|
|
if ($parse_mode != null) $query .= "&parse_mode=$parse_mode";
|
|
|
|
if ($reply_markup != null) $query .= "&reply_markup=$reply_markup";
|
|
|
|
if ($disable_web_preview != false) $query .= "&disable_web_preview=$disable_web_preview";
|
|
|
|
if ($disable_notification != false) $query .= "&disable_notification=$disable_notification";
|
|
|
|
if ($reply_to_message_id != null) $query .= "&reply_to_message_id=$reply_to_message_id";
|
|
|
|
if ($reply_markup != null) $query .= "&reply_markup=$reply_markup";
|
|
|
|
|
|
|
|
$answer = file_get_contents($query);
|
|
|
|
if ($answer === false) warning("Something is wrong in sendMessage - chat_id: $chat_id - text: $text");
|
|
|
|
return $answer;
|
|
|
|
}
|
|
|
|
|
|
|
|
//
|
|
|
|
function forwardMessage($chat_id, $from_chat_id,
|
|
|
|
$message_id,
|
|
|
|
$disable_notification = false) {
|
|
|
|
|
|
|
|
$query = API_URL . API_TOKEN . "/forwardMessage?" .
|
|
|
|
"chat_id=".urlencode($chat_id) .
|
|
|
|
"&from_chat_id=" . urlencode($from_chat_id) .
|
|
|
|
"&message_id=" . urlencode($message_id);
|
|
|
|
|
|
|
|
if ($disable_notification != null) $query .= "&disable_notification=$disable_notification";
|
|
|
|
|
|
|
|
$answer = file_get_contents($query);
|
|
|
|
if ($answer === false) warning("Something is wrong in forwardMessage - chat_id: $chat_id - message_id: $message_id");
|
|
|
|
return $answer;
|
|
|
|
}
|
|
|
|
|
|
|
|
// omitted "inline parameters", for inline bot funtions (not used here)
|
|
|
|
function editMessageText($chat_id, $message_id, $text,
|
|
|
|
$parse_mode = null,
|
|
|
|
$disable_web_page_preview = false,
|
|
|
|
$reply_markup = null) {
|
|
|
|
|
|
|
|
$query = API_URL . API_TOKEN . "/forwardMessage?" .
|
|
|
|
"chat_id=".urlencode($chat_id) .
|
|
|
|
"&message_id=" . urlencode($message_id).
|
|
|
|
"&text=" . urlencode($text);
|
|
|
|
|
|
|
|
if ($disable_web_page_preview != null) $query .= "&disable_web_page_preview=$disable_web_page_preview";
|
|
|
|
if ($reply_markup != null) $query .= "&reply_markup=$reply_markup";
|
|
|
|
|
|
|
|
$answer = file_get_contents($query);
|
|
|
|
if ($answer === false) warning("Something is wrong in editMessageText - chat_id: $chat_id - message_id: $message_id");
|
|
|
|
return $answer;
|
|
|
|
}
|
|
|
|
|
|
|
|
//
|
|
|
|
function deleteMessage($chat_id, $message_id) {
|
|
|
|
|
|
|
|
$query = API_URL . API_TOKEN . "/deleteMessage?" .
|
|
|
|
"chat_id=".urlencode($chat_id) .
|
|
|
|
"&message_id=" . urlencode($message_id);
|
|
|
|
|
|
|
|
$answer = file_get_contents($query);
|
|
|
|
if ($answer === false) warning("Something is wrong in deleteMessage - chat_id: $chat_id - message_id: $message_id");
|
|
|
|
return $answer;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Makes the calendar inline keyboard
|
|
|
|
function getCalendarTab ($month, $year) {
|
|
|
|
$container = array();
|
|
|
|
$riga = array();
|
|
|
|
|
|
|
|
$days = array("L", "M", "M", "G", "V", "S", "D");
|
|
|
|
|
|
|
|
for ($i = 0; $i < 7; $i++) {
|
|
|
|
$element = array(
|
|
|
|
"text" => "$days[$i]",
|
|
|
|
"callback_data" => "null"
|
|
|
|
);
|
|
|
|
|
|
|
|
$riga[] = $element;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
$container[] = $riga;
|
|
|
|
$riga = array();
|
|
|
|
|
|
|
|
$daysInMonth = cal_days_in_month (CAL_GREGORIAN , $month , $year);
|
|
|
|
$date = $year."-".$month;
|
|
|
|
$isCurrentMonth = date('nY') == $month.$year;
|
|
|
|
$startingDay = $isCurrentMonth ? date('j') : 1;
|
|
|
|
if (DEBUG) botlog("[II] First day: ".$date.'-'.$startingDay."\n");
|
|
|
|
$firstDay = date("N", strtotime($date.'-'.$startingDay));
|
|
|
|
|
|
|
|
// blank buttons
|
|
|
|
for ($i = 1; $i < $firstDay; $i++) {
|
|
|
|
$element = array(
|
|
|
|
"text" => " ",
|
|
|
|
"callback_data" => "null"
|
|
|
|
);
|
|
|
|
|
|
|
|
$riga[] = $element;
|
|
|
|
}
|
|
|
|
|
|
|
|
for ($numDay = $startingDay; $numDay <= $daysInMonth; $numDay++, $i++) {
|
|
|
|
//if ($today <= $numDay) {
|
|
|
|
$element = array(
|
|
|
|
"text" => "$numDay",
|
|
|
|
"callback_data" => "$numDay"
|
|
|
|
);
|
|
|
|
//}
|
|
|
|
//else {
|
|
|
|
/* $element = array(
|
|
|
|
"text" => " ",
|
|
|
|
"callback_data" => "null"
|
|
|
|
);*/
|
|
|
|
//}
|
|
|
|
|
|
|
|
$riga[] = $element;
|
|
|
|
|
|
|
|
if ($i >= 7) {
|
|
|
|
$container[] = $riga;
|
|
|
|
$riga = array();
|
|
|
|
$i = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// empty buttons
|
|
|
|
|
|
|
|
for (; $i > 1 and $i <= 7; $i++) {
|
|
|
|
$element = array(
|
|
|
|
"text" => " ",
|
|
|
|
"callback_data" => "null"
|
|
|
|
);
|
|
|
|
|
|
|
|
$riga[] = $element;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!empty($riga)) {
|
|
|
|
$container[] = $riga;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
$container[] = array(
|
|
|
|
$isCurrentMonth ?
|
|
|
|
array(
|
|
|
|
"text" => " ",
|
|
|
|
"callback_data" => "null"
|
|
|
|
)
|
|
|
|
:
|
|
|
|
array(
|
|
|
|
"text" => "<",
|
|
|
|
"callback_data" => "<"
|
|
|
|
),
|
|
|
|
array(
|
|
|
|
"text" => "$EMOJI_X Annulla",
|
|
|
|
"callback_data" => MSG_ABORT
|
|
|
|
),
|
|
|
|
array(
|
|
|
|
"text" => ">",
|
|
|
|
"callback_data" => ">"
|
|
|
|
));
|
|
|
|
|
|
|
|
return $container;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function not_authorized($chatID) {
|
|
|
|
$query = API_URL . API_TOKEN . '/sendMessage?' .
|
|
|
|
'chat_id=' . urlencode($chatID) .
|
|
|
|
"&text=".urlencode("Utente non autorizzato\nhttps://www.youtube.com/watch?v=HO8ctP_QNZc");
|
|
|
|
|
|
|
|
file_get_contents($query);
|
|
|
|
|
|
|
|
die();
|
|
|
|
}
|
|
|
|
|
|
|
|
function wrong_action($chatID) {
|
|
|
|
$query = API_URL . API_TOKEN . '/sendMessage?' .
|
|
|
|
'chat_id=' . urlencode($chatID) .
|
|
|
|
"&text=Azione non corretta";
|
|
|
|
|
|
|
|
file_get_contents($query);
|
|
|
|
|
|
|
|
die();
|
|
|
|
}
|
|
|
|
?>
|