Minor bugfix

This commit is contained in:
giuliof 2017-12-26 17:35:14 +01:00
parent b35d8831a3
commit f626fbe632
2 changed files with 144 additions and 129 deletions

View File

@ -57,6 +57,7 @@
$WELCOME_MESSAGE = "$EMOJI_BOT GOLEMbot
$EMOJI_MSG Se scrivi un messaggio ti chiedo se inoltrarlo al canale
Supporto anche **<b>grassetto</b>**, __<i>corsivo</i>__ e `<code>codice</code>`
$EMOJI_TOOLS Se scrivi un comando eseguo operazioni.
Comandi disponibili: /help, /list";
?>

272
main.php
View File

@ -358,7 +358,7 @@ if (isset ($row->callback_query)) {
for ($i = 8; $i <= 21; $i++) {
if ($i < $firstHour)
$kbd->insertItem(" ", null);
$kbd->insertItem(" ", "null");
else
$kbd->insertItem("$i".":00", $i);
@ -373,7 +373,6 @@ if (isset ($row->callback_query)) {
$text="A che ora vuoi inviare il messaggio?";
$reply = json_encode($container);
//~ $url = API_URL.API_TOKEN."/editMessageText?chat_id=".($chatID).
//~ "&message_id=".$inlineID .
@ -491,137 +490,152 @@ elseif (isset($row->message)) {
}
if (DEBUG) info("Starting from status $status");
switch($status) {
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* entering STATE_IDLE - message *
* you can: give a command, send messages to forward *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
case STATE_IDLE:
if (($command = getCommand($row->message)) != null) {
info("Command received: $command[command] with options $command[options]");
switch ($command['command']) {
case '/help':
case '/start':
// Send some explainations about this bot
sendMessage($chatID,$WELCOME_MESSAGE);
break;
case '/edit':
// not yet implemented
sendMessage($chatID, "Bravo! Hai trovato un comando non ancora implementato. Apri il codice su GitHub e lavoraci su",
"HTML", false, false, null, $reply);
break;
case '/list':
$sql = new mysqli('localhost', MYSQL_USER, MYSQL_PASSWORD, MYSQL_DB);
$numbers = $sql->query("SELECT COUNT(*) FROM ".MYSQL_TABLE);
$numbers = $numbers->fetch_array()[0];
if ($numbers == 0) {
$query = API_URL.API_TOKEN."/sendmessage?chat_id=".($chatID).
"&text=Nessun messaggio programmato";
$answer = file_get_contents($query);
die();
}
$query = $sql->query("SELECT DATE_FORMAT(DateTime,'%d/%m/%Y ore %H') as DateTimeFormat,ChatID, MessageID,Text,Author,ID FROM ".MYSQL_TABLE."
ORDER BY DateTime ASC LIMIT 1") or error("Can't make the query, SQL error ".$sql->error);
//while($row = $query->fetch_assoc()) {
$row = $query->fetch_assoc();
$mc->set($chatID.MC_DELETE_SCHEDULED_ID, $row['ID'])
or $mc->replace($chatID.MC_DELETE_SCHEDULED_ID, $row['ID']);;
$sql->close();
$kbd = new InlineKbd;
$kbd->insertItem($row['DateTimeFormat'], "null");
$kbd->pushLine();
$kbd->insertItem(" ","null");
$kbd->insertItem("$EMOJI_THUMBSDOWN Canc", MSG_DELETE);
if ($numbers > 1)
$kbd->insertItem(">", ">");
else
$kbd->insertItem("","null");
$kbd->pushLine();
if ($row['Text'] != ''){
$text="$row[Text]\n<i>$row[Author]</i>"; // NOME CANALE ".API_CHANNEL_ID."?";
}
else
$text="Non testo puro";
$answer = sendMessage($chatID, $text, "HTML", false, false, null, $kbd->getKeyboard());
$answer = json_decode($answer);
// Should forward the message if is not pure text
//forwardMessage($chatID, $row['ChatID'], $row['MessageID']);
$mc->set($chatID.MC_INLINE_ID, $answer->result->message_id)
or $mc->replace($chatID.MC_INLINE_ID, $answer->result->message_id);
$mc->set($chatID.MC_LIST_NUMBER, 0)
or $mc->replace($chatID.MC_LIST_NUMBER, 0);
break;
default:
sendMessage($chatID,"Non è un comando valido, leggi i comandi digitando /help");
warning("$command[command] is not a valid command");
}
// Reset CMD
if (($command = getCommand($row->message))['command'] == '/reset') {
warning("Reset command received");
$all_keys = $mc->getAllKeys();
foreach ($all_keys as $index => $key) {
if (strpos($key,$chatID) !== 0) {
$mc->delete($key);
info("Deleting $key");
}
else { // not a command (text?)
// you probably want to forward a message?
// Check what kind of message is this
$kbd = new InlineKbd;
$kbd->insertItem("SI ".$EMOJI_THUMBSUP,MSG_YES);
$kbd->insertItem("NO ".$EMOJI_THUMBSDOWN,MSG_NO);
$kbd->insertItem("Programma ".$EMOJI_CLOCK,MSG_SCHEDULE);
$kbd->pushLine();
// This bot accepts only text, images, videos and locations
if (!(isset($row->message->photo) or isset($row->message->location)
or isset($row->message->video) or isset($row->message->text) )) {
sendMessage($chatID, "Questa roba non va bene");
error("Not supported content");
// Program stops here
}
$mc->set($chatID.MC_FORWARD_MSG, $row)
or $mc->replace($chatID.MC_FORWARD_MSG, $row)
or error("Something is wrong with memcached");
// SetUp inline messages (OK, NO, SCHEDULE)
$text="Vuoi condividere sul canale?"; // NOME CANALE ".API_CHANNEL_ID."?";
$query = sendMessage($row->message->chat->id,
$text,
null, false, false, null,
$kbd->getKeyboard());
//~ $answer = file_get_contents($query);
$answer = json_decode($query);
$inlineID = $answer->result->message_id;
if (DEBUG) info("Callback message id: $inlineID");
$mc->replace($chatID.MC_STATUS, STATE_MSG_ANSWER);
$mc->set($chatID.MC_INLINE_ID, $inlineID) or $mc->replace($chatID.MC_INLINE_ID, $inlineID);
else {
unset($all_keys[$index]);
}
break;
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* END STATE_IDLE
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
default:
wrong_action($chatID);
}
sendMessage($chatID, "Reset completato");
}
else {
switch($status) {
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* entering STATE_IDLE - message *
* you can: give a command, send messages to forward *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
case STATE_IDLE:
if (($command = getCommand($row->message)) != null) {
info("Command received: $command[command] with options $command[options]");
switch ($command['command']) {
case '/help':
case '/start':
// Send some explainations about this bot
sendMessage($chatID,$WELCOME_MESSAGE, "HTML");
break;
case '/edit':
// not yet implemented
sendMessage($chatID, "Bravo! Hai trovato un comando non ancora implementato. Apri il codice su GitHub e lavoraci su");
break;
case '/list':
$sql = new mysqli('localhost', MYSQL_USER, MYSQL_PASSWORD, MYSQL_DB);
$numbers = $sql->query("SELECT COUNT(*) FROM ".MYSQL_TABLE);
$numbers = $numbers->fetch_array()[0];
if ($numbers == 0) {
$query = API_URL.API_TOKEN."/sendmessage?chat_id=".($chatID).
"&text=Nessun messaggio programmato";
$answer = file_get_contents($query);
die();
}
$query = $sql->query("SELECT DATE_FORMAT(DateTime,'%d/%m/%Y ore %H') as DateTimeFormat,ChatID, MessageID,Text,Author,ID FROM ".MYSQL_TABLE."
ORDER BY DateTime ASC LIMIT 1") or error("Can't make the query, SQL error ".$sql->error);
//while($row = $query->fetch_assoc()) {
$row = $query->fetch_assoc();
$mc->set($chatID.MC_DELETE_SCHEDULED_ID, $row['ID'])
or $mc->replace($chatID.MC_DELETE_SCHEDULED_ID, $row['ID']);;
$sql->close();
$kbd = new InlineKbd;
$kbd->insertItem($row['DateTimeFormat'], "null");
$kbd->pushLine();
$kbd->insertItem(" ","null");
$kbd->insertItem("$EMOJI_THUMBSDOWN Canc", MSG_DELETE);
if ($numbers > 1)
$kbd->insertItem(">", ">");
else
$kbd->insertItem("","null");
$kbd->pushLine();
if ($row['Text'] != ''){
$text="$row[Text]\n<i>$row[Author]</i>"; // NOME CANALE ".API_CHANNEL_ID."?";
}
else
$text="Non testo puro";
$answer = sendMessage($chatID, $text, "HTML", false, false, null, $kbd->getKeyboard());
$answer = json_decode($answer);
// Should forward the message if is not pure text
//forwardMessage($chatID, $row['ChatID'], $row['MessageID']);
$mc->set($chatID.MC_INLINE_ID, $answer->result->message_id)
or $mc->replace($chatID.MC_INLINE_ID, $answer->result->message_id);
$mc->set($chatID.MC_LIST_NUMBER, 0)
or $mc->replace($chatID.MC_LIST_NUMBER, 0);
break;
default:
sendMessage($chatID,"Non è un comando valido, leggi i comandi digitando /help");
warning("$command[command] is not a valid command");
}
}
else { // not a command (text?)
// you probably want to forward a message?
// Check what kind of message is this
$kbd = new InlineKbd;
$kbd->insertItem("SI ".$EMOJI_THUMBSUP,MSG_YES);
$kbd->insertItem("NO ".$EMOJI_THUMBSDOWN,MSG_NO);
$kbd->insertItem("Programma ".$EMOJI_CLOCK,MSG_SCHEDULE);
$kbd->pushLine();
// This bot accepts only text, images, videos and locations
if (!(isset($row->message->photo) or isset($row->message->location)
or isset($row->message->video) or isset($row->message->text) )) {
sendMessage($chatID, "Questa roba non va bene");
error("Not supported content");
// Program stops here
}
$mc->set($chatID.MC_FORWARD_MSG, $row)
or $mc->replace($chatID.MC_FORWARD_MSG, $row)
or error("Something is wrong with memcached");
// SetUp inline messages (OK, NO, SCHEDULE)
$text="Vuoi condividere sul canale?"; // NOME CANALE ".API_CHANNEL_ID."?";
$query = sendMessage($row->message->chat->id,
$text,
null, false, false, null,
$kbd->getKeyboard());
//~ $answer = file_get_contents($query);
$answer = json_decode($query);
$inlineID = $answer->result->message_id;
if (DEBUG) info("Callback message id: $inlineID");
$mc->replace($chatID.MC_STATUS, STATE_MSG_ANSWER);
$mc->set($chatID.MC_INLINE_ID, $inlineID) or $mc->replace($chatID.MC_INLINE_ID, $inlineID);
}
break;
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* END STATE_IDLE
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
default:
wrong_action($chatID);
}
}
}
// a not supported message (i.e. from a channel)
else {