Commit 6cd2576a authored by MBoretto's avatar MBoretto

Merge branch 'develop' into monolog

parents a80ad7ff 52e1ef1e
sudo: false dist: trusty
sudo: required
addons:
apt:
packages:
- mysql-server-5.6
- mysql-client-core-5.6
- mysql-client-5.6
language: php language: php
...@@ -27,7 +35,7 @@ install: ...@@ -27,7 +35,7 @@ install:
- travis_retry composer install --no-interaction - travis_retry composer install --no-interaction
before_script: before_script:
- mysql -e 'create database telegrambot; use telegrambot; source structure.sql;' - mysql -u root -e 'create database telegrambot; use telegrambot; source structure.sql;'
script: script:
- ./vendor/bin/phpunit - ./vendor/bin/phpunit
......
...@@ -34,6 +34,7 @@ A Telegram Bot based on the official [Telegram Bot API](https://core.telegram.or ...@@ -34,6 +34,7 @@ A Telegram Bot based on the official [Telegram Bot API](https://core.telegram.or
- [Utils](#utils) - [Utils](#utils)
- [MySQL storage (Recommended)](#mysql-storage-recommended) - [MySQL storage (Recommended)](#mysql-storage-recommended)
- [Channels Support](#channels-support) - [Channels Support](#channels-support)
- [Botan.io integration (Optional)](#botanio-integration-optional)
- [Commands](#commands) - [Commands](#commands)
- [Predefined Commands](#predefined-commands) - [Predefined Commands](#predefined-commands)
- [Custom Commands](#custom-commands) - [Custom Commands](#custom-commands)
...@@ -401,6 +402,27 @@ $telegram->enableExternalMysql($external_pdo_connection) ...@@ -401,6 +402,27 @@ $telegram->enableExternalMysql($external_pdo_connection)
All methods implemented can be used to manage channels. All methods implemented can be used to manage channels.
With [admin commands](#admin-commands) you can manage your channels directly with your bot private chat. With [admin commands](#admin-commands) you can manage your channels directly with your bot private chat.
### Botan.io integration (Optional)
You can enable the integration using this line:
```php
$telegram->enableBotan('your_token');
```
Replace ```'your_token'``` with your Botan.io token, check [this page](https://github.com/botanio/sdk#creating-an-account) to see how to obtain one.
The following actions will be tracked:
- Commands (shown as `Command (/command_name)` in the stats
- Inline Queries, Chosen Inline Results and Callback Queries
- Messages sent to the bot (or replies in groups)
In order to use the URL shortener you must include the class ```use Longman\TelegramBot\Botan;``` and call it like this:
```Botan::shortenUrl('https://github.com/akalongman/php-telegram-bot', $user_id);```
Shortened URLs are cached in the database (if MySQL storage is enabled).
### Commands ### Commands
#### Predefined Commands #### Predefined Commands
......
This diff is collapsed.
...@@ -181,9 +181,9 @@ class Telegram ...@@ -181,9 +181,9 @@ class Telegram
* *
* @return Telegram * @return Telegram
*/ */
public function enableMySql(array $credential, $table_prefix = null) public function enableMySql(array $credential, $table_prefix = null, $encoding = 'utf8mb4')
{ {
$this->pdo = DB::initialize($credential, $this, $table_prefix); $this->pdo = DB::initialize($credential, $this, $table_prefix, $encoding);
ConversationDB::initializeConversation(); ConversationDB::initializeConversation();
$this->mysql_enabled = true; $this->mysql_enabled = true;
return $this; return $this;
...@@ -500,7 +500,7 @@ class Telegram ...@@ -500,7 +500,7 @@ class Telegram
//Botan.io integration //Botan.io integration
if ($this->botan_enabled) { if ($this->botan_enabled) {
Botan::track($this->input, $command); Botan::track($this->update, $command);
} }
} }
......
...@@ -7,7 +7,7 @@ CREATE TABLE IF NOT EXISTS `user` ( ...@@ -7,7 +7,7 @@ CREATE TABLE IF NOT EXISTS `user` (
`updated_at` timestamp NULL DEFAULT NULL COMMENT 'Entry date update', `updated_at` timestamp NULL DEFAULT NULL COMMENT 'Entry date update',
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
KEY `username` (`username`) KEY `username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;
CREATE TABLE IF NOT EXISTS `chat` ( CREATE TABLE IF NOT EXISTS `chat` (
`id` bigint COMMENT 'Unique user or chat identifier', `id` bigint COMMENT 'Unique user or chat identifier',
...@@ -18,7 +18,7 @@ CREATE TABLE IF NOT EXISTS `chat` ( ...@@ -18,7 +18,7 @@ CREATE TABLE IF NOT EXISTS `chat` (
`old_id` bigint DEFAULT NULL COMMENT 'Unique chat identifieri this is filled when a chat is converted to a superchat', `old_id` bigint DEFAULT NULL COMMENT 'Unique chat identifieri this is filled when a chat is converted to a superchat',
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
KEY `old_id` (`old_id`) KEY `old_id` (`old_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;
CREATE TABLE IF NOT EXISTS `user_chat` ( CREATE TABLE IF NOT EXISTS `user_chat` (
`user_id` bigint COMMENT 'Unique user identifier', `user_id` bigint COMMENT 'Unique user identifier',
...@@ -28,7 +28,7 @@ CREATE TABLE IF NOT EXISTS `user_chat` ( ...@@ -28,7 +28,7 @@ CREATE TABLE IF NOT EXISTS `user_chat` (
ON DELETE CASCADE ON UPDATE CASCADE, ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (`chat_id`) REFERENCES `chat` (`id`) FOREIGN KEY (`chat_id`) REFERENCES `chat` (`id`)
ON DELETE CASCADE ON UPDATE CASCADE ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;
CREATE TABLE IF NOT EXISTS `inline_query` ( CREATE TABLE IF NOT EXISTS `inline_query` (
`id` bigint UNSIGNED COMMENT 'Unique identifier for this query.', `id` bigint UNSIGNED COMMENT 'Unique identifier for this query.',
...@@ -40,12 +40,11 @@ CREATE TABLE IF NOT EXISTS `inline_query` ( ...@@ -40,12 +40,11 @@ CREATE TABLE IF NOT EXISTS `inline_query` (
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
KEY `user_id` (`user_id`), KEY `user_id` (`user_id`),
FOREIGN KEY (`user_id`) FOREIGN KEY (`user_id`) REFERENCES `user` (`id`)
REFERENCES `user` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;
CREATE TABLE IF NOT EXISTS `chosen_inline_query` ( CREATE TABLE IF NOT EXISTS `chosen_inline_result` (
`id` bigint UNSIGNED AUTO_INCREMENT COMMENT 'Unique identifier for chosen query.', `id` bigint UNSIGNED AUTO_INCREMENT COMMENT 'Unique identifier for chosen query.',
`result_id` CHAR(255) NOT NULL DEFAULT '' COMMENT 'Id of the chosen result', `result_id` CHAR(255) NOT NULL DEFAULT '' COMMENT 'Id of the chosen result',
`user_id` bigint NULL COMMENT 'Sender', `user_id` bigint NULL COMMENT 'Sender',
...@@ -56,10 +55,9 @@ CREATE TABLE IF NOT EXISTS `chosen_inline_query` ( ...@@ -56,10 +55,9 @@ CREATE TABLE IF NOT EXISTS `chosen_inline_query` (
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
KEY `user_id` (`user_id`), KEY `user_id` (`user_id`),
FOREIGN KEY (`user_id`) FOREIGN KEY (`user_id`) REFERENCES `user` (`id`)
REFERENCES `user` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;
CREATE TABLE IF NOT EXISTS `callback_query` ( CREATE TABLE IF NOT EXISTS `callback_query` (
`id` bigint UNSIGNED COMMENT 'Unique identifier for this query.', `id` bigint UNSIGNED COMMENT 'Unique identifier for this query.',
...@@ -71,10 +69,9 @@ CREATE TABLE IF NOT EXISTS `callback_query` ( ...@@ -71,10 +69,9 @@ CREATE TABLE IF NOT EXISTS `callback_query` (
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
KEY `user_id` (`user_id`), KEY `user_id` (`user_id`),
FOREIGN KEY (`user_id`) FOREIGN KEY (`user_id`) REFERENCES `user` (`id`)
REFERENCES `user` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;
CREATE TABLE IF NOT EXISTS `message` ( CREATE TABLE IF NOT EXISTS `message` (
`chat_id` bigint COMMENT 'Chat identifier.', `chat_id` bigint COMMENT 'Chat identifier.',
...@@ -86,7 +83,7 @@ CREATE TABLE IF NOT EXISTS `message` ( ...@@ -86,7 +83,7 @@ CREATE TABLE IF NOT EXISTS `message` (
`forward_date` timestamp NULL DEFAULT NULL COMMENT 'For forwarded messages, date the original message was sent in Unix time', `forward_date` timestamp NULL DEFAULT NULL COMMENT 'For forwarded messages, date the original message was sent in Unix time',
`reply_to_chat` bigint NULL DEFAULT NULL COMMENT 'Chat identifier.', `reply_to_chat` bigint NULL DEFAULT NULL COMMENT 'Chat identifier.',
`reply_to_message` bigint UNSIGNED DEFAULT NULL COMMENT 'Message is a reply to another message.', `reply_to_message` bigint UNSIGNED DEFAULT NULL COMMENT 'Message is a reply to another message.',
`text` TEXT DEFAULT NULL COMMENT 'For text messages, the actual UTF-8 text of the message max message length 4096 char utf8', `text` TEXT DEFAULT NULL COMMENT 'For text messages, the actual UTF-8 text of the message max message length 4096 char utf8mb4',
`entities` TEXT DEFAULT NULL COMMENT 'For text messages, special entities like usernames, URLs, bot commands, etc. that appear in the text', `entities` TEXT DEFAULT NULL COMMENT 'For text messages, special entities like usernames, URLs, bot commands, etc. that appear in the text',
`audio` TEXT DEFAULT NULL COMMENT 'Audio object. Message is an audio file, information about the file', `audio` TEXT DEFAULT NULL COMMENT 'Audio object. Message is an audio file, information about the file',
`document` TEXT DEFAULT NULL COMMENT 'Document object. Message is a general file, information about the file', `document` TEXT DEFAULT NULL COMMENT 'Document object. Message is a general file, information about the file',
...@@ -129,27 +126,27 @@ CREATE TABLE IF NOT EXISTS `message` ( ...@@ -129,27 +126,27 @@ CREATE TABLE IF NOT EXISTS `message` (
FOREIGN KEY (`new_chat_member`) REFERENCES `user` (`id`), FOREIGN KEY (`new_chat_member`) REFERENCES `user` (`id`),
FOREIGN KEY (`left_chat_member`) REFERENCES `user` (`id`) FOREIGN KEY (`left_chat_member`) REFERENCES `user` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;
CREATE TABLE IF NOT EXISTS `telegram_update` ( CREATE TABLE IF NOT EXISTS `telegram_update` (
`id` bigint UNSIGNED COMMENT 'The update\'s unique identifier.', `id` bigint UNSIGNED COMMENT 'The update\'s unique identifier.',
`chat_id` bigint NULL DEFAULT NULL COMMENT 'Chat identifier.', `chat_id` bigint NULL DEFAULT NULL COMMENT 'Chat identifier.',
`message_id` bigint UNSIGNED DEFAULT NULL COMMENT 'Unique message identifier', `message_id` bigint UNSIGNED DEFAULT NULL COMMENT 'Unique message identifier',
`inline_query_id` bigint UNSIGNED DEFAULT NULL COMMENT 'The inline query unique identifier.', `inline_query_id` bigint UNSIGNED DEFAULT NULL COMMENT 'The inline query unique identifier.',
`chosen_inline_query_id` bigint UNSIGNED DEFAULT NULL COMMENT 'The chosen query unique identifier.', `chosen_inline_result_id` bigint UNSIGNED DEFAULT NULL COMMENT 'The chosen query unique identifier.',
`callback_query_id` bigint UNSIGNED DEFAULT NULL COMMENT 'The callback query unique identifier.', `callback_query_id` bigint UNSIGNED DEFAULT NULL COMMENT 'The callback query unique identifier.',
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
KEY `message_id` (`chat_id`, `message_id`), KEY `message_id` (`chat_id`, `message_id`),
KEY `inline_query_id` (`inline_query_id`), KEY `inline_query_id` (`inline_query_id`),
KEY `chosen_inline_query_id` (`chosen_inline_query_id`), KEY `chosen_inline_result_id` (`chosen_inline_result_id`),
KEY `callback_query_id` (`callback_query_id`), KEY `callback_query_id` (`callback_query_id`),
FOREIGN KEY (`chat_id`, `message_id`) REFERENCES `message` (`chat_id`,`id`), FOREIGN KEY (`chat_id`, `message_id`) REFERENCES `message` (`chat_id`,`id`),
FOREIGN KEY (`inline_query_id`) REFERENCES `inline_query` (`id`), FOREIGN KEY (`inline_query_id`) REFERENCES `inline_query` (`id`),
FOREIGN KEY (`chosen_inline_query_id`) REFERENCES `chosen_inline_query` (`id`), FOREIGN KEY (`chosen_inline_result_id`) REFERENCES `chosen_inline_result` (`id`),
FOREIGN KEY (`callback_query_id`) REFERENCES `callback_query` (`id`) FOREIGN KEY (`callback_query_id`) REFERENCES `callback_query` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;
CREATE TABLE IF NOT EXISTS `conversation` ( CREATE TABLE IF NOT EXISTS `conversation` (
`id` bigint(20) unsigned AUTO_INCREMENT COMMENT 'Row unique id', `id` bigint(20) unsigned AUTO_INCREMENT COMMENT 'Row unique id',
...@@ -166,11 +163,9 @@ CREATE TABLE IF NOT EXISTS `conversation` ( ...@@ -166,11 +163,9 @@ CREATE TABLE IF NOT EXISTS `conversation` (
KEY `chat_id` (`chat_id`), KEY `chat_id` (`chat_id`),
KEY `status` (`status`), KEY `status` (`status`),
FOREIGN KEY (`user_id`) FOREIGN KEY (`user_id`) REFERENCES `user` (`id`),
REFERENCES `user` (`id`), FOREIGN KEY (`chat_id`) REFERENCES `chat` (`id`)
FOREIGN KEY (`chat_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;
REFERENCES `chat` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
CREATE TABLE IF NOT EXISTS `botan_shortener` ( CREATE TABLE IF NOT EXISTS `botan_shortener` (
`id` bigint UNSIGNED AUTO_INCREMENT COMMENT 'Unique identifier for this entry.', `id` bigint UNSIGNED AUTO_INCREMENT COMMENT 'Unique identifier for this entry.',
...@@ -180,5 +175,6 @@ CREATE TABLE IF NOT EXISTS `botan_shortener` ( ...@@ -180,5 +175,6 @@ CREATE TABLE IF NOT EXISTS `botan_shortener` (
`created_at` timestamp NULL DEFAULT NULL COMMENT 'Entry date creation', `created_at` timestamp NULL DEFAULT NULL COMMENT 'Entry date creation',
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) FOREIGN KEY (`user_id`) REFERENCES `user` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;
...@@ -35,7 +35,7 @@ class ConversationTest extends TestCase ...@@ -35,7 +35,7 @@ class ConversationTest extends TestCase
{ {
$credentials = [ $credentials = [
'host' => '127.0.0.1', 'host' => '127.0.0.1',
'user' => 'travis', 'user' => 'root',
'password' => '', 'password' => '',
'database' => 'telegrambot', 'database' => 'telegrambot',
]; ];
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment