Unverified Commit 8cbdfef4 authored by Armando Lüscher's avatar Armando Lüscher

Merge branch 'develop' into return_empty_array_for_items

parents ecd4449a 79747ac3
......@@ -7,3 +7,6 @@ charset = utf-8
indent_style = space
indent_size = 4
trim_trailing_whitespace = true
[*.{yml, yaml}]
indent_size = 2
/.* export-ignore
/composer.lock export-ignore
/phpcs.xml.dist export-ignore
/phpunit.xml.dist export-ignore
/tests export-ignore
tidelift: packagist/longman%2Ftelegram-bot
patreon: phptelegrambot
liberapay: PHP-Telegram-Bot
open_collective: php-telegram-bot
ko_fi: phptelegrambot
custom: https://github.com/php-telegram-bot/core#donate
<!-- If this is a feature request or idea, please remove all the text below this line before writing. -->
<!-- If this is a bug report or support request, please fill in the info below as accurately as you can. -->
### Required Information
<!-- Please enter exact version numbers, not just "latest" etc.! -->
- Operating system:
- PHP version:
- PHP Telegram Bot version:
- Using MySQL database: yes / no
- MySQL version:
- Update Method: Webhook / getUpdates
- Self-signed certificate: yes / no
- RAW update (if available):
### Expected behaviour
<!-- What SHOULD be happening? -->
### Actual behaviour
<!-- What IS happening? -->
### Steps to reproduce
<!-- Explain how to reproduce the issue -->
### Extra details
<!-- Please post any extra details that might help solve the issue (e.g. logs) -->
---
name: 💥 BC Break
about: Have you encountered an issue during an upgrade? 💣
---
<!--
Before reporting a BC break, please consult the changelog and wiki entry for the particular version to make sure it's not an expected change:
- https://github.com/php-telegram-bot/core/blob/master/CHANGELOG.md
- https://github.com/php-telegram-bot/core/wiki/Breaking-backwards-compatibility
-->
### BC Break Report
<--
❗ NEVER put your Telegram API key or any other private details here. (like passwords, user IDs, etc.)
Substitute them like <API_KEY> or <USER_ID> etc.
-->
#### Required Information
<!-- Fill in the relevant information below to help triage your pull request. -->
<!-- Please enter exact version numbers, not just "latest" etc.! -->
| ? | !
| --- | ---
| Operating system | Name and version
| PHP Telegram Bot version | x.y.z
| PHP version | x.y.z
| MySQL version | x.y.z / none
| Update Method | Webhook / getUpdates
| Self-signed certificate | yes / no
| RAW update (if available) | `{...}`
#### Summary
<!-- Provide a summary describing the problem you are experiencing. -->
#### Previous behaviour
<!-- What was the previous (working) behaviour? -->
#### Current behaviour
<!-- What is the current (broken) behaviour? -->
#### How to reproduce
<!--
Provide steps to reproduce the bug.
If possible, also add any relevant code snippet.
-->
#### Expected behaviour
<!-- What was the expected (correct) behaviour? -->
---
name: 🐞 Bug Report
about: Something is broken? 🔨
---
### Bug Report
<--
❗ NEVER put your Telegram API key or any other private details here. (like passwords, user IDs, etc.)
Substitute them like <API_KEY> or <USER_ID> etc.
-->
#### Required Information
<!-- Fill in the relevant information below to help triage your pull request. -->
<!-- Please enter exact version numbers, not just "latest" etc.! -->
| ? | !
| --- | ---
| Operating system | Name and version
| PHP Telegram Bot version | x.y.z
| PHP version | x.y.z
| MySQL version | x.y.z / none
| Update Method | Webhook / getUpdates
| Self-signed certificate | yes / no
| RAW update (if available) | `{...}`
#### Summary
<!-- Provide a summary describing the problem you are experiencing. -->
### Current behaviour
<!-- What is the current (buggy) behaviour? -->
#### How to reproduce
<!--
Provide steps to reproduce the bug.
If possible, also add any relevant code snippet.
-->
#### Expected behaviour
<!-- What was the expected (correct) behaviour? -->
---
name: 🎉 Feature Request
about: You have a neat idea that should be implemented? 🎩
---
### Feature Request
#### Summary
<!-- Provide a summary of the feature you would like to see implemented. -->
---
name: ❓ Support Question
about: Have a problem that you can't figure out? 🤔
---
### Support Question
<!--
Before asking a question here, please try asking in the support group first.
https://telegram.me/PHP_Telegram_Bot_Support
Keep in mind that GitHub is primarily an issue tracker.
-->
<--
❗ NEVER put your Telegram API key or any other private details here. (like passwords, user IDs, etc.)
Substitute them like <API_KEY> or <USER_ID> etc.
-->
#### Required Information
<!-- Fill in the relevant information below to help triage your pull request. -->
<!-- Please enter exact version numbers, not just "latest" etc.! -->
| ? | !
| --- | ---
| Operating system | Name and version
| PHP Telegram Bot version | x.y.z
| PHP version | x.y.z
| MySQL version | x.y.z / none
| Update Method | Webhook / getUpdates
| Self-signed certificate | yes / no
| RAW update (if available) | `{...}`
#### Summary
<!-- Describe the issue you are facing here. -->
<!-- Important: If this pull request is not related to any issue and contains a new feature, please create an issue first for discussion. -->
<!--
Important:
If this pull request is not related to any issue and contains a new feature, please create an issue first for discussion.
https://github.com/php-telegram-bot/core/issues/new?template=Feature_Request.md
<!-- Make sure this pull request is pointed towards the "develop" branch and refers to any issue that it's related to! -->
Make sure this pull request is pointed towards the "develop" branch and refers to any issue that it's related to!
-->
<!-- Explain in detail what this pull request contains. -->
<!-- Fill in the relevant information below to help triage your pull request. -->
| ? | !
|--- | ---
| Type | bug / feature / improvement
| BC Break | yes / no
| Fixed issues | <!-- use #NUM format to reference an issue -->
#### Summary
<!-- Provide a summary of your change. -->
......@@ -5,28 +5,20 @@
.DS_Store
.idea
.phpintel
composer.phar
# Local System Files (i.e. cache, logs, etc.) #
/cache
/build/logs
/build/coverage
/tmp
# Test Related Files #
/phpunit.xml
#Exception output
TelegramException.log
# Composer
vendor/
/composer.phar
/vendor
# Test-Related Files
/clover.xml
/phpcs.xml
/phpunit.xml
# phpDocumentor Logs #
# phpDocumentor Logs
phpdoc-*
# OSX #
# OSX
._*
.Spotlight-V100
.Trashes
build:
nodes:
analysis:
tests:
override:
- php-scrutinizer-run
filter:
paths: [src/*]
paths:
- src/
dependency_paths:
- lib/
checks:
php:
remove_extra_empty_lines: true
remove_php_closing_tag: true
remove_trailing_whitespace: true
fix_use_statements:
remove_unused: true
preserve_multiple: false
preserve_blanklines: true
order_alphabetically: true
fix_php_opening_tag: true
fix_linefeed: true
fix_line_ending: true
fix_identation_4spaces: true
fix_doc_comments: true
php:
check_method_contracts:
verify_interface_like_constraints: true
verify_documented_constraints: true
verify_parent_constraints: true
fix_doc_comments: true
fix_identation_4spaces: true
fix_line_ending: true
fix_linefeed: true
fix_php_opening_tag: true
fix_use_statements:
remove_unused: true
preserve_multiple: false
preserve_blanklines: true
order_alphabetically: true
more_specific_types_in_doc_comments: true
no_goto: true
param_doc_comment_if_not_inferrable: true
parameter_doc_comments: true
remove_extra_empty_lines: true
return_doc_comment_if_not_inferrable: true
return_doc_comments: true
simplify_boolean_return: true
tools:
external_code_coverage:
timeout: 120
external_code_coverage:
timeout: 300
dist: trusty
sudo: required
language: php
sudo: required
dist: trusty
addons:
mariadb: 10.1
cache:
directories:
- "$HOME/.composer/cache"
- vendor
- $HOME/.composer/cache
php:
- 5.5
- 5.6
- 7.0
- 7.1
- 7.2
- 7.3
- 7.2
- 7.1
- 7.0
- 5.6
- 5.5
- nightly
- hhvm
......@@ -44,7 +45,7 @@ before_script:
script:
- composer check-code
- if [ "$TRAVIS_PHP_VERSION" == "7.2" ] ; then composer test-cov; else composer test; fi
- if [ "$TRAVIS_PHP_VERSION" == "7.3" ]; then composer test-cov; else composer test; fi
after_script:
- if [ "$TRAVIS_PHP_VERSION" == "7.2" ]; then composer test-cov-upload; fi
- if [ "$TRAVIS_PHP_VERSION" == "7.3" ]; then composer test-cov-upload; fi
......@@ -5,15 +5,20 @@ Exclamation symbols (:exclamation:) note something of importance e.g. breaking c
## [Unreleased]
### Added
- New funding and support details.
- Custom issue templates. (#972)
### Changed
- Use PSR-12 for code style.
- [:exclamation:][unreleased-bc] Return an empty array for Entity properties with no items, instead of `null`.
- Some general housekeeping. (#972)
- [:exclamation:][unreleased-bc] Return an empty array for Entity properties with no items, instead of `null`. (#969)
### Deprecated
### Removed
- Botan.io integration completely removed.
### Fixed
- `forward_date` is now correctly saved to the DB.
- Broken `StickerSet::getStickers()` method.
### Security
- Security disclosure managed by Tidelift.
## [0.57.0] - 2019-06-01
:exclamation: After updating to this version, you will need to execute the [SQL migration script][0.57.0-sql-migration] on your database.
......
Contributing
-------------
# Contributing
The easiest way to contribute is to work on a checkout of your own fork.
When working on the `core` repository, it makes sense to rename your fork to `php-telegram-bot`.
Before you contribute code, please make sure it conforms to the PSR-2 coding standard and that the unit tests still pass.
Before you contribute code, please make sure it conforms to the PSR-12 coding standard and that the unit tests still pass.
You can run the following commands to check if everything is ready to submit:
cd php-telegram-bot
composer install
composer check-code
```bash
cd php-telegram-bot
composer install
composer check-code
```
Which should give you no output, indicating that there are no coding standard errors.
And then (remember to set up your test database!):
composer test
```bash
composer test
```
Which should give you no failures or errors. You can ignore any skipped tests as these are for external tools.
Pushing
-------
## Pushing
Development is based on the git flow branching model (see http://nvie.com/posts/a-successful-git-branching-model/)
If you fix a bug please push in hotfix branch.
If you develop a new feature please create a new branch.
Version
-------
## Version
Version number: 0.#version.#hotfix
Further code convention adopted
-------------------------------
## Further code convention adopted
- Each method and class is documented with a docblock
......
This diff is collapsed.
# Security
To report a security vulnerability, please use the [Tidelift security contact](https://tidelift.com/security).
Tidelift will then coordinate the fix and disclosure.
......@@ -47,16 +47,16 @@
},
"scripts": {
"check-code": [
"\"vendor/bin/phpcs\" --standard=phpcs.xml -snp src/ tests/"
"\"vendor/bin/phpcs\" -snp src/ tests/"
],
"test": [
"\"vendor/bin/phpunit\""
],
"test-cov": [
"\"vendor/bin/phpunit\" --coverage-clover build/logs/clover.xml"
"\"vendor/bin/phpunit\" --coverage-clover clover.xml"
],
"test-cov-upload": [
"wget https://scrutinizer-ci.com/ocular.phar && php ocular.phar code-coverage:upload --format=php-clover build/logs/clover.xml"
"wget https://scrutinizer-ci.com/ocular.phar && php ocular.phar code-coverage:upload --format=php-clover clover.xml"
]
}
}
<?xml version="1.0" encoding="UTF-8"?>
<phpunit
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.8/phpunit.xsd"
bootstrap="./tests/bootstrap.php"
backupGlobals="false"
backupStaticAttributes="false"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="false"
stopOnError="false"
stopOnFailure="false"
stopOnIncomplete="false"
stopOnSkipped="false"
syntaxCheck="true"
timeoutForLargeTests="60"
timeoutForMediumTests="10"
timeoutForSmallTests="1"
verbose="false"
>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.8/phpunit.xsd"
bootstrap="./tests/bootstrap.php"
backupGlobals="false"
backupStaticAttributes="false"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="false"
stopOnError="false"
stopOnFailure="false"
stopOnIncomplete="false"
stopOnSkipped="false"
syntaxCheck="true"
timeoutForLargeTests="60"
timeoutForMediumTests="10"
timeoutForSmallTests="1"
verbose="false"
>
<php>
<ini name="error_reporting" value="-1" />
<ini name="error_reporting" value="-1"/>
<const name="PHPUNIT_TESTSUITE" value="true"/>
<const name="PHPUNIT_DB_HOST" value="127.0.0.1"/>
<const name="PHPUNIT_DB_NAME" value="telegrambot"/>
......
<?php
/**
* This file is part of the TelegramBot package.
*
* (c) Avtandil Kikabidze aka LONGMAN <akalongman@gmail.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Longman\TelegramBot;
use GuzzleHttp\Client;
use GuzzleHttp\Exception\RequestException;
use Longman\TelegramBot\Entities\Update;
use Longman\TelegramBot\Exception\TelegramException;
/**
* Class Botan
*
* @deprecated Botan.io service is no longer working
*
* Integration with http://botan.io statistics service for Telegram bots
*/
class Botan
{
/**
* Botan.io API URL
*
* @var string
*/
protected static $api_base_uri = 'https://api.botan.io';
/**
* Yandex AppMetrica application key
*
* @var string
*/
protected static $token = '';
/**
* Guzzle Client object
*
* @var \GuzzleHttp\Client
*/
private static $client;
/**
* The actual command that is going to be reported
*
* Set as public to let the developers either:
* - block tracking from inside commands by setting the value to non-existent command
* - override which command is tracked when commands call other commands with executeCommand()
*
* @var string
*/
public static $command = '';
/**
* Initialize Botan
*
* @param string $token
* @param array $options
*
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public static function initializeBotan($token, array $options = [])
{
trigger_error('Longman\TelegramBot\Botan::initializeBotan is deprecated and will be removed in future release.', E_USER_DEPRECATED);
if (empty($token)) {
throw new TelegramException('Botan token is empty!');
}
$options_default = [
'timeout' => 3,
];
$options = array_merge($options_default, $options);
if (!is_numeric($options['timeout'])) {
throw new TelegramException('Timeout must be a number!');
}
self::$token = $token;
self::$client = new Client(['base_uri' => self::$api_base_uri, 'timeout' => $options['timeout']]);
BotanDB::initializeBotanDb();
}
/**
* Lock function to make sure only the first command is reported (the one user requested)
*
* This is in case commands are calling other commands with executeCommand()
*
* @param string $command
*/
public static function lock($command = '')
{
if (empty(self::$command)) {
self::$command = strtolower($command);
}
}
/**
* Track function
*
* @param \Longman\TelegramBot\Entities\Update $update
* @param string $command
*
* @return bool|string
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public static function track(Update $update, $command = '')
{
$command = strtolower($command);
if (empty(self::$token) || $command !== self::$command) {
return false;
}
if ($update === null) {
throw new TelegramException('Update object is empty!');
}
// Release the lock in case this is getUpdates instance in foreach loop
self::$command = '';
$data = [];
$update_data = (array) $update; // For now, this is the only way
$update_type = $update->getUpdateType();
$update_object_names = [
'message' => 'Message',
'edited_message' => 'Edited Message',
'channel_post' => 'Channel Post',
'edited_channel_post' => 'Edited Channel Post',
'inline_query' => 'Inline Query',
'chosen_inline_result' => 'Chosen Inline Result',
'callback_query' => 'Callback Query',
];
if (array_key_exists($update_type, $update_object_names)) {
$data = $update_data[$update_type];
$event_name = $update_object_names[$update_type];
if ($update_type === 'message' && $entities = $update->getMessage()->getEntities()) {
foreach ($entities as $entity) {
if ($entity->getType() === 'bot_command' && $entity->getOffset() === 0) {
if ($command === 'generic') {
$command = 'Generic';
} elseif ($command === 'genericmessage') { // This should not happen as it equals normal message but leaving it as a fail-safe
$command = 'Generic Message';
} else {
$command = '/' . $command;
}
$event_name = 'Command (' . $command . ')';
break;
}
}
}
}
if (empty($event_name)) {
TelegramLog::error('Botan.io stats report failed, no suitable update object found!');
return false;
}
// In case there is no from field assign id = 0
$uid = isset($data['from']['id']) ? $data['from']['id'] : 0;
try {
$response = self::$client->post(
sprintf(
'/track?token=%1$s&uid=%2$s&name=%3$s',
self::$token,
$uid,
urlencode($event_name)
),
[
'headers' => [
'Content-Type' => 'application/json',
],
'json' => $data,
]
);
$result = (string) $response->getBody();
} catch (RequestException $e) {
$result = $e->getMessage();
}
$responseData = json_decode($result, true);
if (!$responseData || $responseData['status'] !== 'accepted') {
TelegramLog::debug('Botan.io stats report failed: %s', $result ?: 'empty response');
return false;
}
return $responseData;
}
/**
* Url Shortener function
*
* @param string $url
* @param integer $user_id
*
* @return string
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public static function shortenUrl($url, $user_id)
{
if (empty(self::$token)) {
return $url;
}
if (empty($user_id)) {
throw new TelegramException('User id is empty!');
}
if ($cached = BotanDB::selectShortUrl($url, $user_id)) {
return $cached;
}
try {
$response = self::$client->post(
sprintf(
'/s?token=%1$s&user_ids=%2$s&url=%3$s',
self::$token,
$user_id,
urlencode($url)
)
);
$result = (string) $response->getBody();
} catch (RequestException $e) {
$result = $e->getMessage();
}
if (filter_var($result, FILTER_VALIDATE_URL) === false) {
TelegramLog::debug('Botan.io URL shortening failed for "%s": %s', $url, $result ?: 'empty response');
return $url;
}
BotanDB::insertShortUrl($url, $user_id, $result);
return $result;
}
}
<?php
/**
* This file is part of the TelegramBot package.
*
* (c) Avtandil Kikabidze aka LONGMAN <akalongman@gmail.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Longman\TelegramBot;
use Exception;
use Longman\TelegramBot\Exception\TelegramException;
/**
* Class BotanDB
*
* @deprecated Botan.io service is no longer working
*/
class BotanDB extends DB
{
/**
* Initialize botan shortener table
*/
public static function initializeBotanDb()
{
if (!defined('TB_BOTAN_SHORTENER')) {
define('TB_BOTAN_SHORTENER', self::$table_prefix . 'botan_shortener');
}
}
/**
* Select cached shortened URL from the database
*
* @param string $url
* @param string $user_id
*
* @return array|bool
* @throws TelegramException
*/
public static function selectShortUrl($url, $user_id)
{
if (!self::isDbConnected()) {
return false;
}
try {
$sth = self::$pdo->prepare('
SELECT `short_url`
FROM `' . TB_BOTAN_SHORTENER . '`
WHERE `user_id` = :user_id
AND `url` = :url
ORDER BY `created_at` DESC
LIMIT 1
');
$sth->bindValue(':user_id', $user_id);
$sth->bindValue(':url', $url);
$sth->execute();
return $sth->fetchColumn();
} catch (Exception $e) {
throw new TelegramException($e->getMessage());
}
}
/**
* Insert shortened URL into the database
*
* @param string $url
* @param string $user_id
* @param string $short_url
*
* @return bool
* @throws TelegramException
*/
public static function insertShortUrl($url, $user_id, $short_url)
{
if (!self::isDbConnected()) {
return false;
}
try {
$sth = self::$pdo->prepare('
INSERT INTO `' . TB_BOTAN_SHORTENER . '`
(`user_id`, `url`, `short_url`, `created_at`)
VALUES
(:user_id, :url, :short_url, :created_at)
');
$sth->bindValue(':user_id', $user_id);
$sth->bindValue(':url', $url);
$sth->bindValue(':short_url', $short_url);
$sth->bindValue(':created_at', self::getTimestamp());
return $sth->execute();
} catch (Exception $e) {
throw new TelegramException($e->getMessage());
}
}
}
......@@ -13,6 +13,8 @@ namespace Longman\TelegramBot\Commands\AdminCommands;
use Longman\TelegramBot\Commands\AdminCommand;
use Longman\TelegramBot\DB;
use Longman\TelegramBot\Entities\Chat;
use Longman\TelegramBot\Entities\ServerResponse;
use Longman\TelegramBot\Exception\TelegramException;
use Longman\TelegramBot\Request;
class ChatsCommand extends AdminCommand
......@@ -45,8 +47,8 @@ class ChatsCommand extends AdminCommand
/**
* Command execute method
*
* @return \Longman\TelegramBot\Entities\ServerResponse
* @throws \Longman\TelegramBot\Exception\TelegramException
* @return ServerResponse
* @throws TelegramException
*/
public function execute()
{
......
......@@ -12,6 +12,7 @@ namespace Longman\TelegramBot\Commands\AdminCommands;
use Longman\TelegramBot\Commands\AdminCommand;
use Longman\TelegramBot\DB;
use Longman\TelegramBot\Entities\ServerResponse;
use Longman\TelegramBot\Exception\TelegramException;
use Longman\TelegramBot\Request;
use Longman\TelegramBot\TelegramLog;
......@@ -68,7 +69,6 @@ class CleanupCommand extends AdminCommand
* @var array
*/
protected static $default_tables_to_clean = [
'botan_shortener',
'callback_query',
'chosen_inline_result',
'conversation',
......@@ -85,7 +85,6 @@ class CleanupCommand extends AdminCommand
* @var array
*/
protected static $default_clean_older_than = [
'botan_shortener' => '30 days',
'chat' => '365 days',
'callback_query' => '30 days',
'chosen_inline_result' => '30 days',
......@@ -242,11 +241,6 @@ class CleanupCommand extends AdminCommand
'request_limiter' => ['table' => TB_REQUEST_LIMITER, 'field' => 'created_at'],
];
// Botan table is only available if enabled.
if (defined('TB_BOTAN_SHORTENER')) {
$simple_tables['botan_shortener'] = ['table' => TB_BOTAN_SHORTENER, 'field' => 'created_at'];
}
foreach (array_intersect(array_keys($simple_tables), $tables_to_clean) as $table_to_clean) {
$queries[] = sprintf(
'DELETE FROM `%1$s`
......@@ -345,7 +339,8 @@ class CleanupCommand extends AdminCommand
/**
* Execution if MySQL is required but not available
*
* @return \Longman\TelegramBot\Entities\ServerResponse
* @return ServerResponse
* @throws TelegramException
*/
public function executeNoDb()
{
......@@ -364,8 +359,8 @@ class CleanupCommand extends AdminCommand
/**
* Command execute method
*
* @return \Longman\TelegramBot\Entities\ServerResponse
* @throws \Longman\TelegramBot\Exception\TelegramException
* @return ServerResponse
* @throws TelegramException
*/
public function execute()
{
......
......@@ -12,6 +12,7 @@ namespace Longman\TelegramBot\Commands\AdminCommands;
use Longman\TelegramBot\Commands\AdminCommand;
use Longman\TelegramBot\DB;
use Longman\TelegramBot\Exception\TelegramException;
use Longman\TelegramBot\Request;
/**
......@@ -43,14 +44,14 @@ class DebugCommand extends AdminCommand
* Command execute method
*
* @return mixed
* @throws \Longman\TelegramBot\Exception\TelegramException
* @throws TelegramException
*/
public function execute()
{
$pdo = DB::getPdo();
$pdo = DB::getPdo();
$message = $this->getMessage();
$chat = $message->getChat();
$text = strtolower($message->getText(true));
$chat = $message->getChat();
$text = strtolower($message->getText(true));
$data = ['chat_id' => $chat->getId()];
......@@ -80,7 +81,7 @@ class DebugCommand extends AdminCommand
$debug_info[] = sprintf('*Maximum PHP script execution time:* `%d seconds`', ini_get('max_execution_time'));
$mysql_version = $pdo ? $pdo->query('SELECT VERSION() AS version')->fetchColumn() : null;
$debug_info[] = sprintf('*MySQL version:* `%s`', $mysql_version ?: 'disabled');
$debug_info[] = sprintf('*MySQL version:* `%s`', $mysql_version ?: 'disabled');
$debug_info[] = sprintf('*Operating System:* `%s`', php_uname());
......@@ -88,7 +89,7 @@ class DebugCommand extends AdminCommand
$debug_info[] = sprintf('*Web Server:* `%s`', $_SERVER['SERVER_SOFTWARE']);
}
if (function_exists('curl_init')) {
$curlversion = curl_version();
$curlversion = curl_version();
$debug_info[] = sprintf('*curl version:* `%1$s; %2$s`', $curlversion['version'], $curlversion['ssl_version']);
}
......@@ -105,8 +106,8 @@ class DebugCommand extends AdminCommand
}
$webhook_info_result_str = json_encode($webhook_info_result, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
$debug_info[] = $webhook_info_title;
$debug_info[] = sprintf(
$debug_info[] = $webhook_info_title;
$debug_info[] = sprintf(
'```' . PHP_EOL . '%s```',
$webhook_info_result_str
);
......@@ -116,7 +117,7 @@ class DebugCommand extends AdminCommand
}
$data['parse_mode'] = 'Markdown';
$data['text'] = implode(PHP_EOL, $debug_info);
$data['text'] = implode(PHP_EOL, $debug_info);
return Request::sendMessage($data);
}
......
......@@ -13,6 +13,7 @@ namespace Longman\TelegramBot\Commands\AdminCommands;
use Longman\TelegramBot\Commands\AdminCommand;
use Longman\TelegramBot\Entities\Message;
use Longman\TelegramBot\Entities\ServerResponse;
use Longman\TelegramBot\Exception\TelegramException;
use Longman\TelegramBot\Request;
/**
......@@ -48,8 +49,8 @@ class SendtoallCommand extends AdminCommand
/**
* Execute command
*
* @return \Longman\TelegramBot\Entities\ServerResponse
* @throws \Longman\TelegramBot\Exception\TelegramException
* @return ServerResponse
* @throws TelegramException
*/
public function execute()
{
......
......@@ -15,6 +15,8 @@ use Longman\TelegramBot\Conversation;
use Longman\TelegramBot\Entities\Chat;
use Longman\TelegramBot\Entities\Keyboard;
use Longman\TelegramBot\Entities\Message;
use Longman\TelegramBot\Entities\ServerResponse;
use Longman\TelegramBot\Exception\TelegramException;
use Longman\TelegramBot\Request;
class SendtochannelCommand extends AdminCommand
......@@ -47,15 +49,15 @@ class SendtochannelCommand extends AdminCommand
/**
* Conversation Object
*
* @var \Longman\TelegramBot\Conversation
* @var Conversation
*/
protected $conversation;
/**
* Command execute method
*
* @return \Longman\TelegramBot\Entities\ServerResponse|mixed
* @throws \Longman\TelegramBot\Exception\TelegramException
* @return ServerResponse|mixed
* @throws TelegramException
*/
public function execute()
{
......@@ -272,11 +274,11 @@ class SendtochannelCommand extends AdminCommand
* @todo This method will be moved to a higher level maybe in AdminCommand or Command
* @todo Looking for a more significant name
*
* @param \Longman\TelegramBot\Entities\Message $message
* @param array $data
* @param Message $message
* @param array $data
*
* @return \Longman\TelegramBot\Entities\ServerResponse
* @throws \Longman\TelegramBot\Exception\TelegramException
* @return ServerResponse
* @throws TelegramException
*/
protected function sendBack(Message $message, array $data)
{
......@@ -311,12 +313,12 @@ class SendtochannelCommand extends AdminCommand
/**
* Publish a message to a channel and return success or failure message in markdown format
*
* @param \Longman\TelegramBot\Entities\Message $message
* @param string|int $channel_id
* @param string|null $caption
* @param Message $message
* @param string|int $channel_id
* @param string|null $caption
*
* @return string
* @throws \Longman\TelegramBot\Exception\TelegramException
* @throws TelegramException
*/
protected function publish(Message $message, $channel_id, $caption = null)
{
......@@ -351,7 +353,7 @@ class SendtochannelCommand extends AdminCommand
* @todo Why send just to the first found channel?
*
* @return mixed
* @throws \Longman\TelegramBot\Exception\TelegramException
* @throws TelegramException
*/
public function executeNoDb()
{
......
......@@ -16,7 +16,9 @@ use Longman\TelegramBot\Commands\AdminCommand;
use Longman\TelegramBot\DB;
use Longman\TelegramBot\Entities\Chat;
use Longman\TelegramBot\Entities\PhotoSize;
use Longman\TelegramBot\Entities\ServerResponse;
use Longman\TelegramBot\Entities\UserProfilePhotos;
use Longman\TelegramBot\Exception\TelegramException;
use Longman\TelegramBot\Request;
/**
......@@ -52,8 +54,8 @@ class WhoisCommand extends AdminCommand
/**
* Command execute method
*
* @return \Longman\TelegramBot\Entities\ServerResponse
* @throws \Longman\TelegramBot\Exception\TelegramException
* @return ServerResponse
* @throws TelegramException
*/
public function execute()
{
......
......@@ -18,7 +18,9 @@ use Longman\TelegramBot\Entities\Message;
use Longman\TelegramBot\Entities\Payments\PreCheckoutQuery;
use Longman\TelegramBot\Entities\Payments\ShippingQuery;
use Longman\TelegramBot\Entities\Poll;
use Longman\TelegramBot\Entities\ServerResponse;
use Longman\TelegramBot\Entities\Update;
use Longman\TelegramBot\Exception\TelegramException;
use Longman\TelegramBot\Request;
use Longman\TelegramBot\Telegram;
......@@ -43,14 +45,14 @@ abstract class Command
/**
* Telegram object
*
* @var \Longman\TelegramBot\Telegram
* @var Telegram
*/
protected $telegram;
/**
* Update object
*
* @var \Longman\TelegramBot\Entities\Update
* @var Update
*/
protected $update;
......@@ -120,8 +122,8 @@ abstract class Command
/**
* Constructor
*
* @param \Longman\TelegramBot\Telegram $telegram
* @param \Longman\TelegramBot\Entities\Update $update
* @param Telegram $telegram
* @param Update $update
*/
public function __construct(Telegram $telegram, Update $update = null)
{
......@@ -133,9 +135,9 @@ abstract class Command
/**
* Set update object
*
* @param \Longman\TelegramBot\Entities\Update $update
* @param Update $update
*
* @return \Longman\TelegramBot\Commands\Command
* @return Command
*/
public function setUpdate(Update $update = null)
{
......@@ -149,8 +151,8 @@ abstract class Command
/**
* Pre-execute command
*
* @return \Longman\TelegramBot\Entities\ServerResponse
* @throws \Longman\TelegramBot\Exception\TelegramException
* @return ServerResponse
* @throws TelegramException
*/
public function preExecute()
{
......@@ -182,16 +184,16 @@ abstract class Command
/**
* Execute command
*
* @return \Longman\TelegramBot\Entities\ServerResponse
* @throws \Longman\TelegramBot\Exception\TelegramException
* @return ServerResponse
* @throws TelegramException
*/
abstract public function execute();
/**
* Execution if MySQL is required but not available
*
* @return \Longman\TelegramBot\Entities\ServerResponse
* @throws \Longman\TelegramBot\Exception\TelegramException
* @return ServerResponse
* @throws TelegramException
*/
public function executeNoDb()
{
......@@ -210,7 +212,7 @@ abstract class Command
/**
* Get update object
*
* @return \Longman\TelegramBot\Entities\Update
* @return Update
*/
public function getUpdate()
{
......@@ -260,7 +262,7 @@ abstract class Command
/**
* Get telegram object
*
* @return \Longman\TelegramBot\Telegram
* @return Telegram
*/
public function getTelegram()
{
......@@ -399,7 +401,8 @@ abstract class Command
* @param string $text
* @param array $data
*
* @return \Longman\TelegramBot\Entities\ServerResponse
* @return ServerResponse
* @throws TelegramException
*/
public function replyToChat($text, array $data = [])
{
......@@ -419,7 +422,8 @@ abstract class Command
* @param string $text
* @param array $data
*
* @return \Longman\TelegramBot\Entities\ServerResponse
* @return ServerResponse
* @throws TelegramException
*/
public function replyToUser($text, array $data = [])
{
......
......@@ -10,6 +10,7 @@
namespace Longman\TelegramBot\Commands;
use Longman\TelegramBot\Entities\ServerResponse;
use Longman\TelegramBot\Request;
abstract class SystemCommand extends Command
......@@ -20,7 +21,7 @@ abstract class SystemCommand extends Command
* Although system commands should just work and return a successful ServerResponse,
* each system command can override this method to add custom functionality.
*
* @return \Longman\TelegramBot\Entities\ServerResponse
* @return ServerResponse
*/
public function execute()
{
......
......@@ -42,7 +42,6 @@ class CallbackqueryCommand extends SystemCommand
* Command execute method
*
* @return mixed
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function execute()
{
......
......@@ -38,7 +38,6 @@ class ChannelchatcreatedCommand extends SystemCommand
* Command execute method
*
* @return mixed
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function execute()
{
......
......@@ -38,7 +38,6 @@ class ChannelpostCommand extends SystemCommand
* Execute command
*
* @return mixed
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function execute()
{
......
......@@ -38,7 +38,6 @@ class ChoseninlineresultCommand extends SystemCommand
* Command execute method
*
* @return mixed
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function execute()
{
......
......@@ -38,7 +38,6 @@ class DeletechatphotoCommand extends SystemCommand
* Command execute method
*
* @return mixed
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function execute()
{
......
......@@ -38,7 +38,6 @@ class EditedchannelpostCommand extends SystemCommand
* Execute command
*
* @return mixed
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function execute()
{
......
......@@ -38,7 +38,6 @@ class EditedmessageCommand extends SystemCommand
* Command execute method
*
* @return mixed
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function execute()
{
......
......@@ -11,7 +11,7 @@
namespace Longman\TelegramBot\Commands\SystemCommands;
use Longman\TelegramBot\Commands\SystemCommand;
use Longman\TelegramBot\Request;
use Longman\TelegramBot\Entities\ServerResponse;
/**
* Generic command
......@@ -36,8 +36,7 @@ class GenericCommand extends SystemCommand
/**
* Command execute method
*
* @return mixed
* @throws \Longman\TelegramBot\Exception\TelegramException
* @return ServerResponse
*/
public function execute()
{
......
......@@ -10,9 +10,11 @@
namespace Longman\TelegramBot\Commands\SystemCommands;
use Longman\TelegramBot\Commands\SystemCommand;
use Longman\TelegramBot\Conversation;
use Longman\TelegramBot\Entities\ServerResponse;
use Longman\TelegramBot\Exception\TelegramException;
use Longman\TelegramBot\Request;
use Longman\TelegramBot\Commands\SystemCommand;
/**
* Generic message command
......@@ -42,7 +44,7 @@ class GenericmessageCommand extends SystemCommand
/**
* Execution if MySQL is required but not available
*
* @return \Longman\TelegramBot\Entities\ServerResponse
* @return ServerResponse
*/
public function executeNoDb()
{
......@@ -53,8 +55,8 @@ class GenericmessageCommand extends SystemCommand
/**
* Execute command
*
* @return \Longman\TelegramBot\Entities\ServerResponse
* @throws \Longman\TelegramBot\Exception\TelegramException
* @return ServerResponse
* @throws TelegramException
*/
public function execute()
{
......
......@@ -38,7 +38,6 @@ class GroupchatcreatedCommand extends SystemCommand
* Command execute method
*
* @return mixed
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function execute()
{
......
......@@ -11,8 +11,6 @@
namespace Longman\TelegramBot\Commands\SystemCommands;
use Longman\TelegramBot\Commands\SystemCommand;
use Longman\TelegramBot\Entities\InlineQuery\InlineQueryResultArticle;
use Longman\TelegramBot\Entities\InputMessageContent\InputTextMessageContent;
use Longman\TelegramBot\Request;
/**
......@@ -39,7 +37,6 @@ class InlinequeryCommand extends SystemCommand
* Command execute method
*
* @return mixed
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function execute()
{
......
......@@ -38,7 +38,6 @@ class LeftchatmemberCommand extends SystemCommand
* Command execute method
*
* @return mixed
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function execute()
{
......
......@@ -38,7 +38,6 @@ class MigratefromchatidCommand extends SystemCommand
* Command execute method
*
* @return mixed
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function execute()
{
......
......@@ -38,7 +38,6 @@ class MigratetochatidCommand extends SystemCommand
* Command execute method
*
* @return mixed
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function execute()
{
......
......@@ -38,7 +38,6 @@ class NewchatmembersCommand extends SystemCommand
* Command execute method
*
* @return mixed
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function execute()
{
......
......@@ -38,7 +38,6 @@ class NewchatphotoCommand extends SystemCommand
* Command execute method
*
* @return mixed
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function execute()
{
......
......@@ -38,7 +38,6 @@ class NewchattitleCommand extends SystemCommand
* Command execute method
*
* @return mixed
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function execute()
{
......
......@@ -38,7 +38,6 @@ class PinnedmessageCommand extends SystemCommand
* Execute command
*
* @return mixed
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function execute()
{
......
......@@ -11,7 +11,6 @@
namespace Longman\TelegramBot\Commands\SystemCommands;
use Longman\TelegramBot\Commands\SystemCommand;
use Longman\TelegramBot\Request;
/**
* Start command
......@@ -44,7 +43,6 @@ class StartCommand extends SystemCommand
* Command execute method
*
* @return mixed
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function execute()
{
......
......@@ -38,7 +38,6 @@ class SupergroupchatcreatedCommand extends SystemCommand
* Command execute method
*
* @return mixed
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function execute()
{
......
......@@ -10,6 +10,8 @@
namespace Longman\TelegramBot;
use Longman\TelegramBot\Exception\TelegramException;
/**
* Class Conversation
*
......@@ -67,7 +69,7 @@ class Conversation
* @param int $chat_id
* @param string $command
*
* @throws \Longman\TelegramBot\Exception\TelegramException
* @throws TelegramException
*/
public function __construct($user_id, $chat_id, $command = null)
{
......@@ -100,7 +102,7 @@ class Conversation
* Load the conversation from the database
*
* @return bool
* @throws \Longman\TelegramBot\Exception\TelegramException
* @throws TelegramException
*/
protected function load()
{
......@@ -140,7 +142,7 @@ class Conversation
* Start a new conversation if the current command doesn't have one yet
*
* @return bool
* @throws \Longman\TelegramBot\Exception\TelegramException
* @throws TelegramException
*/
protected function start()
{
......@@ -164,6 +166,7 @@ class Conversation
* Currently the Conversation is not deleted but just set to 'stopped'
*
* @return bool
* @throws TelegramException
*/
public function stop()
{
......@@ -174,6 +177,7 @@ class Conversation
* Cancel the current conversation
*
* @return bool
* @throws TelegramException
*/
public function cancel()
{
......@@ -186,6 +190,7 @@ class Conversation
* @param string $status
*
* @return bool
* @throws TelegramException
*/
protected function updateStatus($status)
{
......@@ -209,6 +214,7 @@ class Conversation
* Store the array/variable in the database with json_encode() function
*
* @return bool
* @throws TelegramException
*/
public function update()
{
......
......@@ -1186,13 +1186,13 @@ class DB
* @param integer $chat_id
* @param string $inline_message_id
*
* @return array|bool Array containing TOTAL and CURRENT fields or false on invalid arguments
* @return array Array containing TOTAL and CURRENT fields or false on invalid arguments
* @throws TelegramException
*/
public static function getTelegramRequestCount($chat_id = null, $inline_message_id = null)
{
if (!self::isDbConnected()) {
return false;
return [];
}
try {
......
......@@ -33,8 +33,6 @@ abstract class Entity
*
* @param array $data
* @param string $bot_username
*
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function __construct($data, $bot_username = '')
{
......@@ -96,8 +94,6 @@ abstract class Entity
/**
* Perform any special entity validation
*
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
protected function validate()
{
......
......@@ -62,8 +62,6 @@ class InlineQueryResultArticle extends InlineEntity implements InlineQueryResult
* InlineQueryResultArticle constructor
*
* @param array $data
*
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function __construct(array $data = [])
{
......
......@@ -56,8 +56,6 @@ class InlineQueryResultAudio extends InlineEntity implements InlineQueryResult
* InlineQueryResultAudio constructor
*
* @param array $data
*
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function __construct(array $data = [])
{
......
......@@ -47,8 +47,6 @@ class InlineQueryResultCachedAudio extends InlineEntity implements InlineQueryRe
* InlineQueryResultCachedAudio constructor
*
* @param array $data
*
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function __construct(array $data = [])
{
......
......@@ -53,8 +53,6 @@ class InlineQueryResultCachedDocument extends InlineEntity implements InlineQuer
* InlineQueryResultCachedDocument constructor
*
* @param array $data
*
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function __construct(array $data = [])
{
......
......@@ -50,8 +50,6 @@ class InlineQueryResultCachedGif extends InlineEntity implements InlineQueryResu
* InlineQueryResultCachedGif constructor
*
* @param array $data
*
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function __construct(array $data = [])
{
......
......@@ -50,8 +50,6 @@ class InlineQueryResultCachedMpeg4Gif extends InlineEntity implements InlineQuer
* InlineQueryResultCachedMpeg4Gif constructor
*
* @param array $data
*
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function __construct(array $data = [])
{
......
......@@ -53,8 +53,6 @@ class InlineQueryResultCachedPhoto extends InlineEntity implements InlineQueryRe
* InlineQueryResultCachedPhoto constructor
*
* @param array $data
*
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function __construct(array $data = [])
{
......
......@@ -44,8 +44,6 @@ class InlineQueryResultCachedSticker extends InlineEntity implements InlineQuery
* InlineQueryResultCachedSticker constructor
*
* @param array $data
*
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function __construct(array $data = [])
{
......
......@@ -53,8 +53,6 @@ class InlineQueryResultCachedVideo extends InlineEntity implements InlineQueryRe
* InlineQueryResultCachedVideo constructor
*
* @param array $data
*
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function __construct(array $data = [])
{
......
......@@ -50,8 +50,6 @@ class InlineQueryResultCachedVoice extends InlineEntity implements InlineQueryRe
* InlineQueryResultCachedVoice constructor
*
* @param array $data
*
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function __construct(array $data = [])
{
......
......@@ -61,8 +61,6 @@ class InlineQueryResultContact extends InlineEntity implements InlineQueryResult
* InlineQueryResultContact constructor
*
* @param array $data
*
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function __construct(array $data = [])
{
......
......@@ -65,8 +65,6 @@ class InlineQueryResultDocument extends InlineEntity implements InlineQueryResul
* InlineQueryResultDocument constructor
*
* @param array $data
*
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function __construct(array $data = [])
{
......
......@@ -40,8 +40,6 @@ class InlineQueryResultGame extends InlineEntity implements InlineQueryResult
* InlineQueryResultGame constructor
*
* @param array $data
*
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function __construct(array $data = [])
{
......
......@@ -61,8 +61,6 @@ class InlineQueryResultGif extends InlineEntity implements InlineQueryResult
* InlineQueryResultGif constructor
*
* @param array $data
*
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function __construct(array $data = [])
{
......
......@@ -62,8 +62,6 @@ class InlineQueryResultLocation extends InlineEntity implements InlineQueryResul
* InlineQueryResultLocation constructor
*
* @param array $data
*
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function __construct(array $data = [])
{
......
......@@ -61,8 +61,6 @@ class InlineQueryResultMpeg4Gif extends InlineEntity implements InlineQueryResul
* InlineQueryResultMpeg4Gif constructor
*
* @param array $data
*
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function __construct(array $data = [])
{
......
......@@ -62,8 +62,6 @@ class InlineQueryResultPhoto extends InlineEntity implements InlineQueryResult
* InlineQueryResultPhoto constructor
*
* @param array $data
*
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function __construct(array $data = [])
{
......
......@@ -67,8 +67,6 @@ class InlineQueryResultVenue extends InlineEntity implements InlineQueryResult
* InlineQueryResultVenue constructor
*
* @param array $data
*
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function __construct(array $data = [])
{
......
......@@ -68,8 +68,6 @@ class InlineQueryResultVideo extends InlineEntity implements InlineQueryResult
* InlineQueryResultVideo constructor
*
* @param array $data
*
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function __construct(array $data = [])
{
......
......@@ -53,8 +53,6 @@ class InlineQueryResultVoice extends InlineEntity implements InlineQueryResult
* InlineQueryResultVoice constructor
*
* @param array $data
*
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function __construct(array $data = [])
{
......
......@@ -4,5 +4,20 @@ namespace Longman\TelegramBot\Entities\InputMedia;
interface InputMedia
{
/**
* @return string Type of the result.
*/
public function getType();
/**
* @return string File to send.
*/
public function getMedia();
/**
* @param string $media File to send.
*
* @return string
*/
public function setMedia($media);
}
......@@ -52,8 +52,6 @@ class InputMediaAnimation extends Entity implements InputMedia
* InputMediaAnimation constructor
*
* @param array $data
*
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function __construct(array $data = [])
{
......
......@@ -52,8 +52,6 @@ class InputMediaAudio extends Entity implements InputMedia
* InputMediaAudio constructor
*
* @param array $data
*
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function __construct(array $data = [])
{
......
......@@ -43,8 +43,6 @@ class InputMediaDocument extends Entity implements InputMedia
* InputMediaDocument constructor
*
* @param array $data
*
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function __construct(array $data = [])
{
......
......@@ -40,8 +40,6 @@ class InputMediaPhoto extends Entity implements InputMedia
* InputMediaPhoto constructor
*
* @param array $data
*
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function __construct(array $data = [])
{
......
......@@ -55,8 +55,6 @@ class InputMediaVideo extends Entity implements InputMedia
* InputMediaVideo constructor
*
* @param array $data
*
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function __construct(array $data = [])
{
......
......@@ -54,7 +54,7 @@ class Keyboard extends Entity
/**
* Get the proper keyboard button class for this keyboard.
*
* @return KeyboardButton|InlineKeyboardButton
* @return string
*/
public function getKeyboardButtonClass()
{
......@@ -154,9 +154,9 @@ class Keyboard extends Entity
/**
* Parse a given button to the correct KeyboardButton object type.
*
* @param array|string|\Longman\TelegramBot\Entities\KeyboardButton $button
* @param array|string|KeyboardButton $button
*
* @return \Longman\TelegramBot\Entities\KeyboardButton|null
* @return KeyboardButton|null
*/
protected function parseButton($button)
{
......@@ -166,7 +166,7 @@ class Keyboard extends Entity
return $button;
}
if (!$this->isInlineKeyboard() || $button_class::couldBe($button)) {
if (!$this->isInlineKeyboard() || call_user_func([$button_class, 'couldBe'], $button)) {
return new $button_class($button);
}
......@@ -179,7 +179,7 @@ class Keyboard extends Entity
protected function validate()
{
$keyboard_type = $this->getKeyboardType();
$keyboard = $this->getProperty($keyboard_type);
$keyboard = $this->getProperty($keyboard_type);
if ($keyboard !== null) {
if (!is_array($keyboard)) {
......@@ -201,8 +201,7 @@ class Keyboard extends Entity
*
* @param array $data
*
* @return \Longman\TelegramBot\Entities\Keyboard
* @throws \Longman\TelegramBot\Exception\TelegramException
* @return Keyboard
*/
public static function remove(array $data = [])
{
......@@ -216,8 +215,7 @@ class Keyboard extends Entity
*
* @param array $data
*
* @return \Longman\TelegramBot\Entities\Keyboard
* @throws \Longman\TelegramBot\Exception\TelegramException
* @return Keyboard
*/
public static function forceReply(array $data = [])
{
......
......@@ -11,6 +11,7 @@
namespace Longman\TelegramBot\Entities\Payments;
use Longman\TelegramBot\Entities\Entity;
use Longman\TelegramBot\Entities\ServerResponse;
use Longman\TelegramBot\Entities\User;
use Longman\TelegramBot\Request;
......@@ -48,7 +49,7 @@ class PreCheckoutQuery extends Entity
* @param bool $ok
* @param array $data
*
* @return \Longman\TelegramBot\Entities\ServerResponse
* @return ServerResponse
*/
public function answer($ok, array $data = [])
{
......
......@@ -11,6 +11,7 @@
namespace Longman\TelegramBot\Entities\Payments;
use Longman\TelegramBot\Entities\Entity;
use Longman\TelegramBot\Entities\ServerResponse;
use Longman\TelegramBot\Entities\User;
use Longman\TelegramBot\Request;
......@@ -45,7 +46,7 @@ class ShippingQuery extends Entity
* @param bool $ok
* @param array $data
*
* @return \Longman\TelegramBot\Entities\ServerResponse
* @return ServerResponse
*/
public function answer($ok, array $data = [])
{
......
......@@ -22,8 +22,6 @@ class ReplyToMessage extends Message
*
* @param array $data
* @param string $bot_username
*
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function __construct(array $data, $bot_username = '')
{
......
......@@ -30,8 +30,6 @@ class ServerResponse extends Entity
*
* @param array $data
* @param string $bot_username
*
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function __construct(array $data, $bot_username)
{
......@@ -105,7 +103,7 @@ class ServerResponse extends Entity
* @param array $result
* @param string $bot_username
*
* @return \Longman\TelegramBot\Entities\Chat|\Longman\TelegramBot\Entities\ChatMember|\Longman\TelegramBot\Entities\File|\Longman\TelegramBot\Entities\Message|\Longman\TelegramBot\Entities\User|\Longman\TelegramBot\Entities\UserProfilePhotos|\Longman\TelegramBot\Entities\WebhookInfo
* @return Chat|ChatMember|File|Message|User|UserProfilePhotos|WebhookInfo
*/
private function createResultObject(array $result, $bot_username)
{
......@@ -135,7 +133,7 @@ class ServerResponse extends Entity
* @param array $result
* @param string $bot_username
*
* @return \Longman\TelegramBot\Entities\ChatMember[]|\Longman\TelegramBot\Entities\Games\GameHighScore[]|\Longman\TelegramBot\Entities\Message[]|\Longman\TelegramBot\Entities\Update[]
* @return ChatMember[]|GameHighScore[]|Message[]|Update[]
*/
private function createResultObjects(array $result, $bot_username)
{
......
......@@ -31,8 +31,6 @@ class PassportElementErrorDataField extends Entity implements PassportElementErr
* PassportElementErrorDataField constructor
*
* @param array $data
*
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function __construct(array $data = [])
{
......
......@@ -30,8 +30,6 @@ class PassportElementErrorFile extends Entity implements PassportElementError
* PassportElementErrorFile constructor
*
* @param array $data
*
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function __construct(array $data = [])
{
......
......@@ -30,8 +30,6 @@ class PassportElementErrorFiles extends Entity implements PassportElementError
* PassportElementErrorFiles constructor
*
* @param array $data
*
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function __construct(array $data = [])
{
......
......@@ -30,8 +30,6 @@ class PassportElementErrorFrontSide extends Entity implements PassportElementErr
* PassportElementErrorFrontSide constructor
*
* @param array $data
*
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function __construct(array $data = [])
{
......
......@@ -30,8 +30,6 @@ class PassportElementErrorReverseSide extends Entity implements PassportElementE
* PassportElementErrorReverseSide constructor
*
* @param array $data
*
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function __construct(array $data = [])
{
......
......@@ -30,8 +30,6 @@ class PassportElementErrorSelfie extends Entity implements PassportElementError
* PassportElementErrorSelfie constructor
*
* @param array $data
*
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function __construct(array $data = [])
{
......
......@@ -30,8 +30,6 @@ class PassportElementErrorTranslationFile extends Entity implements PassportElem
* PassportElementErrorTranslationFile constructor
*
* @param array $data
*
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function __construct(array $data = [])
{
......
......@@ -30,8 +30,6 @@ class PassportElementErrorTranslationFiles extends Entity implements PassportEle
* PassportElementErrorTranslationFiles constructor
*
* @param array $data
*
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function __construct(array $data = [])
{
......
......@@ -30,8 +30,6 @@ class PassportElementErrorUnspecified extends Entity implements PassportElementE
* PassportElementErrorUnspecified constructor
*
* @param array $data
*
* @throws \Longman\TelegramBot\Exception\TelegramException
*/
public function __construct(array $data = [])
{
......
......@@ -82,10 +82,7 @@ class Update extends Entity
/**
* Get update content
*
* @return \Longman\TelegramBot\Entities\CallbackQuery
* |\Longman\TelegramBot\Entities\ChosenInlineResult
* |\Longman\TelegramBot\Entities\InlineQuery
* |\Longman\TelegramBot\Entities\Message
* @return CallbackQuery|ChosenInlineResult|InlineQuery|Message
*/
public function getUpdateContent()
{
......
......@@ -34,7 +34,7 @@ class UserProfilePhotos extends Entity
*
* This method overrides the default getPhotos method and returns a nice array
*
* @return PhotoSize[]
* @return PhotoSize[][]
*/
public function getPhotos()
{
......@@ -42,11 +42,9 @@ class UserProfilePhotos extends Entity
if ($these_photos = $this->getProperty('photos')) {
foreach ($these_photos as $photos) {
$new_photos = [];
foreach ($photos as $photo) {
$new_photos[] = new PhotoSize($photo);
}
$all_photos[] = $new_photos;
$all_photos[] = array_map(function ($photo) {
return new PhotoSize($photo);
}, $photos);
}
}
......
......@@ -91,7 +91,7 @@ class Request
/**
* Telegram object
*
* @var \Longman\TelegramBot\Telegram
* @var Telegram
*/
private static $telegram;
......@@ -105,7 +105,7 @@ class Request
/**
* Guzzle Client object
*
* @var \GuzzleHttp\Client
* @var Client
*/
private static $client;
......@@ -253,7 +253,7 @@ class Request
/**
* Initialize
*
* @param \Longman\TelegramBot\Telegram $telegram
* @param Telegram $telegram
*
* @throws TelegramException
*/
......@@ -287,7 +287,7 @@ class Request
* Set input from custom input or stdin and return it
*
* @return string
* @throws \Longman\TelegramBot\Exception\TelegramException
* @throws TelegramException
*/
public static function getInput()
{
......@@ -377,7 +377,7 @@ class Request
}
// Reformat data array in multipart way if it contains a resource
$has_resource |= (is_resource($item) || $item instanceof Stream);
$has_resource = $has_resource || is_resource($item) || $item instanceof Stream;
$multipart[] = ['name' => $key, 'contents' => $item];
}
......@@ -421,6 +421,7 @@ class Request
* @param array $multipart
*
* @return mixed
* @throws TelegramException
*/
private static function mediaInputHelper($item, &$has_resource, array &$multipart)
{
......@@ -472,7 +473,7 @@ class Request
* @param array $data Data to attach to the execution
*
* @return string Result of the HTTP Request
* @throws \Longman\TelegramBot\Exception\TelegramException
* @throws TelegramException
*/
public static function execute($action, array $data = [])
{
......@@ -509,10 +510,10 @@ class Request
/**
* Download file
*
* @param \Longman\TelegramBot\Entities\File $file
* @param File $file
*
* @return boolean
* @throws \Longman\TelegramBot\Exception\TelegramException
* @throws TelegramException
*/
public static function downloadFile(File $file)
{
......@@ -540,7 +541,7 @@ class Request
return filesize($file_path) > 0;
} catch (RequestException $e) {
return ($e->getResponse()) ? (string) $e->getResponse()->getBody() : '';
return false;
} finally {
//Logging verbose debug output
TelegramLog::endDebugLogTempStream('Verbose HTTP File Download Request output:' . PHP_EOL . '%s' . PHP_EOL);
......@@ -553,7 +554,7 @@ class Request
* @param string $file
*
* @return resource
* @throws \Longman\TelegramBot\Exception\TelegramException
* @throws TelegramException
*/
public static function encodeFile($file)
{
......@@ -574,8 +575,8 @@ class Request
* @param string $action
* @param array $data
*
* @return \Longman\TelegramBot\Entities\ServerResponse
* @throws \Longman\TelegramBot\Exception\TelegramException
* @return ServerResponse
* @throws TelegramException
*/
public static function send($action, array $data = [])
{
......@@ -643,7 +644,7 @@ class Request
*
* @param array $data
*
* @throws \Longman\TelegramBot\Exception\TelegramException
* @throws TelegramException
*/
private static function ensureNonEmptyData(array $data)
{
......@@ -657,7 +658,7 @@ class Request
*
* @param string $action
*
* @throws \Longman\TelegramBot\Exception\TelegramException
* @throws TelegramException
*/
private static function ensureValidAction($action)
{
......@@ -673,8 +674,8 @@ class Request
*
* @param array $data
*
* @return \Longman\TelegramBot\Entities\ServerResponse
* @throws \Longman\TelegramBot\Exception\TelegramException
* @return ServerResponse
* @throws TelegramException
*/
public static function sendMessage(array $data)
{
......@@ -698,8 +699,7 @@ class Request
* @param string $action
* @param array $data
*
* @return \Longman\TelegramBot\Entities\ServerResponse
* @throws \Longman\TelegramBot\Exception\TelegramException
* @return ServerResponse
*/
public static function __callStatic($action, array $data)
{
......@@ -716,8 +716,7 @@ class Request
* No request to telegram are sent, this function is used in commands that
* don't need to fire a message after execution
*
* @return \Longman\TelegramBot\Entities\ServerResponse
* @throws \Longman\TelegramBot\Exception\TelegramException
* @return ServerResponse
*/
public static function emptyResponse()
{
......@@ -760,7 +759,7 @@ class Request
* @param boolean $enable
* @param array $options
*
* @throws \Longman\TelegramBot\Exception\TelegramException
* @throws TelegramException
*/
public static function setLimiter($enable = true, array $options = [])
{
......@@ -789,7 +788,7 @@ class Request
* @param string $action
* @param array $data
*
* @throws \Longman\TelegramBot\Exception\TelegramException
* @throws TelegramException
*/
private static function limitTelegramRequests($action, array $data = [])
{
......@@ -830,7 +829,7 @@ class Request
$chat_id = isset($data['chat_id']) ? $data['chat_id'] : null;
$inline_message_id = isset($data['inline_message_id']) ? $data['inline_message_id'] : null;
if (($chat_id || $inline_message_id) && in_array($action, $limited_methods)) {
if (($chat_id || $inline_message_id) && in_array($action, $limited_methods, true)) {
$timeout = 60;
while (true) {
......@@ -838,18 +837,23 @@ class Request
throw new TelegramException('Timed out while waiting for a request spot!');
}
$requests = DB::getTelegramRequestCount($chat_id, $inline_message_id);
if (!($requests = DB::getTelegramRequestCount($chat_id, $inline_message_id))) {
break;
}
// Make sure we're handling integers here.
$requests = array_map('intval', $requests);
$chat_per_second = ($requests['LIMIT_PER_SEC'] == 0); // No more than one message per second inside a particular chat
$global_per_second = ($requests['LIMIT_PER_SEC_ALL'] < 30); // No more than 30 messages per second to different chats
$groups_per_minute = (((is_numeric($chat_id) && $chat_id > 0) || !is_null($inline_message_id)) || ((!is_numeric($chat_id) || $chat_id < 0) && $requests['LIMIT_PER_MINUTE'] < 20)); // No more than 20 messages per minute in groups and channels
$chat_per_second = ($requests['LIMIT_PER_SEC'] === 0); // No more than one message per second inside a particular chat
$global_per_second = ($requests['LIMIT_PER_SEC_ALL'] < 30); // No more than 30 messages per second to different chats
$groups_per_minute = (((is_numeric($chat_id) && $chat_id > 0) || $inline_message_id !== null) || ((!is_numeric($chat_id) || $chat_id < 0) && $requests['LIMIT_PER_MINUTE'] < 20)); // No more than 20 messages per minute in groups and channels
if ($chat_per_second && $global_per_second && $groups_per_minute) {
break;
}
$timeout--;
usleep(self::$limiter_interval * 1000000);
usleep((int) (self::$limiter_interval * 1000000));
}
DB::insertTelegramRequest($action, $data);
......
......@@ -70,7 +70,7 @@ class Telegram
/**
* Current Update object
*
* @var \Longman\TelegramBot\Entities\Update
* @var Update
*/
protected $update;
......@@ -98,7 +98,7 @@ class Telegram
/**
* PDO object
*
* @var \PDO
* @var PDO
*/
protected $pdo;
......@@ -119,7 +119,7 @@ class Telegram
/**
* ServerResponse of the last Command execution
*
* @var \Longman\TelegramBot\Entities\ServerResponse
* @var ServerResponse
*/
protected $last_command_response;
......@@ -151,7 +151,7 @@ class Telegram
* @param string $api_key
* @param string $bot_username
*
* @throws \Longman\TelegramBot\Exception\TelegramException
* @throws TelegramException
*/
public function __construct($api_key, $bot_username = '')
{
......@@ -182,8 +182,8 @@ class Telegram
* @param string $table_prefix
* @param string $encoding
*
* @return \Longman\TelegramBot\Telegram
* @throws \Longman\TelegramBot\Exception\TelegramException
* @return Telegram
* @throws TelegramException
*/
public function enableMySql(array $credential, $table_prefix = null, $encoding = 'utf8mb4')
{
......@@ -200,8 +200,8 @@ class Telegram
* @param PDO $external_pdo_connection PDO database object
* @param string $table_prefix
*
* @return \Longman\TelegramBot\Telegram
* @throws \Longman\TelegramBot\Exception\TelegramException
* @return Telegram
* @throws TelegramException
*/
public function enableExternalMySql($external_pdo_connection, $table_prefix = null)
{
......@@ -216,7 +216,7 @@ class Telegram
* Get commands list
*
* @return array $commands
* @throws \Longman\TelegramBot\Exception\TelegramException
* @throws TelegramException
*/
public function getCommandsList()
{
......@@ -261,7 +261,7 @@ class Telegram
*
* @param string $command
*
* @return \Longman\TelegramBot\Commands\Command|null
* @return Command|null
*/
public function getCommandObject($command)
{
......@@ -284,7 +284,7 @@ class Telegram
*
* @param string $input (json format)
*
* @return \Longman\TelegramBot\Telegram
* @return Telegram
*/
public function setCustomInput($input)
{
......@@ -306,7 +306,7 @@ class Telegram
/**
* Get the ServerResponse of the last Command execution
*
* @return \Longman\TelegramBot\Entities\ServerResponse
* @return ServerResponse
*/
public function getLastCommandResponse()
{
......@@ -319,8 +319,8 @@ class Telegram
* @param int|null $limit
* @param int|null $timeout
*
* @return \Longman\TelegramBot\Entities\ServerResponse
* @throws \Longman\TelegramBot\Exception\TelegramException
* @return ServerResponse
* @throws TelegramException
*/
public function handleGetUpdates($limit = null, $timeout = null)
{
......@@ -344,9 +344,8 @@ class Telegram
if ($custom_input = $this->getCustomInput()) {
$response = new ServerResponse(json_decode($custom_input, true), $this->bot_username);
} else {
if (DB::isDbConnected()) {
if (DB::isDbConnected() && $last_update = DB::selectTelegramUpdate(1)) {
//Get last update id from the database
$last_update = DB::selectTelegramUpdate(1);
$last_update = reset($last_update);
$this->last_update_id = isset($last_update['id']) ? $last_update['id'] : null;
......@@ -394,7 +393,7 @@ class Telegram
*
* @return bool
*
* @throws \Longman\TelegramBot\Exception\TelegramException
* @throws TelegramException
*/
public function handle()
{
......@@ -435,14 +434,14 @@ class Telegram
/**
* Process bot Update request
*
* @param \Longman\TelegramBot\Entities\Update $update
* @param Update $update
*
* @return \Longman\TelegramBot\Entities\ServerResponse
* @throws \Longman\TelegramBot\Exception\TelegramException
* @return ServerResponse
* @throws TelegramException
*/
public function processUpdate(Update $update)
{
$this->update = $update;
$this->update = $update;
$this->last_update_id = $update->getUpdateId();
//Load admin commands
......@@ -493,7 +492,7 @@ class Telegram
* @param string $command
*
* @return mixed
* @throws \Longman\TelegramBot\Exception\TelegramException
* @throws TelegramException
*/
public function executeCommand($command)
{
......@@ -534,7 +533,7 @@ class Telegram
*
* @param integer $admin_id Single admin id
*
* @return \Longman\TelegramBot\Telegram
* @return Telegram
*/
public function enableAdmin($admin_id)
{
......@@ -552,7 +551,7 @@ class Telegram
*
* @param array $admin_ids List of admin ids
*
* @return \Longman\TelegramBot\Telegram
* @return Telegram
*/
public function enableAdmins(array $admin_ids)
{
......@@ -627,7 +626,7 @@ class Telegram
* @param string $path Custom commands path to add
* @param bool $before If the path should be prepended or appended to the list
*
* @return \Longman\TelegramBot\Telegram
* @return Telegram
*/
public function addCommandsPath($path, $before = true)
{
......@@ -650,7 +649,7 @@ class Telegram
* @param array $paths Custom commands paths to add
* @param bool $before If the paths should be prepended or appended to the list
*
* @return \Longman\TelegramBot\Telegram
* @return Telegram
*/
public function addCommandsPaths(array $paths, $before = true)
{
......@@ -676,7 +675,7 @@ class Telegram
*
* @param string $path Custom upload path
*
* @return \Longman\TelegramBot\Telegram
* @return Telegram
*/
public function setUploadPath($path)
{
......@@ -700,7 +699,7 @@ class Telegram
*
* @param string $path Custom download path
*
* @return \Longman\TelegramBot\Telegram
* @return Telegram
*/
public function setDownloadPath($path)
{
......@@ -729,7 +728,7 @@ class Telegram
* @param string $command
* @param array $config
*
* @return \Longman\TelegramBot\Telegram
* @return Telegram
*/
public function setCommandConfig($command, array $config)
{
......@@ -796,8 +795,8 @@ class Telegram
* @param string $url
* @param array $data Optional parameters.
*
* @return \Longman\TelegramBot\Entities\ServerResponse
* @throws \Longman\TelegramBot\Exception\TelegramException
* @return ServerResponse
* @throws TelegramException
*/
public function setWebhook($url, array $data = [])
{
......@@ -832,7 +831,7 @@ class Telegram
* Delete any assigned webhook
*
* @return mixed
* @throws \Longman\TelegramBot\Exception\TelegramException
* @throws TelegramException
*/
public function deleteWebhook()
{
......@@ -874,29 +873,13 @@ class Telegram
. mb_strtolower(mb_substr($str, 1, mb_strlen($str), $encoding), $encoding);
}
/**
* Enable Botan.io integration
*
* @deprecated Botan.io service is no longer working
*
* @param string $token
* @param array $options
*
* @return \Longman\TelegramBot\Telegram
*/
public function enableBotan($token, array $options = [])
{
trigger_error('Longman\TelegramBot\Telegram::enableBotan is deprecated and will be removed in future release.', E_USER_DEPRECATED);
return $this;
}
/**
* Enable requests limiter
*
* @param array $options
* @param array $options
*
* @return \Longman\TelegramBot\Telegram
* @return Telegram
* @throws TelegramException
*/
public function enableLimiter(array $options = [])
{
......@@ -918,7 +901,7 @@ class Telegram
throw new TelegramException('No command(s) provided!');
}
$this->run_commands = true;
$this->run_commands = true;
$result = Request::getMe();
......
......@@ -20,14 +20,14 @@ class TelegramLog
/**
* Monolog instance
*
* @var \Monolog\Logger
* @var Logger
*/
protected static $monolog;
/**
* Monolog instance for update
*
* @var \Monolog\Logger
* @var Logger
*/
protected static $monolog_update;
......@@ -62,9 +62,9 @@ class TelegramLog
/**
* Initialize Monolog Logger instance, optionally passing an existing one
*
* @param \Monolog\Logger
* @param Logger
*
* @return \Monolog\Logger
* @return Logger
*/
public static function initialize(Logger $external_monolog = null)
{
......@@ -93,8 +93,8 @@ class TelegramLog
*
* @param string $path
*
* @return \Monolog\Logger
* @throws \Longman\TelegramBot\Exception\TelegramLogException
* @return Logger
* @throws TelegramLogException
* @throws \InvalidArgumentException
* @throws \Exception
*/
......@@ -117,8 +117,8 @@ class TelegramLog
*
* @param string $path
*
* @return \Monolog\Logger
* @throws \Longman\TelegramBot\Exception\TelegramLogException
* @return Logger
* @throws TelegramLogException
* @throws \InvalidArgumentException
* @throws \Exception
*/
......@@ -147,7 +147,9 @@ class TelegramLog
if (!self::isDebugLogActive()) {
return false;
}
self::$debug_log_temp_stream_handle = fopen('php://temp', 'w+b');
if ($temp_stream_handle = fopen('php://temp', 'wb+')) {
self::$debug_log_temp_stream_handle = $temp_stream_handle;
}
}
return self::$debug_log_temp_stream_handle;
......@@ -173,8 +175,8 @@ class TelegramLog
*
* @param string $path
*
* @return \Monolog\Logger
* @throws \Longman\TelegramBot\Exception\TelegramLogException
* @return Logger
* @throws TelegramLogException
* @throws \InvalidArgumentException
* @throws \Exception
*/
......
......@@ -271,18 +271,6 @@ CREATE TABLE IF NOT EXISTS `conversation` (
FOREIGN KEY (`chat_id`) REFERENCES `chat` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;
CREATE TABLE IF NOT EXISTS `botan_shortener` (
`id` bigint UNSIGNED AUTO_INCREMENT COMMENT 'Unique identifier for this entry',
`user_id` bigint NULL DEFAULT NULL COMMENT 'Unique user identifier',
`url` text NOT NULL COMMENT 'Original URL',
`short_url` CHAR(255) NOT NULL DEFAULT '' COMMENT 'Shortened URL',
`created_at` timestamp NULL DEFAULT NULL COMMENT 'Entry date creation',
PRIMARY KEY (`id`),
FOREIGN KEY (`user_id`) REFERENCES `user` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;
CREATE TABLE IF NOT EXISTS `request_limiter` (
`id` bigint UNSIGNED AUTO_INCREMENT COMMENT 'Unique identifier for this entry',
`chat_id` char(255) NULL DEFAULT NULL COMMENT 'Unique chat identifier',
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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