Code Monkey home page Code Monkey logo

telegram-bot-manager's Introduction

PHP Telegram Bot

PHP Telegram Bot logo

A Telegram Bot based on the official Telegram Bot API

API Version Join the bot support group on Telegram Donate

Tests Code Coverage Code Quality Latest Stable Version Dependencies Total Downloads Downloads Month Minimum PHP Version License

Table of Contents

Introduction

This is a pure PHP Telegram Bot, fully extensible via plugins.

Telegram announced official support for a Bot API, allowing integrators of all sorts to bring automated interactions to the mobile platform. This Bot aims to provide a platform where one can simply write a bot and have interactions in a matter of minutes.

The Bot can:

  • Retrieve updates with webhook and getUpdates methods.
  • Supports all types and methods according to Telegram Bot API 7.1 (February 2024).
  • Supports supergroups.
  • Handle commands in chat with other bots.
  • Manage Channel from the bot admin interface.
  • Full support for inline bots.
  • Inline keyboard.
  • Messages, InlineQuery and ChosenInlineQuery are stored in the Database.
  • Conversation feature.

This code is available on GitHub. Pull requests are welcome.

Instructions

Create your first bot

  1. Message @BotFather with the following text: /newbot

    If you don't know how to message by username, click the search field on your Telegram app and type @BotFather, where you should be able to initiate a conversation. Be careful not to send it to the wrong contact, because some users have similar usernames to BotFather.

    BotFather initial conversation

  2. @BotFather replies with:

    Alright, a new bot. How are we going to call it? Please choose a name for your bot.
    
  3. Type whatever name you want for your bot.

  4. @BotFather replies with:

    Good. Now let's choose a username for your bot. It must end in `bot`. Like this, for example: TetrisBot or tetris_bot.
    
  5. Type whatever username you want for your bot, minimum 5 characters, and must end with bot. For example: telesample_bot

  6. @BotFather replies with:

    Done! Congratulations on your new bot. You will find it at
    telegram.me/telesample_bot. You can now add a description, about
    section and profile picture for your bot, see /help for a list of
    commands.
    
    Use this token to access the HTTP API:
    123456789:AAG90e14-0f8-40183D-18491dDE
    
    For a description of the Bot API, see this page:
    https://core.telegram.org/bots/api
    
  7. Note down the 'token' mentioned above.

Optionally set the bot privacy:

  1. Send /setprivacy to @BotFather.

    BotFather later conversation

  2. @BotFather replies with:

    Choose a bot to change group messages settings.
    
  3. Type (or select) @telesample_bot (change to the username you set at step 5 above, but start it with @)

  4. @BotFather replies with:

    'Enable' - your bot will only receive messages that either start with the '/' symbol or mention the bot by username.
    'Disable' - your bot will receive all messages that people send to groups.
    Current status is: ENABLED
    
  5. Type (or select) Disable to let your bot receive all messages sent to a group.

  6. @BotFather replies with:

    Success! The new status is: DISABLED. /help
    

Require this package with Composer

Install this package through Composer. Edit your project's composer.json file to require longman/telegram-bot.

Create composer.json file

{
    "name": "yourproject/yourproject",
    "type": "project",
    "require": {
        "php": "^8.1",
        "longman/telegram-bot": "*"
    }
}

and run composer update

or

run this command in your command line:

composer require longman/telegram-bot

Choose how to retrieve Telegram updates

The bot can handle updates with Webhook or getUpdates method:

Webhook getUpdates
Description Telegram sends the updates directly to your host You have to fetch Telegram updates manually
Host with https Required Not required
MySQL Not required (Not) Required

Using a custom Bot API server

For advanced users only!

As from Telegram Bot API 5.0, users can run their own Bot API server to handle updates. This means, that the PHP Telegram Bot needs to be configured to serve that custom URI. Additionally, you can define the URI where uploaded files to the bot can be downloaded (note the {API_KEY} placeholder).

Longman\TelegramBot\Request::setCustomBotApiUri(
    $api_base_uri          = 'https://your-bot-api-server', // Default: https://api.telegram.org
    $api_base_download_uri = '/path/to/files/{API_KEY}'     // Default: /file/bot{API_KEY}
);

Note: If you are running your bot in --local mode, you won't need the Request::downloadFile() method, since you can then access your files directly from the absolute path returned by Request::getFile().

Webhook installation

Note: For a more detailed explanation, head over to the example-bot repository and follow the instructions there.

In order to set a Webhook you need a server with HTTPS and composer support. (For a self signed certificate you need to add some extra code)

Create set.php with the following contents:

<?php
// Load composer
require __DIR__ . '/vendor/autoload.php';

$bot_api_key  = 'your:bot_api_key';
$bot_username = 'username_bot';
$hook_url     = 'https://your-domain/path/to/hook.php';

try {
    // Create Telegram API object
    $telegram = new Longman\TelegramBot\Telegram($bot_api_key, $bot_username);

    // Set webhook
    $result = $telegram->setWebhook($hook_url);
    if ($result->isOk()) {
        echo $result->getDescription();
    }
} catch (Longman\TelegramBot\Exception\TelegramException $e) {
    // log telegram errors
    // echo $e->getMessage();
}

Open your set.php via the browser to register the webhook with Telegram. You should see Webhook was set.

Now, create hook.php with the following contents:

<?php
// Load composer
require __DIR__ . '/vendor/autoload.php';

$bot_api_key  = 'your:bot_api_key';
$bot_username = 'username_bot';

try {
    // Create Telegram API object
    $telegram = new Longman\TelegramBot\Telegram($bot_api_key, $bot_username);

    // Handle telegram webhook request
    $telegram->handle();
} catch (Longman\TelegramBot\Exception\TelegramException $e) {
    // Silence is golden!
    // log telegram errors
    // echo $e->getMessage();
}

Self Signed Certificate

Upload the certificate and add the path as a parameter in set.php:

$result = $telegram->setWebhook($hook_url, ['certificate' => '/path/to/certificate']);

Unset Webhook

Edit unset.php with your bot credentials and execute it.

getUpdates installation

For best performance, the MySQL database should be enabled for the getUpdates method!

Create getUpdatesCLI.php with the following contents:

#!/usr/bin/env php
<?php
require __DIR__ . '/vendor/autoload.php';

$bot_api_key  = 'your:bot_api_key';
$bot_username = 'username_bot';

$mysql_credentials = [
   'host'     => 'localhost',
   'port'     => 3306, // optional
   'user'     => 'dbuser',
   'password' => 'dbpass',
   'database' => 'dbname',
];

try {
    // Create Telegram API object
    $telegram = new Longman\TelegramBot\Telegram($bot_api_key, $bot_username);

    // Enable MySQL
    $telegram->enableMySql($mysql_credentials);

    // Handle telegram getUpdates request
    $telegram->handleGetUpdates();
} catch (Longman\TelegramBot\Exception\TelegramException $e) {
    // log telegram errors
    // echo $e->getMessage();
}

Next, give the file permission to execute:

$ chmod +x getUpdatesCLI.php

Lastly, run it!

$ ./getUpdatesCLI.php

getUpdates without database

If you choose to / or are obliged to use the getUpdates method without a database, you can replace the $telegram->enableMySql(...); line above with:

$telegram->useGetUpdatesWithoutDatabase();

Filter Update

โ— Note that by default, Telegram will send any new update types that may be added in the future. This may cause commands that don't take this into account to break!

It is suggested that you specifically define which update types your bot can receive and handle correctly.

You can define which update types are sent to your bot by defining them when setting the webhook or passing an array of allowed types when using getUpdates.

use Longman\TelegramBot\Entities\Update;

// For all update types currently implemented in this library:
// $allowed_updates = Update::getUpdateTypes();

// Define the list of allowed Update types manually:
$allowed_updates = [
    Update::TYPE_MESSAGE,
    Update::TYPE_CHANNEL_POST,
    // etc.
];

// When setting the webhook.
$telegram->setWebhook($hook_url, ['allowed_updates' => $allowed_updates]);

// When handling the getUpdates method.
$telegram->handleGetUpdates(['allowed_updates' => $allowed_updates]);

Alternatively, Update processing can be allowed or denied by defining a custom update filter.

Let's say we only want to allow messages from a user with ID 428, we can do the following before handling the request:

$telegram->setUpdateFilter(function (Update $update, Telegram $telegram, &$reason = 'Update denied by update_filter') {
    $user_id = $update->getMessage()->getFrom()->getId();
    if ($user_id === 428) {
        return true;
    }

    $reason = "Invalid user with ID {$user_id}";
    return false;
});

The reason for denying an update can be defined with the $reason parameter. This text gets written to the debug log.

Support

Types

All types are implemented according to Telegram API 7.1 (February 2024).

Inline Query

Full support for inline query according to Telegram API 7.1 (February 2024).

Methods

All methods are implemented according to Telegram API 7.1 (February 2024).

Send Message

Messages longer than 4096 characters are split up into multiple messages.

$result = Request::sendMessage([
    'chat_id' => $chat_id,
    'text'    => 'Your utf8 text ๐Ÿ˜œ ...',
]);

Send Photo

To send a local photo, add it properly to the $data parameter using the file path:

$result = Request::sendPhoto([
    'chat_id' => $chat_id,
    'photo'   => Request::encodeFile('/path/to/pic.jpg'),
]);

If you know the file_id of a previously uploaded file, just use it directly in the data array:

$result = Request::sendPhoto([
    'chat_id' => $chat_id,
    'photo'   => 'AAQCCBNtIhAoAAss4tLEZ3x6HzqVAAqC',
]);

To send a remote photo, use the direct URL instead:

$result = Request::sendPhoto([
    'chat_id' => $chat_id,
    'photo'   => 'https://example.com/path/to/pic.jpg',
]);

sendAudio, sendDocument, sendAnimation, sendSticker, sendVideo, sendVoice and sendVideoNote all work in the same way, just check the API documentation for the exact usage. See the ImageCommand.php for a full example.

Send Chat Action

Request::sendChatAction([
    'chat_id' => $chat_id,
    'action'  => Longman\TelegramBot\ChatAction::TYPING,
]);

getUserProfilePhoto

Retrieve the user photo. (see WhoamiCommand.php for a full example)

getFile and downloadFile

Get the file path and download it. (see WhoamiCommand.php for a full example)

Send message to all active chats

To do this you have to enable the MySQL connection. Here's an example of use (check DB::selectChats() for parameter usage):

$results = Request::sendToActiveChats(
    'sendMessage', // Callback function to execute (see Request.php methods)
    ['text' => 'Hey! Check out the new features!!'], // Param to evaluate the request
    [
        'groups'      => true,
        'supergroups' => true,
        'channels'    => false,
        'users'       => true,
    ]
);

You can also broadcast a message to users, from the private chat with your bot. Take a look at the admin commands below.

Utils

MySQL storage (Recommended)

If you want to save messages/users/chats for further usage in commands, create a new database (utf8mb4_unicode_520_ci), import structure.sql and enable MySQL support BEFORE handle() method:

$mysql_credentials = [
   'host'     => 'localhost',
   'port'     => 3306, // optional
   'user'     => 'dbuser',
   'password' => 'dbpass',
   'database' => 'dbname',
];

$telegram->enableMySql($mysql_credentials);

You can set a custom prefix to all the tables while you are enabling MySQL:

$telegram->enableMySql($mysql_credentials, $bot_username . '_');

You can also store inline query and chosen inline query data in the database.

External Database connection

It is possible to provide the library with an external MySQL PDO connection. Here's how to configure it:

$telegram->enableExternalMySql($external_pdo_connection);
//$telegram->enableExternalMySql($external_pdo_connection, $table_prefix)

Channels Support

All methods implemented can be used to manage channels. With admin commands you can manage your channels directly with your bot private chat.

Commands

Predefined Commands

The bot is able to recognise commands in a chat with multiple bots (/command@mybot).

It can also execute commands that get triggered by events, so-called Service Messages.

Custom Commands

Maybe you would like to develop your own commands. There is a guide to help you create your own commands.

Also, be sure to have a look at the example commands to learn more about custom commands and how they work.

You can add your custom commands in different ways:

// Add a folder that contains command files
$telegram->addCommandsPath('/path/to/command/files');
//$telegram->addCommandsPaths(['/path/to/command/files', '/another/path']);

// Add a command directly using the class name
$telegram->addCommandClass(MyCommand::class);
//$telegram->addCommandClasses([MyCommand::class, MyOtherCommand::class]);

Commands Configuration

With this method you can set some command specific parameters, for example:

// Google geocode/timezone API key for /date command
$telegram->setCommandConfig('date', [
    'google_api_key' => 'your_google_api_key_here',
]);

// OpenWeatherMap API key for /weather command
$telegram->setCommandConfig('weather', [
    'owm_api_key' => 'your_owm_api_key_here',
]);

Admin Commands

Enabling this feature, the bot admin can perform some super user commands like:

  • List all the chats started with the bot /chats
  • Clean up old database entries /cleanup
  • Show debug information about the bot /debug
  • Send message to all chats /sendtoall
  • Post any content to your channels /sendtochannel
  • Inspect a user or a chat with /whois

Take a look at all default admin commands stored in the src/Commands/AdminCommands/ folder.

Set Admins

You can specify one or more admins with this option:

// Single admin
$telegram->enableAdmin(your_telegram_user_id);

// Multiple admins
$telegram->enableAdmins([
    your_telegram_user_id,
    other_telegram_user_id,
]);

Telegram user id can be retrieved with the /whoami command.

Channel Administration

To enable this feature follow these steps:

  • Add your bot as channel administrator, this can be done with any Telegram client.
  • Enable admin interface for your user as explained in the admin section above.
  • Enter your channel name as a parameter for the /sendtochannel command:
$telegram->setCommandConfig('sendtochannel', [
    'your_channel' => [
        '@type_here_your_channel',
    ]
]);
  • If you want to manage more channels:
$telegram->setCommandConfig('sendtochannel', [
    'your_channel' => [
        '@type_here_your_channel',
        '@type_here_another_channel',
        '@and_so_on',
    ]
]);
  • Enjoy!

Upload and Download directory path

To use the Upload and Download functionality, you need to set the paths with:

$telegram->setDownloadPath('/your/path/Download');
$telegram->setUploadPath('/your/path/Upload');

Documentation

Take a look at the repo Wiki for further information and tutorials! Feel free to improve!

Assets

All project assets can be found in the assets repository.

Example bot

We're busy working on a full A-Z example bot, to help get you started with this library and to show you how to use all its features. You can check the progress of the example-bot repository).

Projects with this library

Here's a list of projects that feats this library, feel free to add yours!

Troubleshooting

If you like living on the edge, please report any bugs you find on the PHP Telegram Bot issues page.

Contributing

See CONTRIBUTING for more information.

Security

See SECURITY for more information.

Donate

All work on this bot consists of many hours of coding during our free time, to provide you with a Telegram Bot library that is easy to use and extend. If you enjoy using this library and would like to say thank you, donations are a great way to show your support.

Donations are invested back into the project ๐Ÿ‘

Thank you for keeping this project alive ๐Ÿ™

For enterprise

Available as part of the Tidelift Subscription.

The maintainers of PHP Telegram Bot and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. Learn more.

License

Please see the LICENSE included in this repository for a full copy of the MIT license, which this project is licensed under.

Credits

Credit list in CREDITS


telegram-bot-manager's People

Contributors

damianperez avatar hitmare avatar massadm avatar nasserghiasi avatar noplanman avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

telegram-bot-manager's Issues

Composer error when installing the package

Bug Report

When I run composer require php-telegram-bot/telegram-bot-manager:^1.6 -W it returns this message:

Your requirements could not be resolved to an installable set of packages.

Problem 1
- php-telegram-bot/telegram-bot-manager 1.6.0 requires longman/telegram-bot ^0.70 -> found longman/telegram-bot[0.70.0, 0.70.1] but it conflicts with your root composer.json require (^0.77.1).
- php-telegram-bot/telegram-bot-manager 1.7.0 requires longman/telegram-bot ^0.73 -> found longman/telegram-bot[0.73.0, 0.73.1] but it conflicts with your root composer.json require (^0.77.1).
- Root composer.json requires php-telegram-bot/telegram-bot-manager ^1.6 -> satisfiable by php-telegram-bot/telegram-bot-manager[1.6.0, 1.7.0].

I'm using Laravel 8 and PHP 8.0

bot manager respond: invalid Access

Support Question

Required Information

? !
Operating system Name and version
PHP Telegram Bot Manager version 1.5.0
PHP Telegram Bot version 0.62
PHP version 7,2
MySQL version 10,2
Update Method Webhook
Self-signed certificate no
RAW update (if available) {...}

Summary

HI, after many day's of try i dediced to ask for help.
I'm trying to create a bot for telegram,
i'm using hostinger cloud global service, and i connected via SSH to my linux space (i thing hostinger is linux)
My first test was with set.php, unset.php and it work perfectly. But i decided to use manager.php so i can set password (secret) to protect set, unset and reset.

If i try use manager.php from ssh i can do set, unset, reset, webhookinfo without any problem.
so the command:
php manager.php a=reset / set / unset / WebHookInfo The Work without any problem
If i try from browser i get always invalid access.
https://mybotlink/manager.php?s=123456789?a=set/unset/reset/WebHookInfo return always invalid access

I spend a lot of time (3 full days) without found a solution.
Someone could help me to solve this problem ?

After my name the content of composer.json and manager.php
under //Bot Setting and // MySql Setting all parameter are not real, made only for this support help
I hope this is enough to discover where is my error.
Thank's a lot for help
Alex

<- This is content of composer.json: -------------------------------------->

{
    "name": "telegram-bot/example-bot",
    "type": "project",
    "description": "PHP Telegram Bot Example",
    "keywords": ["telegram", "bot", "example"],
    "license": "MIT",
    "homepage": "https://github.com/php-telegram-bot/example-bot",
    "support": {
        "issues": "https://github.com/php-telegram-bot/example-bot/issues",
        "source": "https://github.com/php-telegram-bot/example-bot"
    },
    "authors": [
        {
            "name": "PHP Telegram Bot Team",
            "homepage": "https://github.com/php-telegram-bot/example-bot/graphs/contributors",
            "role": "Developer"
        }
    ],
    "require": {
        "php-telegram-bot/telegram-bot-manager": "*",
        "longman/telegram-bot": "*"
    }
}

<- This is content of manager.php: -------------------------------------->

<?php
/**
 * README
 * This configuration file is intended to be used as the main script for the PHP Telegram Bot Manager.
 * Uncommented parameters must be filled
 *
 * For the full list of options, go to:
 * https://github.com/php-telegram-bot/telegram-bot-manager#set-extra-bot-parameters
 */

// By Alex to show \n
header('Content-type: text/plain');

// use TelegramBot\TelegramBotManager\BotManager;

// Bot Settings
$bot_api_key      = 'my api info';
$bot_username     = 'my channel info';
$bot_webhook_url  = 'https://mybotlink/manager.php';
$bot_secret       = '1234567890';
// MySql Settings
$mysql_host       = '127.0.0.1';
$mysql_port       = 3306;
$mysql_database   = 'my db name';
$mysql_user       = 'my db user';
$mysql_password   = 'my db password';

// Load composer.
require_once __DIR__ . '/vendor/autoload.php';

// Get ip info request to show if ip is correct
// $ip = $_SERVER['REMOTE_ADDR'] ?? '0.0.0.0';
// echo 'indirizzo ip : ' . $ip . PHP_EOL;

try {
    $bot = new TelegramBot\TelegramBotManager\BotManager([
        // Add you bot's API key and name
        'api_key'      => $bot_api_key,
        'bot_username' => $bot_username,

        // Secret key required to access the webhook
        'secret'       => $bot_secret,

        'webhook'      => [
              // When using webhook, this needs to be uncommented and defined
              'url' => $bot_webhook_url,
              // Use self-signed certificate
              // 'certificate' => __DIR__ . '/server.crt',
              // Limit maximum number of connections
              'max_connections' => 5,
              // (array) List the types of updates you want your bot to receive.
              'allowed_updates' => ['message', 'edited_channel_post', 'callback_query'],
          ],

          // (bool) Only allow webhook access from valid Telegram API IPs.
          'validate_request' => true,
          // (array) When using `validate_request`, also allow these IPs.
          'valid_ips'        => [
              'my public ip',       // single
              // '192.168.1.0/24',  // CIDR
              // '10/8',            // CIDR (short)
              // '5.6.*',           // wildcard
              // '1.1.1.1-2.2.2.2', // range
          ],

          // (array) An array of user ids that have admin access to your bot (must be integers).
          'admins'           => [12345],

          // (array) All options that have to do with commands.
          'commands'         => [
              // (array) A list of custom commands paths.
              'paths'   => [
                      __DIR__ . '/Commands',
                  ],
              ],

          // (array) List of configurable paths.
          'paths'            => [
              // (string) Custom download path.
              'download' => __DIR__ . '/Download',
              // (string) Custom upload path.
              'upload'   => __DIR__ . '/Upload',
          ],

          // (array) Paths where the log files should be put.
          'logging'          => [
              // (string) Log file for all incoming update requests.
              'update' => __DIR__ . '/LOG/Bot-update.log',
              // (string) Log file for debug purposes.
              'debug'  => __DIR__ . '/LOG/Bot-debug.log',
              // (string) Log file for all errors.
              'error'  => __DIR__ . '/LOG/Bot-error.log',
          ],

          // (array) Mysql credentials to connect a database (necessary for [`getUpdates`](#using-getupdates-method) method!).
          'mysql'            => [
              'host'         => $mysql_host,
              'port'         => $mysql_port,
              'user'         => $mysql_user,
              'password'     => $mysql_password ,
              'database'     => $mysql_database,
              // 'table_prefix' => 'tbl_prfx_',    // optional
              // 'encoding'     => 'utf8mb4',      // optional
          ],

          // (array) All options that have to do with cron.
          'cron'             => [
              // (array) List of groups that contain the commands to execute.
              'groups' => [
                  // Each group has a name and array of commands.
                  // When no group is defined, the default group gets executed.
                  'default'     => [
                      '/default_cron_command',
                  ],
                  'maintenance' => [
                      '/db_cleanup',
                      '/db_repair',
                      '/log_rotate',
                      '/message_admins Maintenance completed',
                  ],
              ],
          ],


          // (array) All options that have to do with the limiter.
          'limiter'     => [
              // (bool) Enable or disable the limiter functionality.
              'enabled' => true,
              // (array) Any extra options to pass to the limiter.
              'options' => [
                  // (float) Interval between request handles.
                  'interval' => 0.5,
              ],
          ],

        // (string) Override the custom input of your bot (mostly for testing purposes!).
        //'custom_input'     => '{"some":"raw", "json":"update"}',

    ]);

    $bot->run();

    $bot->setCustomGetUpdatesCallback(function (ServerResponse $get_updates_response) {
        $results = array_filter((array) $get_updates_response->getResult());

        return sprintf('There are %d update(s)' . PHP_EOL, count($results));
    });
}

catch (Longman\TelegramBot\Exception\TelegramException $e) {
    // Silence is golden!
    echo 'Telegram Excedption : ' . $e . PHP_EOL;
    // Log telegram errors
    Longman\TelegramBot\TelegramLog::error($e);
}
catch (Longman\TelegramBot\Exception\TelegramLogException $e) {
    // Silence is golden!
    // Uncomment this to catch log initialisation errors
    echo 'Telegram Log Excedption : ' . $e . PHP_EOL;
}
catch (\Exception $e) {
    echo 'exception : ' . $e->getMessage() . PHP_EOL;
}

Error in BotManager.php line 65 unexpected '?'

Hi there,

i'm trying to user ure php telegram bot and i got this error code in my apache log file:

[Thu Feb 08 13:39:39.778757 2018] [:error] [pid 31072] [client 149.154.167.229:42151] PHP Parse error: syntax error, unexpected '?' in /vendor/php-telegram-bot/telegram-bot-manager/src/BotManager.php on line 65

I am using this PHP 7.0.27-0+deb9u1

This is the function what my apache/php is curious about (marked it with double **):

public function __construct(array $params)
{
    // Initialise logging before anything else, to allow errors to be logged.
    **$this->initLogging($params['logging'] ?? []);**

    $this->params = new Params($params);
    $this->action = new Action($this->params->getScriptParam('a'));

    // Set up a new Telegram instance.
    $this->telegram = new Telegram(
        $this->params->getBotParam('api_key'),
        $this->params->getBotParam('bot_username')
    );
} 

What can i do to avoid this error?

Thanks for your help in advance!

add extra parameters in hook Url

Feature Request

add extra parameters in hook Url

Summary

You can't manage extra parameters in webhook beacouse the '?'.
$this->handleOutput(
$this->telegram->setWebhook(
$webhook['url'] . '?a=handle&s=' . $this->params->getBotParam('secret'),
$webhook_params
)->getDescription() . PHP_EOL
);

May be good that if webhook url has a parameter, then add a '&'
to do this:
manager.php?Myparam=123&a=handle&s=supersecret

Cannot disable MySQL dependency when using BotManager

Support Question

Using the instructions to disable MySQL dependency in manager.php via $bot->useGetUpdatesWithoutDatabase() is not working. This seems to be a setter method only working with the Longman PHP Telegram Bot Class. But such is initiated only when using Webhooks (e.g. in hooks.php).

How can I disable the MySQL dependency when using the Bot Manager / manager.php?

Required Information

PHP 7.4
Telegram Bot Manager 1.7

Summary

From the Telegram PHP Bot/core documentation:

getUpdates without database

If you choose to / or are obliged to use the getUpdates method without a database, you can replace the $telegram->useMySQL(...); line above with:

$telegram->useGetUpdatesWithoutDatabase();

Hello, may I ask why I set up the bot according to the demo, but I can't receive the channel news. Private chats and groups are normal

<?php

use TelegramBot\TelegramBotManager\BotManager;

// Load composer.
require_once __DIR__ . '/../vendor/autoload.php';

try {

    $bot = new BotManager([
        // Vitals!
        'api_key'      => '',

        // Extras.
        'bot_username' => '',
        'secret'       => '',
        'webhook'      => [
            'url' => '',
            // (string) Path to a self-signed certificate (if necessary).
            //'certificate'     => __DIR__ . '/server.crt',
            // (int) Maximum allowed simultaneous HTTPS connections to the webhook.
            'max_connections' => 20,
            // (array) List the types of updates you want your bot to receive.
            'allowed_updates' => ['message', 'edited_channel_post', 'callback_query'],
        ],
        // (bool) Only allow webhook access from valid Telegram API IPs.
        'validate_request' => true,
        // (array) When using `validate_request`, also allow these IPs.
        'valid_ips'        => [
            '1.2.3.4',         // single
            '192.168.1.0/24',  // CIDR
            '10/8',            // CIDR (short)
            '5.6.*',           // wildcard
            '1.1.1.1-2.2.2.2', // range
        ],
        // (array) All options that have to do with the limiter.
        'limiter'          => [
            // (bool) Enable or disable the limiter functionality.
            'enabled' => true,
            // (array) Any extra options to pass to the limiter.
            'options' => [
                // (float) Interval between request handles.
                'interval' => 0.5,
            ],
        ],

        // (array) An array of user ids that have admin access to your bot (must be integers).
        'admins'            => [
            
        ],

        // (array) Mysql credentials to connect a database (necessary for [`getUpdates`](#using-getupdates-method) method!).
        'mysql'            => [
            'host'         => '127.0.0.1',
            'port'         => 3306,           // optional
            'user'         => 'root',
            'password'     => 'root',
            'database'     => 'telegram_bot',
            'table_prefix' => 'tbl_prfx_',    // optional
            'encoding'     => 'utf8mb4',      // optional
        ],

        // (array) List of configurable paths.
        'paths'            => [
            // (string) Custom download path.
            'download' => __DIR__ . '/BotDownload',
            // (string) Custom upload path.
            'upload'   => __DIR__ . '/BotUpload',
        ],

        // (array) All options that have to do with commands.
        'commands'         => [
            // (array) A list of custom commands paths.
            'paths'   => [
                __DIR__ . '/../Commands',
            ],
            // (array) A list of all custom command configs.
            'configs' => [
                'sendtochannel' => ['your_channel' => '@'],
                //'weather'       => ['owm_api_key' => 'owm_api_key_12345'],
            ],
        ],

        // (array) All options that have to do with cron.
        /*'cron'             => [
            // (array) List of groups that contain the commands to execute.
            'groups' => [
                // Each group has a name and array of commands.
                // When no group is defined, the default group gets executed.
                'default'     => [
                    '/default_cron_command',
                ],
                'maintenance' => [
                    '/db_cleanup',
                    '/db_repair',
                    '/message_admins Maintenance completed',
                ],
            ],
        ],*/

        // (string) Override the custom input of your bot (mostly for testing purposes!).
        //'custom_input'     => '{"some":"raw", "json":"update"}',
    ]);
    $bot->run();
} catch (\Exception $e) {
    echo $e->getMessage() . PHP_EOL;
}

Cron

Add ability to execute commands via cron.

@jacklul As I was implementing this, I thought I'd better open a discussion first ๐Ÿ˜Š

What do you think of this:

  • Add a new action called cron (php manager.php a=cron)
  • Add a new parameter called cron_commands

The parameter would be an array of commands, just like it's implemented in core now. So this would literally call $telegram->runCommands($cron_commands);

Do you see any other uses for cron at this moment?
Shall I opt for an array like this instead, to offer flexibility?

$params = [
    'cron' => [
        'commands' => [...],
    ],
];

Restrictive bot access

(From php-telegram-bot/core#527)

Would be cool to implement this as an ultimate firewall, before the bot code is even touched.
Although, it could also be cool to have it just after initialisation, so that rules could be configured via commands.

Hmmm.... ๐Ÿค”

@jacklul Ideas very welcome as always!

How to setup this package in Laravel ?

I want to use this package and telegram bot on my laravel project. So how to setup the package so both the telegram bot and laravel project works well ?

? !
Operating system Name and version
PHP Telegram Bot Manager version 1.7
PHP Telegram Bot version 0.73.1
PHP version 8.1.7
MySQL version 5.3
Update Method Webhook
Self-signed certificate no
RAW update (if available) {...}
Laravel version 9.11

Summary

PHP version 8.0.0 not supported

Bug Report

Required Information

? !
Operating system Android 10 (Using termux)
PHP Telegram Bot Manager version 1.5.0
PHP Telegram Bot version 0.64.0
PHP version 8.0.0
MySQL version none
Update Method none
Self-signed certificate none
RAW update (if available) {...}

Summary

Could not update the Telegram Bot Manager because it was expecting php version 7.1 instead of 8.0.0 (the newer version)

Current behaviour

This error occured when $composer update is executed.

Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - php-telegram-bot/telegram-bot-manager[1.4.0, ..., 1.5.0] require php ^7.1 -> your php version (8.0.0) does not satisfy that requirement.
    - Root composer.json requires php-telegram-bot/telegram-bot-manager ^1.4 -> satisfiable by php-telegram-bot/telegram-bot-manager[1.4.0, 1.5.0].

How to reproduce

  1. Run $composer update
  2. Error occured.

Expected behaviour

PHP version 8.0.0 was expected to satisfy the requirement.

PHP Fatal error:

PHP 5.6.39-0+deb8u1 (cli) (built: Dec 16 2018 21:56:53)

MIB search path: /root/.snmp/mibs:/usr/share/snmp/mibs:/usr/share/snmp/mibs/iana:/usr/share/snmp/mibs/ietf:/usr/share/mibs/site:/usr/share/snmp/mibs:/usr/share/mibs/iana:/usr/share/mibs/ietf:/usr/share/mibs/netsnmp Cannot find module (SNMPv2-TC): At line 10 in /usr/share/snmp/mibs/UCD-DLMOD-MIB.txt Cannot find module (SNMPv2-SMI): At line 34 in /usr/share/snmp/mibs/UCD-SNMP-MIB.txt Cannot find module (SNMPv2-TC): At line 37 in /usr/share/snmp/mibs/UCD-SNMP-MIB.txt Did not find 'enterprises' in module #-1 (/usr/share/snmp/mibs/UCD-SNMP-MIB.txt) Did not find 'DisplayString' in module #-1 (/usr/share/snmp/mibs/UCD-SNMP-MIB.txt) Did not find 'TruthValue' in module #-1 (/usr/share/snmp/mibs/UCD-SNMP-MIB.txt) Unlinked OID in UCD-SNMP-MIB: ucdavis ::= { enterprises 2021 } Undefined identifier: enterprises near line 39 of /usr/share/snmp/mibs/UCD-SNMP-MIB.txt Did not find 'DisplayString' in module #-1 (/usr/share/snmp/mibs/UCD-DLMOD-MIB.txt) Did not find 'ucdExperimental' in module UCD-SNMP-MIB (/usr/share/snmp/mibs/UCD-DLMOD-MIB.txt) Unlinked OID in UCD-DLMOD-MIB: ucdDlmodMIB ::= { ucdExperimental 14 } Undefined identifier: ucdExperimental near line 13 of /usr/share/snmp/mibs/UCD-DLMOD-MIB.txt Cannot find module (MTA-MIB): At line 0 in (none) Cannot find module (NETWORK-SERVICES-MIB): At line 0 in (none) Cannot find module (SNMPv2-TC): At line 15 in /usr/share/snmp/mibs/UCD-DISKIO-MIB.txt Did not find 'DisplayString' in module #-1 (/usr/share/snmp/mibs/UCD-DISKIO-MIB.txt) Did not find 'ucdExperimental' in module UCD-SNMP-MIB (/usr/share/snmp/mibs/UCD-DISKIO-MIB.txt) Unlinked OID in UCD-DISKIO-MIB: ucdDiskIOMIB ::= { ucdExperimental 15 } Undefined identifier: ucdExperimental near line 19 of /usr/share/snmp/mibs/UCD-DISKIO-MIB.txt Cannot find module (SNMPv2-TC): At line 15 in /usr/share/snmp/mibs/LM-SENSORS-MIB.txt Did not find 'DisplayString' in module #-1 (/usr/share/snmp/mibs/LM-SENSORS-MIB.txt) Did not find 'ucdExperimental' in module UCD-SNMP-MIB (/usr/share/snmp/mibs/LM-SENSORS-MIB.txt) Unlinked OID in LM-SENSORS-MIB: lmSensors ::= { ucdExperimental 16 } Undefined identifier: ucdExperimental near line 32 of /usr/share/snmp/mibs/LM-SENSORS-MIB.txt Cannot find module (HOST-RESOURCES-MIB): At line 0 in (none) Cannot find module (HOST-RESOURCES-TYPES): At line 0 in (none) Cannot find module (SNMPv2-MIB): At line 0 in (none) Cannot find module (IF-MIB): At line 0 in (none) Cannot find module (IP-MIB): At line 0 in (none) Cannot find module (TCP-MIB): At line 0 in (none) Cannot find module (UDP-MIB): At line 0 in (none) Cannot find module (NOTIFICATION-LOG-MIB): At line 0 in (none) Cannot find module (DISMAN-EVENT-MIB): At line 0 in (none) Cannot find module (DISMAN-SCHEDULE-MIB): At line 0 in (none) Did not find 'ucdavis' in module UCD-SNMP-MIB (/usr/share/snmp/mibs/UCD-DEMO-MIB.txt) Unlinked OID in UCD-DEMO-MIB: ucdDemoMIB ::= { ucdavis 14 } Undefined identifier: ucdavis near line 7 of /usr/share/snmp/mibs/UCD-DEMO-MIB.txt Cannot find module (SNMP-TARGET-MIB): At line 0 in (none) Cannot find module (SNMP-FRAMEWORK-MIB): At line 9 in /usr/share/snmp/mibs/NET-SNMP-AGENT-MIB.txt Cannot find module (SNMPv2-SMI): At line 8 in /usr/share/snmp/mibs/NET-SNMP-MIB.txt Did not find 'enterprises' in module #-1 (/usr/share/snmp/mibs/NET-SNMP-MIB.txt) Unlinked OID in NET-SNMP-MIB: netSnmp ::= { enterprises 8072 } Undefined identifier: enterprises near line 10 of /usr/share/snmp/mibs/NET-SNMP-MIB.txt Cannot find module (SNMPv2-TC): At line 21 in /usr/share/snmp/mibs/NET-SNMP-AGENT-MIB.txt Did not find 'SnmpAdminString' in module #-1 (/usr/share/snmp/mibs/NET-SNMP-AGENT-MIB.txt) Did not find 'netSnmpObjects' in module NET-SNMP-MIB (/usr/share/snmp/mibs/NET-SNMP-AGENT-MIB.txt) Did not find 'netSnmpModuleIDs' in module NET-SNMP-MIB (/usr/share/snmp/mibs/NET-SNMP-AGENT-MIB.txt) Did not find 'netSnmpNotifications' in module NET-SNMP-MIB (/usr/share/snmp/mibs/NET-SNMP-AGENT-MIB.txt) Did not find 'netSnmpGroups' in module NET-SNMP-MIB (/usr/share/snmp/mibs/NET-SNMP-AGENT-MIB.txt) Did not find 'DisplayString' in module #-1 (/usr/share/snmp/mibs/NET-SNMP-AGENT-MIB.txt) Did not find 'RowStatus' in module #-1 (/usr/share/snmp/mibs/NET-SNMP-AGENT-MIB.txt) Did not find 'TruthValue' in module #-1 (/usr/share/snmp/mibs/NET-SNMP-AGENT-MIB.txt) Unlinked OID in NET-SNMP-AGENT-MIB: nsAgentNotifyGroup ::= { netSnmpGroups 9 } Undefined identifier: netSnmpGroups near line 545 of /usr/share/snmp/mibs/NET-SNMP-AGENT-MIB.txt Unlinked OID in NET-SNMP-AGENT-MIB: nsTransactionGroup ::= { netSnmpGroups 8 } Undefined identifier: netSnmpGroups near line 536 of /usr/share/snmp/mibs/NET-SNMP-AGENT-MIB.txt Unlinked OID in NET-SNMP-AGENT-MIB: nsConfigGroups ::= { netSnmpGroups 7 } Undefined identifier: netSnmpGroups near line 515 of /usr/share/snmp/mibs/NET-SNMP-AGENT-MIB.txt Unlinked OID in NET-SNMP-AGENT-MIB: nsCacheGroup ::= { netSnmpGroups 4 } Undefined identifier: netSnmpGroups near line 505 of /usr/share/snmp/mibs/NET-SNMP-AGENT-MIB.txt Unlinked OID in NET-SNMP-AGENT-MIB: nsModuleGroup ::= { netSnmpGroups 2 } Undefined identifier: netSnmpGroups near line 495 of /usr/share/snmp/mibs/NET-SNMP-AGENT-MIB.txt Unlinked OID in NET-SNMP-AGENT-MIB: netSnmpAgentMIB ::= { netSnmpModuleIDs 2 } Undefined identifier: netSnmpModuleIDs near line 24 of /usr/share/snmp/mibs/NET-SNMP-AGENT-MIB.txt Unlinked OID in NET-SNMP-AGENT-MIB: nsTransactions ::= { netSnmpObjects 8 } Undefined identifier: netSnmpObjects near line 55 of /usr/share/snmp/mibs/NET-SNMP-AGENT-MIB.txt Unlinked OID in NET-SNMP-AGENT-MIB: nsConfiguration ::= { netSnmpObjects 7 } Undefined identifier: netSnmpObjects near line 54 of /usr/share/snmp/mibs/NET-SNMP-AGENT-MIB.txt Unlinked OID in NET-SNMP-AGENT-MIB: nsErrorHistory ::= { netSnmpObjects 6 } Undefined identifier: netSnmpObjects near line 53 of /usr/share/snmp/mibs/NET-SNMP-AGENT-MIB.txt Unlinked OID in NET-SNMP-AGENT-MIB: nsCache ::= { netSnmpObjects 5 } Undefined identifier: netSnmpObjects near line 52 of /usr/share/snmp/mibs/NET-SNMP-AGENT-MIB.txt Unlinked OID in NET-SNMP-AGENT-MIB: nsDLMod ::= { netSnmpObjects 4 } Undefined identifier: netSnmpObjects near line 51 of /usr/share/snmp/mibs/NET-SNMP-AGENT-MIB.txt Unlinked OID in NET-SNMP-AGENT-MIB: nsExtensions ::= { netSnmpObjects 3 } Undefined identifier: netSnmpObjects near line 50 of /usr/share/snmp/mibs/NET-SNMP-AGENT-MIB.txt Unlinked OID in NET-SNMP-AGENT-MIB: nsMibRegistry ::= { netSnmpObjects 2 } Undefined identifier: netSnmpObjects near line 49 of /usr/share/snmp/mibs/NET-SNMP-AGENT-MIB.txt Unlinked OID in NET-SNMP-AGENT-MIB: nsVersion ::= { netSnmpObjects 1 } Undefined identifier: netSnmpObjects near line 48 of /usr/share/snmp/mibs/NET-SNMP-AGENT-MIB.txt Unlinked OID in NET-SNMP-AGENT-MIB: nsNotifyRestart ::= { netSnmpNotifications 3 } Undefined identifier: netSnmpNotifications near line 482 of /usr/share/snmp/mibs/NET-SNMP-AGENT-MIB.txt Unlinked OID in NET-SNMP-AGENT-MIB: nsNotifyShutdown ::= { netSnmpNotifications 2 } Undefined identifier: netSnmpNotifications near line 476 of /usr/share/snmp/mibs/NET-SNMP-AGENT-MIB.txt Unlinked OID in NET-SNMP-AGENT-MIB: nsNotifyStart ::= { netSnmpNotifications 1 } Undefined identifier: netSnmpNotifications near line 470 of /usr/share/snmp/mibs/NET-SNMP-AGENT-MIB.txt Cannot find module (SNMP-MPD-MIB): At line 0 in (none) Cannot find module (SNMP-USER-BASED-SM-MIB): At line 0 in (none) Cannot find module (SNMP-FRAMEWORK-MIB): At line 0 in (none) Cannot find module (SNMP-VIEW-BASED-ACM-MIB): At line 0 in (none) Cannot find module (SNMP-COMMUNITY-MIB): At line 0 in (none) Cannot find module (IPV6-ICMP-MIB): At line 0 in (none) Cannot find module (IPV6-MIB): At line 0 in (none) Cannot find module (IPV6-TCP-MIB): At line 0 in (none) Cannot find module (IPV6-UDP-MIB): At line 0 in (none) Cannot find module (IP-FORWARD-MIB): At line 0 in (none) Cannot find module (SNMP-FRAMEWORK-MIB): At line 10 in /usr/share/snmp/mibs/NET-SNMP-PASS-MIB.txt Cannot find module (SNMP-FRAMEWORK-MIB): At line 10 in /usr/share/snmp/mibs/NET-SNMP-EXAMPLES-MIB.txt Cannot find module (SNMPv2-TC): At line 12 in /usr/share/snmp/mibs/NET-SNMP-EXAMPLES-MIB.txt Cannot find module (INET-ADDRESS-MIB): At line 13 in /usr/share/snmp/mibs/NET-SNMP-EXAMPLES-MIB.txt Did not find 'SnmpAdminString' in module #-1 (/usr/share/snmp/mibs/NET-SNMP-EXAMPLES-MIB.txt) Did not find 'netSnmp' in module NET-SNMP-MIB (/usr/share/snmp/mibs/NET-SNMP-EXAMPLES-MIB.txt) Did not find 'RowStatus' in module #-1 (/usr/share/snmp/mibs/NET-SNMP-EXAMPLES-MIB.txt) Did not find 'StorageType' in module #-1 (/usr/share/snmp/mibs/NET-SNMP-EXAMPLES-MIB.txt) Did not find 'InetAddressType' in module #-1 (/usr/share/snmp/mibs/NET-SNMP-EXAMPLES-MIB.txt) Did not find 'InetAddress' in module #-1 (/usr/share/snmp/mibs/NET-SNMP-EXAMPLES-MIB.txt) Unlinked OID in NET-SNMP-EXAMPLES-MIB: netSnmpExamples ::= { netSnmp 2 } Undefined identifier: netSnmp near line 16 of /usr/share/snmp/mibs/NET-SNMP-EXAMPLES-MIB.txt Did not find 'SnmpAdminString' in module #-1 (/usr/share/snmp/mibs/NET-SNMP-PASS-MIB.txt) Did not find 'netSnmpExamples' in module NET-SNMP-EXAMPLES-MIB (/usr/share/snmp/mibs/NET-SNMP-PASS-MIB.txt) Unlinked OID in NET-SNMP-PASS-MIB: netSnmpPassExamples ::= { netSnmpExamples 255 } Undefined identifier: netSnmpExamples near line 14 of /usr/share/snmp/mibs/NET-SNMP-PASS-MIB.txt Cannot find module (SNMPv2-TC): At line 16 in /usr/share/snmp/mibs/NET-SNMP-EXTEND-MIB.txt Did not find 'nsExtensions' in module NET-SNMP-AGENT-MIB (/usr/share/snmp/mibs/NET-SNMP-EXTEND-MIB.txt) Did not find 'DisplayString' in module #-1 (/usr/share/snmp/mibs/NET-SNMP-EXTEND-MIB.txt) Did not find 'RowStatus' in module #-1 (/usr/share/snmp/mibs/NET-SNMP-EXTEND-MIB.txt) Did not find 'StorageType' in module #-1 (/usr/share/snmp/mibs/NET-SNMP-EXTEND-MIB.txt) Unlinked OID in NET-SNMP-EXTEND-MIB: nsExtendGroups ::= { nsExtensions 3 } Undefined identifier: nsExtensions near line 39 of /usr/share/snmp/mibs/NET-SNMP-EXTEND-MIB.txt Unlinked OID in NET-SNMP-EXTEND-MIB: nsExtendObjects ::= { nsExtensions 2 } Undefined identifier: nsExtensions near line 38 of /usr/share/snmp/mibs/NET-SNMP-EXTEND-MIB.txt Unlinked OID in NET-SNMP-EXTEND-MIB: netSnmpExtendMIB ::= { nsExtensions 1 } Undefined identifier: nsExtensions near line 19 of /usr/share/snmp/mibs/NET-SNMP-EXTEND-MIB.txt Cannot find module (SNMP-NOTIFICATION-MIB): At line 0 in (none) Cannot find module (SNMPv2-TM): At line 0 in (none) Cannot find module (SNMP-FRAMEWORK-MIB): At line 9 in /usr/share/snmp/mibs/NET-SNMP-VACM-MIB.txt Cannot find module (SNMP-VIEW-BASED-ACM-MIB): At line 16 in /usr/share/snmp/mibs/NET-SNMP-VACM-MIB.txt Cannot find module (SNMPv2-TC): At line 25 in /usr/share/snmp/mibs/NET-SNMP-VACM-MIB.txt Did not find 'SnmpAdminString' in module #-1 (/usr/share/snmp/mibs/NET-SNMP-VACM-MIB.txt) Did not find 'netSnmpObjects' in module NET-SNMP-MIB (/usr/share/snmp/mibs/NET-SNMP-VACM-MIB.txt) Did not find 'netSnmpGroups' in module NET-SNMP-MIB (/usr/share/snmp/mibs/NET-SNMP-VACM-MIB.txt) Did not find 'vacmGroupName' in module #-1 (/usr/share/snmp/mibs/NET-SNMP-VACM-MIB.txt) Did not find 'vacmAccessContextPrefix' in module #-1 (/usr/share/snmp/mibs/NET-SNMP-VACM-MIB.txt) Did not find 'vacmAccessSecurityModel' in module #-1 (/usr/share/snmp/mibs/NET-SNMP-VACM-MIB.txt) Did not find 'vacmAccessSecurityLevel' in module #-1 (/usr/share/snmp/mibs/NET-SNMP-VACM-MIB.txt) Did not find 'DisplayString' in module #-1 (/usr/share/snmp/mibs/NET-SNMP-VACM-MIB.txt) Did not find 'RowStatus' in module #-1 (/usr/share/snmp/mibs/NET-SNMP-VACM-MIB.txt) Did not find 'StorageType' in module #-1 (/usr/share/snmp/mibs/NET-SNMP-VACM-MIB.txt) Unlinked OID in NET-SNMP-VACM-MIB: netSnmpVacmMIB ::= { netSnmpObjects 9 } Undefined identifier: netSnmpObjects near line 28 of /usr/share/snmp/mibs/NET-SNMP-VACM-MIB.txt Cannot adopt OID in UCD-SNMP-MIB: logMatchRegExCompilation ::= { logMatchEntry 101 } Cannot adopt OID in UCD-SNMP-MIB: logMatchErrorFlag ::= { logMatchEntry 100 } Cannot adopt OID in UCD-SNMP-MIB: logMatchCycle ::= { logMatchEntry 11 } Cannot adopt OID in UCD-SNMP-MIB: logMatchCount ::= { logMatchEntry 10 } Cannot adopt OID in UCD-SNMP-MIB: logMatchCounter ::= { logMatchEntry 9 } Cannot adopt OID in UCD-SNMP-MIB: logMatchCurrentCount ::= { logMatchEntry 8 } Cannot adopt OID in UCD-SNMP-MIB: logMatchCurrentCounter ::= { logMatchEntry 7 } Cannot adopt OID in UCD-SNMP-MIB: logMatchGlobalCount ::= { logMatchEntry 6 } Cannot adopt OID in UCD-SNMP-MIB: logMatchGlobalCounter ::= { logMatchEntry 5 } Cannot adopt OID in UCD-SNMP-MIB: logMatchRegEx ::= { logMatchEntry 4 } Cannot adopt OID in UCD-SNMP-MIB: logMatchFilename ::= { logMatchEntry 3 } Cannot adopt OID in UCD-SNMP-MIB: logMatchName ::= { logMatchEntry 2 } Cannot adopt OID in UCD-SNMP-MIB: logMatchIndex ::= { logMatchEntry 1 } Cannot adopt OID in NET-SNMP-VACM-MIB: nsVacmAccessEntry ::= { nsVacmAccessTable 1 } Cannot adopt OID in UCD-SNMP-MIB: extErrFixCmd ::= { extEntry 103 } Cannot adopt OID in UCD-SNMP-MIB: extErrFix ::= { extEntry 102 } Cannot adopt OID in UCD-SNMP-MIB: extOutput ::= { extEntry 101 } Cannot adopt OID in UCD-SNMP-MIB: extResult ::= { extEntry 100 } Cannot adopt OID in UCD-SNMP-MIB: extCommand ::= { extEntry 3 } Cannot adopt OID in UCD-SNMP-MIB: extNames ::= { extEntry 2 } Cannot adopt OID in UCD-SNMP-MIB: extIndex ::= { extEntry 1 } Cannot adopt OID in UCD-DEMO-MIB: ucdDemoPublic ::= { ucdDemoMIBObjects 1 } Cannot adopt OID in UCD-DLMOD-MIB: dlmodTable ::= { ucdDlmodMIB 2 } Cannot adopt OID in UCD-DLMOD-MIB: dlmodNextIndex ::= { ucdDlmodMIB 1 } Cannot adopt OID in NET-SNMP-EXAMPLES-MIB: netSnmpExamples ::= { netSnmp 2 } Cannot adopt OID in NET-SNMP-MIB: netSnmpConformance ::= { netSnmp 5 } Cannot adopt OID in NET-SNMP-MIB: netSnmpNotificationPrefix ::= { netSnmp 4 } Cannot adopt OID in NET-SNMP-MIB: netSnmpExperimental ::= { netSnmp 9999 } Cannot adopt OID in NET-SNMP-MIB: netSnmpEnumerations ::= { netSnmp 3 } Cannot adopt OID in NET-SNMP-MIB: netSnmpObjects ::= { netSnmp 1 } Cannot adopt OID in UCD-SNMP-MIB: versionDoDebugging ::= { version 20 } Cannot adopt OID in UCD-SNMP-MIB: versionSavePersistentData ::= { version 13 } Cannot adopt OID in UCD-SNMP-MIB: versionRestartAgent ::= { version 12 } Cannot adopt OID in UCD-SNMP-MIB: versionUpdateConfig ::= { version 11 } Cannot adopt OID in UCD-SNMP-MIB: versionClearCache ::= { version 10 } Cannot adopt OID in UCD-SNMP-MIB: versionConfigureOptions ::= { version 6 } Cannot adopt OID in UCD-SNMP-MIB: versionIdent ::= { version 5 } Cannot adopt OID in UCD-SNMP-MIB: versionCDate ::= { version 4 } Cannot adopt OID in UCD-SNMP-MIB: versionDate ::= { version 3 } Cannot adopt OID in UCD-SNMP-MIB: versionTag ::= { version 2 } Cannot adopt OID in UCD-SNMP-MIB: versionIndex ::= { version 1 } Cannot adopt OID in NET-SNMP-EXAMPLES-MIB: netSnmpExampleHeartbeatNotification ::= { netSnmpExampleNotificationPrefix 1 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsCacheStatus ::= { nsCacheEntry 3 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsCacheTimeout ::= { nsCacheEntry 2 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsCachedOID ::= { nsCacheEntry 1 } Cannot adopt OID in UCD-SNMP-MIB: unknown ::= { ucdSnmpAgent 255 } Cannot adopt OID in UCD-SNMP-MIB: dragonfly ::= { ucdSnmpAgent 17 } Cannot adopt OID in UCD-SNMP-MIB: macosx ::= { ucdSnmpAgent 16 } Cannot adopt OID in UCD-SNMP-MIB: aix ::= { ucdSnmpAgent 15 } Cannot adopt OID in UCD-SNMP-MIB: hpux11 ::= { ucdSnmpAgent 14 } Cannot adopt OID in UCD-SNMP-MIB: win32 ::= { ucdSnmpAgent 13 } Cannot adopt OID in UCD-SNMP-MIB: openbsd ::= { ucdSnmpAgent 12 } Cannot adopt OID in UCD-SNMP-MIB: bsdi ::= { ucdSnmpAgent 11 } Cannot adopt OID in UCD-SNMP-MIB: linux ::= { ucdSnmpAgent 10 } Cannot adopt OID in UCD-SNMP-MIB: irix ::= { ucdSnmpAgent 9 } Cannot adopt OID in UCD-SNMP-MIB: freebsd ::= { ucdSnmpAgent 8 } Cannot adopt OID in UCD-SNMP-MIB: netbsd1 ::= { ucdSnmpAgent 7 } Cannot adopt OID in UCD-SNMP-MIB: hpux10 ::= { ucdSnmpAgent 6 } Cannot adopt OID in UCD-SNMP-MIB: ultrix ::= { ucdSnmpAgent 5 } Cannot adopt OID in UCD-SNMP-MIB: osf ::= { ucdSnmpAgent 4 } Cannot adopt OID in UCD-SNMP-MIB: solaris ::= { ucdSnmpAgent 3 } Cannot adopt OID in UCD-SNMP-MIB: sunos4 ::= { ucdSnmpAgent 2 } Cannot adopt OID in UCD-SNMP-MIB: hpux9 ::= { ucdSnmpAgent 1 } Cannot adopt OID in NET-SNMP-EXTEND-MIB: nsExtendOutputGroup ::= { nsExtendGroups 2 } Cannot adopt OID in NET-SNMP-EXTEND-MIB: nsExtendConfigGroup ::= { nsExtendGroups 1 } Cannot adopt OID in UCD-DISKIO-MIB: diskIOEntry ::= { diskIOTable 1 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsTransactionEntry ::= { nsTransactionTable 1 } Cannot adopt OID in NET-SNMP-MIB: netSnmpGroups ::= { netSnmpConformance 2 } Cannot adopt OID in NET-SNMP-MIB: netSnmpCompliances ::= { netSnmpConformance 1 } Cannot adopt OID in UCD-SNMP-MIB: mrModuleName ::= { mrEntry 2 } Cannot adopt OID in UCD-SNMP-MIB: mrIndex ::= { mrEntry 1 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsDebugTokenEntry ::= { nsDebugTokenTable 1 } Cannot adopt OID in NET-SNMP-EXTEND-MIB: nsExtendStatus ::= { nsExtendConfigEntry 21 } Cannot adopt OID in NET-SNMP-EXTEND-MIB: nsExtendStorage ::= { nsExtendConfigEntry 20 } Cannot adopt OID in NET-SNMP-EXTEND-MIB: nsExtendRunType ::= { nsExtendConfigEntry 7 } Cannot adopt OID in NET-SNMP-EXTEND-MIB: nsExtendExecType ::= { nsExtendConfigEntry 6 } Cannot adopt OID in NET-SNMP-EXTEND-MIB: nsExtendCacheTime ::= { nsExtendConfigEntry 5 } Cannot adopt OID in NET-SNMP-EXTEND-MIB: nsExtendInput ::= { nsExtendConfigEntry 4 } Cannot adopt OID in NET-SNMP-EXTEND-MIB: nsExtendArgs ::= { nsExtendConfigEntry 3 } Cannot adopt OID in NET-SNMP-EXTEND-MIB: nsExtendCommand ::= { nsExtendConfigEntry 2 } Cannot adopt OID in NET-SNMP-EXTEND-MIB: nsExtendToken ::= { nsExtendConfigEntry 1 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsModuleTable ::= { nsMibRegistry 1 } Cannot adopt OID in NET-SNMP-MIB: netSnmpPlaypen ::= { netSnmpExperimental 9999 } Cannot adopt OID in NET-SNMP-EXAMPLES-MIB: netSnmpIETFWGEntry ::= { netSnmpIETFWGTable 1 } Cannot adopt OID in UCD-SNMP-MIB: prErrFixCmd ::= { prEntry 103 } Cannot adopt OID in UCD-SNMP-MIB: prErrFix ::= { prEntry 102 } Cannot adopt OID in UCD-SNMP-MIB: prErrMessage ::= { prEntry 101 } Cannot adopt OID in UCD-SNMP-MIB: prErrorFlag ::= { prEntry 100 } Cannot adopt OID in UCD-SNMP-MIB: prCount ::= { prEntry 5 } Cannot adopt OID in UCD-SNMP-MIB: prMax ::= { prEntry 4 } Cannot adopt OID in UCD-SNMP-MIB: prMin ::= { prEntry 3 } Cannot adopt OID in UCD-SNMP-MIB: prNames ::= { prEntry 2 } Cannot adopt OID in UCD-SNMP-MIB: prIndex ::= { prEntry 1 } Cannot adopt OID in UCD-DLMOD-MIB: dlmodEntry ::= { dlmodTable 1 } Cannot adopt OID in UCD-SNMP-MIB: memSwapErrorMsg ::= { memory 101 } Cannot adopt OID in UCD-SNMP-MIB: memSwapError ::= { memory 100 } Cannot adopt OID in UCD-SNMP-MIB: memUsedRealTXT ::= { memory 17 } Cannot adopt OID in UCD-SNMP-MIB: memUsedSwapTXT ::= { memory 16 } Cannot adopt OID in UCD-SNMP-MIB: memCached ::= { memory 15 } Cannot adopt OID in UCD-SNMP-MIB: memBuffer ::= { memory 14 } Cannot adopt OID in UCD-SNMP-MIB: memShared ::= { memory 13 } Cannot adopt OID in UCD-SNMP-MIB: memMinimumSwap ::= { memory 12 } Cannot adopt OID in UCD-SNMP-MIB: memTotalFree ::= { memory 11 } Cannot adopt OID in UCD-SNMP-MIB: memAvailRealTXT ::= { memory 10 } Cannot adopt OID in UCD-SNMP-MIB: memTotalRealTXT ::= { memory 9 } Cannot adopt OID in UCD-SNMP-MIB: memAvailSwapTXT ::= { memory 8 } Cannot adopt OID in UCD-SNMP-MIB: memTotalSwapTXT ::= { memory 7 } Cannot adopt OID in UCD-SNMP-MIB: memAvailReal ::= { memory 6 } Cannot adopt OID in UCD-SNMP-MIB: memTotalReal ::= { memory 5 } Cannot adopt OID in UCD-SNMP-MIB: memAvailSwap ::= { memory 4 } Cannot adopt OID in UCD-SNMP-MIB: memTotalSwap ::= { memory 3 } Cannot adopt OID in UCD-SNMP-MIB: memErrorName ::= { memory 2 } Cannot adopt OID in UCD-SNMP-MIB: memIndex ::= { memory 1 } Cannot adopt OID in UCD-DEMO-MIB: ucdDemoMIBObjects ::= { ucdDemoMIB 1 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsModuleTimeout ::= { nsModuleEntry 6 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsModuleModes ::= { nsModuleEntry 5 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsModuleName ::= { nsModuleEntry 4 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsmRegistrationPriority ::= { nsModuleEntry 3 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsmRegistrationPoint ::= { nsModuleEntry 2 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsmContextName ::= { nsModuleEntry 1 } Cannot adopt OID in LM-SENSORS-MIB: lmMiscSensorsEntry ::= { lmMiscSensorsTable 1 } Cannot adopt OID in NET-SNMP-MIB: netSnmpNotificationObjects ::= { netSnmpNotificationPrefix 1 } Cannot adopt OID in NET-SNMP-MIB: netSnmpNotifications ::= { netSnmpNotificationPrefix 0 } Cannot adopt OID in NET-SNMP-PASS-MIB: netSnmpPassTable ::= { netSnmpPassExamples 2 } Cannot adopt OID in NET-SNMP-PASS-MIB: netSnmpPassOIDValue ::= { netSnmpPassExamples 99 } Cannot adopt OID in NET-SNMP-PASS-MIB: netSnmpPassGauge ::= { netSnmpPassExamples 6 } Cannot adopt OID in NET-SNMP-PASS-MIB: netSnmpPassCounter ::= { netSnmpPassExamples 5 } Cannot adopt OID in NET-SNMP-PASS-MIB: netSnmpPassIpAddress ::= { netSnmpPassExamples 4 } Cannot adopt OID in NET-SNMP-PASS-MIB: netSnmpPassTimeTicks ::= { netSnmpPassExamples 3 } Cannot adopt OID in NET-SNMP-PASS-MIB: netSnmpPassString ::= { netSnmpPassExamples 1 } Cannot adopt OID in NET-SNMP-MIB: netSnmpDomains ::= { netSnmpEnumerations 3 } Cannot adopt OID in NET-SNMP-MIB: netSnmpAgentOIDs ::= { netSnmpEnumerations 2 } Cannot adopt OID in NET-SNMP-MIB: netSnmpModuleIDs ::= { netSnmpEnumerations 1 } Cannot adopt OID in LM-SENSORS-MIB: lmFanSensorsEntry ::= { lmFanSensorsTable 1 } Cannot adopt OID in LM-SENSORS-MIB: lmTempSensorsEntry ::= { lmTempSensorsTable 1 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsModuleGroup ::= { netSnmpGroups 2 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsCacheGroup ::= { netSnmpGroups 4 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsConfigGroups ::= { netSnmpGroups 7 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsTransactionGroup ::= { netSnmpGroups 8 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsAgentNotifyGroup ::= { netSnmpGroups 9 } Cannot adopt OID in UCD-SNMP-MIB: fileEntry ::= { fileTable 1 } Cannot adopt OID in NET-SNMP-VACM-MIB: nsVacmStatus ::= { nsVacmAccessEntry 5 } Cannot adopt OID in NET-SNMP-VACM-MIB: nsVacmStorageType ::= { nsVacmAccessEntry 4 } Cannot adopt OID in NET-SNMP-VACM-MIB: nsVacmViewName ::= { nsVacmAccessEntry 3 } Cannot adopt OID in NET-SNMP-VACM-MIB: nsVacmContextMatch ::= { nsVacmAccessEntry 2 } Cannot adopt OID in NET-SNMP-VACM-MIB: nsVacmAuthType ::= { nsVacmAccessEntry 1 } Cannot adopt OID in NET-SNMP-EXTEND-MIB: netSnmpExtendMIB ::= { nsExtensions 1 } Cannot adopt OID in NET-SNMP-EXTEND-MIB: nsExtendObjects ::= { nsExtensions 2 } Cannot adopt OID in NET-SNMP-EXTEND-MIB: nsExtendGroups ::= { nsExtensions 3 } Cannot adopt OID in LM-SENSORS-MIB: lmVoltSensorsEntry ::= { lmVoltSensorsTable 1 } Cannot adopt OID in NET-SNMP-MIB: netSnmp ::= { enterprises 8072 } Cannot adopt OID in UCD-SNMP-MIB: ucdavis ::= { enterprises 2021 } Cannot adopt OID in UCD-DISKIO-MIB: diskIONWrittenX ::= { diskIOEntry 13 } Cannot adopt OID in UCD-DISKIO-MIB: diskIONReadX ::= { diskIOEntry 12 } Cannot adopt OID in UCD-DISKIO-MIB: diskIOLA15 ::= { diskIOEntry 11 } Cannot adopt OID in UCD-DISKIO-MIB: diskIOLA5 ::= { diskIOEntry 10 } Cannot adopt OID in UCD-DISKIO-MIB: diskIOLA1 ::= { diskIOEntry 9 } Cannot adopt OID in UCD-DISKIO-MIB: diskIOWrites ::= { diskIOEntry 6 } Cannot adopt OID in UCD-DISKIO-MIB: diskIOReads ::= { diskIOEntry 5 } Cannot adopt OID in UCD-DISKIO-MIB: diskIONWritten ::= { diskIOEntry 4 } Cannot adopt OID in UCD-DISKIO-MIB: diskIONRead ::= { diskIOEntry 3 } Cannot adopt OID in UCD-DISKIO-MIB: diskIODevice ::= { diskIOEntry 2 } Cannot adopt OID in UCD-DISKIO-MIB: diskIOIndex ::= { diskIOEntry 1 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsTransactionMode ::= { nsTransactionEntry 2 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsTransactionID ::= { nsTransactionEntry 1 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsDebugTokenStatus ::= { nsDebugTokenEntry 4 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsDebugTokenPrefix ::= { nsDebugTokenEntry 2 } Cannot adopt OID in NET-SNMP-EXAMPLES-MIB: nsIETFWGChair2 ::= { netSnmpIETFWGEntry 3 } Cannot adopt OID in NET-SNMP-EXAMPLES-MIB: nsIETFWGChair1 ::= { netSnmpIETFWGEntry 2 } Cannot adopt OID in NET-SNMP-EXAMPLES-MIB: nsIETFWGName ::= { netSnmpIETFWGEntry 1 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsLoggingTable ::= { nsConfigLogging 1 } Cannot adopt OID in NET-SNMP-EXAMPLES-MIB: netSnmpHostsEntry ::= { netSnmpHostsTable 1 } Cannot adopt OID in UCD-DLMOD-MIB: dlmodStatus ::= { dlmodEntry 5 } Cannot adopt OID in UCD-DLMOD-MIB: dlmodError ::= { dlmodEntry 4 } Cannot adopt OID in UCD-DLMOD-MIB: dlmodPath ::= { dlmodEntry 3 } Cannot adopt OID in UCD-DLMOD-MIB: dlmodName ::= { dlmodEntry 2 } Cannot adopt OID in UCD-DLMOD-MIB: dlmodIndex ::= { dlmodEntry 1 } Cannot adopt OID in LM-SENSORS-MIB: lmMiscSensorsValue ::= { lmMiscSensorsEntry 3 } Cannot adopt OID in LM-SENSORS-MIB: lmMiscSensorsDevice ::= { lmMiscSensorsEntry 2 } Cannot adopt OID in LM-SENSORS-MIB: lmMiscSensorsIndex ::= { lmMiscSensorsEntry 1 } Cannot adopt OID in NET-SNMP-PASS-MIB: netSnmpPassEntry ::= { netSnmpPassTable 1 } Cannot adopt OID in LM-SENSORS-MIB: lmSensors ::= { ucdExperimental 16 } Cannot adopt OID in UCD-DISKIO-MIB: ucdDiskIOMIB ::= { ucdExperimental 15 } Cannot adopt OID in UCD-DLMOD-MIB: ucdDlmodMIB ::= { ucdExperimental 14 } Cannot adopt OID in UCD-SNMP-MIB: dskEntry ::= { dskTable 1 } Cannot adopt OID in NET-SNMP-AGENT-MIB: netSnmpAgentMIB ::= { netSnmpModuleIDs 2 } Cannot adopt OID in LM-SENSORS-MIB: lmFanSensorsValue ::= { lmFanSensorsEntry 3 } Cannot adopt OID in LM-SENSORS-MIB: lmFanSensorsDevice ::= { lmFanSensorsEntry 2 } Cannot adopt OID in LM-SENSORS-MIB: lmFanSensorsIndex ::= { lmFanSensorsEntry 1 } Cannot adopt OID in LM-SENSORS-MIB: lmTempSensorsValue ::= { lmTempSensorsEntry 3 } Cannot adopt OID in LM-SENSORS-MIB: lmTempSensorsDevice ::= { lmTempSensorsEntry 2 } Cannot adopt OID in LM-SENSORS-MIB: lmTempSensorsIndex ::= { lmTempSensorsEntry 1 } Cannot adopt OID in UCD-SNMP-MIB: logMatchTable ::= { logMatch 2 } Cannot adopt OID in UCD-SNMP-MIB: logMatchMaxEntries ::= { logMatch 1 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsLoggingEntry ::= { nsLoggingTable 1 } Cannot adopt OID in UCD-SNMP-MIB: fileErrorMsg ::= { fileEntry 101 } Cannot adopt OID in UCD-SNMP-MIB: fileErrorFlag ::= { fileEntry 100 } Cannot adopt OID in UCD-SNMP-MIB: fileMax ::= { fileEntry 4 } Cannot adopt OID in UCD-SNMP-MIB: fileSize ::= { fileEntry 3 } Cannot adopt OID in UCD-SNMP-MIB: fileName ::= { fileEntry 2 } Cannot adopt OID in UCD-SNMP-MIB: fileIndex ::= { fileEntry 1 } Cannot adopt OID in NET-SNMP-EXTEND-MIB: nsExtendOutput2Table ::= { nsExtendObjects 4 } Cannot adopt OID in NET-SNMP-EXTEND-MIB: nsExtendOutput1Table ::= { nsExtendObjects 3 } Cannot adopt OID in NET-SNMP-EXTEND-MIB: nsExtendConfigTable ::= { nsExtendObjects 2 } Cannot adopt OID in NET-SNMP-EXTEND-MIB: nsExtendNumEntries ::= { nsExtendObjects 1 } Cannot adopt OID in NET-SNMP-EXTEND-MIB: nsExtendOutput1Entry ::= { nsExtendOutput1Table 1 } Cannot adopt OID in UCD-SNMP-MIB: ssCpuRawGuestNice ::= { systemStats 66 } Cannot adopt OID in UCD-SNMP-MIB: ssCpuRawGuest ::= { systemStats 65 } Cannot adopt OID in UCD-SNMP-MIB: ssCpuRawSteal ::= { systemStats 64 } Cannot adopt OID in UCD-SNMP-MIB: ssRawSwapOut ::= { systemStats 63 } Cannot adopt OID in UCD-SNMP-MIB: ssRawSwapIn ::= { systemStats 62 } Cannot adopt OID in UCD-SNMP-MIB: ssCpuRawSoftIRQ ::= { systemStats 61 } Cannot adopt OID in UCD-SNMP-MIB: ssRawContexts ::= { systemStats 60 } Cannot adopt OID in UCD-SNMP-MIB: ssRawInterrupts ::= { systemStats 59 } Cannot adopt OID in UCD-SNMP-MIB: ssIORawReceived ::= { systemStats 58 } Cannot adopt OID in UCD-SNMP-MIB: ssIORawSent ::= { systemStats 57 } Cannot adopt OID in UCD-SNMP-MIB: ssCpuRawInterrupt ::= { systemStats 56 } Cannot adopt OID in UCD-SNMP-MIB: ssCpuRawKernel ::= { systemStats 55 } Cannot adopt OID in UCD-SNMP-MIB: ssCpuRawWait ::= { systemStats 54 } Cannot adopt OID in UCD-SNMP-MIB: ssCpuRawIdle ::= { systemStats 53 } Cannot adopt OID in UCD-SNMP-MIB: ssCpuRawSystem ::= { systemStats 52 } Cannot adopt OID in UCD-SNMP-MIB: ssCpuRawNice ::= { systemStats 51 } Cannot adopt OID in UCD-SNMP-MIB: ssCpuRawUser ::= { systemStats 50 } Cannot adopt OID in UCD-SNMP-MIB: ssCpuIdle ::= { systemStats 11 } Cannot adopt OID in UCD-SNMP-MIB: ssCpuSystem ::= { systemStats 10 } Cannot adopt OID in UCD-SNMP-MIB: ssCpuUser ::= { systemStats 9 } Cannot adopt OID in UCD-SNMP-MIB: ssSysContext ::= { systemStats 8 } Cannot adopt OID in UCD-SNMP-MIB: ssSysInterrupts ::= { systemStats 7 } Cannot adopt OID in UCD-SNMP-MIB: ssIOReceive ::= { systemStats 6 } Cannot adopt OID in UCD-SNMP-MIB: ssIOSent ::= { systemStats 5 } Cannot adopt OID in UCD-SNMP-MIB: ssSwapOut ::= { systemStats 4 } Cannot adopt OID in UCD-SNMP-MIB: ssSwapIn ::= { systemStats 3 } Cannot adopt OID in UCD-SNMP-MIB: ssErrorName ::= { systemStats 2 } Cannot adopt OID in UCD-SNMP-MIB: ssIndex ::= { systemStats 1 } Cannot adopt OID in NET-SNMP-EXTEND-MIB: nsExtendOutput2Entry ::= { nsExtendOutput2Table 1 } Cannot adopt OID in UCD-SNMP-MIB: laEntry ::= { laTable 1 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsCacheTable ::= { nsCache 3 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsCacheEnabled ::= { nsCache 2 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsCacheDefaultTimeout ::= { nsCache 1 } Cannot adopt OID in UCD-SNMP-MIB: logMatchEntry ::= { logMatchTable 1 } Cannot adopt OID in UCD-SNMP-MIB: extEntry ::= { extTable 1 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsConfigLogging ::= { nsConfiguration 2 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsConfigDebug ::= { nsConfiguration 1 } Cannot adopt OID in NET-SNMP-EXAMPLES-MIB: netSnmpExampleString ::= { netSnmpExampleScalars 3 } Cannot adopt OID in NET-SNMP-EXAMPLES-MIB: netSnmpExampleSleeper ::= { netSnmpExampleScalars 2 } Cannot adopt OID in NET-SNMP-EXAMPLES-MIB: netSnmpExampleInteger ::= { netSnmpExampleScalars 1 } Cannot adopt OID in LM-SENSORS-MIB: lmVoltSensorsValue ::= { lmVoltSensorsEntry 3 } Cannot adopt OID in LM-SENSORS-MIB: lmVoltSensorsDevice ::= { lmVoltSensorsEntry 2 } Cannot adopt OID in LM-SENSORS-MIB: lmVoltSensorsIndex ::= { lmVoltSensorsEntry 1 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsCacheEntry ::= { nsCacheTable 1 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsDebugTokenTable ::= { nsConfigDebug 4 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsDebugDumpPdu ::= { nsConfigDebug 3 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsDebugOutputAll ::= { nsConfigDebug 2 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsDebugEnabled ::= { nsConfigDebug 1 } Cannot adopt OID in UCD-DEMO-MIB: ucdDemoPassphrase ::= { ucdDemoPublic 4 } Cannot adopt OID in UCD-DEMO-MIB: ucdDemoUserList ::= { ucdDemoPublic 3 } Cannot adopt OID in UCD-DEMO-MIB: ucdDemoPublicString ::= { ucdDemoPublic 2 } Cannot adopt OID in UCD-DEMO-MIB: ucdDemoResetKeys ::= { ucdDemoPublic 1 } Cannot adopt OID in NET-SNMP-EXAMPLES-MIB: netSnmpExampleHeartbeatName ::= { netSnmpExampleNotificationObjects 2 } Cannot adopt OID in NET-SNMP-EXAMPLES-MIB: netSnmpExampleHeartbeatRate ::= { netSnmpExampleNotificationObjects 1 } Cannot adopt OID in NET-SNMP-PASS-MIB: netSnmpPassExamples ::= { netSnmpExamples 255 } Cannot adopt OID in NET-SNMP-EXAMPLES-MIB: netSnmpExampleNotifications ::= { netSnmpExamples 3 } Cannot adopt OID in NET-SNMP-EXAMPLES-MIB: netSnmpExampleTables ::= { netSnmpExamples 2 } Cannot adopt OID in NET-SNMP-EXAMPLES-MIB: netSnmpExampleScalars ::= { netSnmpExamples 1 } Cannot adopt OID in NET-SNMP-VACM-MIB: nsVacmAccessTable ::= { netSnmpVacmMIB 1 } Cannot adopt OID in UCD-SNMP-MIB: ucdShutdown ::= { ucdTraps 2 } Cannot adopt OID in UCD-SNMP-MIB: ucdStart ::= { ucdTraps 1 } Cannot adopt OID in LM-SENSORS-MIB: lmMiscSensorsTable ::= { lmSensors 5 } Cannot adopt OID in LM-SENSORS-MIB: lmVoltSensorsTable ::= { lmSensors 4 } Cannot adopt OID in LM-SENSORS-MIB: lmFanSensorsTable ::= { lmSensors 3 } Cannot adopt OID in LM-SENSORS-MIB: lmTempSensorsTable ::= { lmSensors 2 } Cannot adopt OID in LM-SENSORS-MIB: lmSensorsMIB ::= { lmSensors 1 } Cannot adopt OID in UCD-SNMP-MIB: mrEntry ::= { mrTable 1 } Cannot adopt OID in NET-SNMP-EXTEND-MIB: nsExtendConfigEntry ::= { nsExtendConfigTable 1 } Cannot adopt OID in NET-SNMP-EXAMPLES-MIB: netSnmpHostRowStatus ::= { netSnmpHostsEntry 5 } Cannot adopt OID in NET-SNMP-EXAMPLES-MIB: netSnmpHostStorage ::= { netSnmpHostsEntry 4 } Cannot adopt OID in NET-SNMP-EXAMPLES-MIB: netSnmpHostAddress ::= { netSnmpHostsEntry 3 } Cannot adopt OID in NET-SNMP-EXAMPLES-MIB: netSnmpHostAddressType ::= { netSnmpHostsEntry 2 } Cannot adopt OID in NET-SNMP-EXAMPLES-MIB: netSnmpHostName ::= { netSnmpHostsEntry 1 } Cannot adopt OID in UCD-SNMP-MIB: prEntry ::= { prTable 1 } Cannot adopt OID in NET-SNMP-EXAMPLES-MIB: netSnmpExampleNotification ::= { netSnmpExampleNotifications 1 } Cannot adopt OID in NET-SNMP-EXAMPLES-MIB: netSnmpExampleNotificationObjects ::= { netSnmpExampleNotifications 2 } Cannot adopt OID in NET-SNMP-EXAMPLES-MIB: netSnmpExampleNotificationPrefix ::= { netSnmpExampleNotifications 0 } Cannot adopt OID in NET-SNMP-EXAMPLES-MIB: netSnmpHostsTable ::= { netSnmpExampleTables 2 } Cannot adopt OID in NET-SNMP-EXAMPLES-MIB: netSnmpIETFWGTable ::= { netSnmpExampleTables 1 } Cannot adopt OID in NET-SNMP-PASS-MIB: netSnmpPassOID ::= { netSnmpPassEntry 3 } Cannot adopt OID in NET-SNMP-PASS-MIB: netSnmpPassInteger ::= { netSnmpPassEntry 2 } Cannot adopt OID in NET-SNMP-PASS-MIB: netSnmpPassIndex ::= { netSnmpPassEntry 1 } Cannot adopt OID in NET-SNMP-VACM-MIB: netSnmpVacmMIB ::= { netSnmpObjects 9 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsVersion ::= { netSnmpObjects 1 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsMibRegistry ::= { netSnmpObjects 2 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsExtensions ::= { netSnmpObjects 3 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsDLMod ::= { netSnmpObjects 4 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsCache ::= { netSnmpObjects 5 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsErrorHistory ::= { netSnmpObjects 6 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsConfiguration ::= { netSnmpObjects 7 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsTransactions ::= { netSnmpObjects 8 } Cannot adopt OID in UCD-DEMO-MIB: ucdDemoMIB ::= { ucdavis 14 } Cannot adopt OID in UCD-SNMP-MIB: logMatch ::= { ucdavis 16 } Cannot adopt OID in UCD-SNMP-MIB: fileTable ::= { ucdavis 15 } Cannot adopt OID in UCD-SNMP-MIB: ucdTraps ::= { ucdavis 251 } Cannot adopt OID in UCD-SNMP-MIB: systemStats ::= { ucdavis 11 } Cannot adopt OID in UCD-SNMP-MIB: mrTable ::= { ucdavis 102 } Cannot adopt OID in UCD-SNMP-MIB: snmperrs ::= { ucdavis 101 } Cannot adopt OID in UCD-SNMP-MIB: version ::= { ucdavis 100 } Cannot adopt OID in UCD-SNMP-MIB: laTable ::= { ucdavis 10 } Cannot adopt OID in UCD-SNMP-MIB: dskTable ::= { ucdavis 9 } Cannot adopt OID in UCD-SNMP-MIB: memory ::= { ucdavis 4 } Cannot adopt OID in UCD-SNMP-MIB: extTable ::= { ucdavis 8 } Cannot adopt OID in UCD-SNMP-MIB: prTable ::= { ucdavis 2 } Cannot adopt OID in UCD-SNMP-MIB: ucdSnmpAgent ::= { ucdavis 250 } Cannot adopt OID in UCD-SNMP-MIB: ucdExperimental ::= { ucdavis 13 } Cannot adopt OID in UCD-SNMP-MIB: ucdInternal ::= { ucdavis 12 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsModuleEntry ::= { nsModuleTable 1 } Cannot adopt OID in UCD-SNMP-MIB: dskErrorMsg ::= { dskEntry 101 } Cannot adopt OID in UCD-SNMP-MIB: dskErrorFlag ::= { dskEntry 100 } Cannot adopt OID in UCD-SNMP-MIB: dskUsedHigh ::= { dskEntry 16 } Cannot adopt OID in UCD-SNMP-MIB: dskUsedLow ::= { dskEntry 15 } Cannot adopt OID in UCD-SNMP-MIB: dskAvailHigh ::= { dskEntry 14 } Cannot adopt OID in UCD-SNMP-MIB: dskAvailLow ::= { dskEntry 13 } Cannot adopt OID in UCD-SNMP-MIB: dskTotalHigh ::= { dskEntry 12 } Cannot adopt OID in UCD-SNMP-MIB: dskTotalLow ::= { dskEntry 11 } Cannot adopt OID in UCD-SNMP-MIB: dskPercentNode ::= { dskEntry 10 } Cannot adopt OID in UCD-SNMP-MIB: dskPercent ::= { dskEntry 9 } Cannot adopt OID in UCD-SNMP-MIB: dskUsed ::= { dskEntry 8 } Cannot adopt OID in UCD-SNMP-MIB: dskAvail ::= { dskEntry 7 } Cannot adopt OID in UCD-SNMP-MIB: dskTotal ::= { dskEntry 6 } Cannot adopt OID in UCD-SNMP-MIB: dskMinPercent ::= { dskEntry 5 } Cannot adopt OID in UCD-SNMP-MIB: dskMinimum ::= { dskEntry 4 } Cannot adopt OID in UCD-SNMP-MIB: dskDevice ::= { dskEntry 3 } Cannot adopt OID in UCD-SNMP-MIB: dskPath ::= { dskEntry 2 } Cannot adopt OID in UCD-SNMP-MIB: dskIndex ::= { dskEntry 1 } Cannot adopt OID in UCD-DISKIO-MIB: diskIOTable ::= { ucdDiskIOMIB 1 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsLoggingGroup ::= { nsConfigGroups 2 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsDebugGroup ::= { nsConfigGroups 1 } Cannot adopt OID in UCD-SNMP-MIB: snmperrErrMessage ::= { snmperrs 101 } Cannot adopt OID in UCD-SNMP-MIB: snmperrErrorFlag ::= { snmperrs 100 } Cannot adopt OID in UCD-SNMP-MIB: snmperrNames ::= { snmperrs 2 } Cannot adopt OID in UCD-SNMP-MIB: snmperrIndex ::= { snmperrs 1 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsTransactionTable ::= { nsTransactions 1 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsLogStatus ::= { nsLoggingEntry 5 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsLogMaxLevel ::= { nsLoggingEntry 4 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsLogType ::= { nsLoggingEntry 3 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsLogToken ::= { nsLoggingEntry 2 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsLogLevel ::= { nsLoggingEntry 1 } Cannot adopt OID in NET-SNMP-EXTEND-MIB: nsExtendResult ::= { nsExtendOutput1Entry 4 } Cannot adopt OID in NET-SNMP-EXTEND-MIB: nsExtendOutNumLines ::= { nsExtendOutput1Entry 3 } Cannot adopt OID in NET-SNMP-EXTEND-MIB: nsExtendOutputFull ::= { nsExtendOutput1Entry 2 } Cannot adopt OID in NET-SNMP-EXTEND-MIB: nsExtendOutput1Line ::= { nsExtendOutput1Entry 1 } Cannot adopt OID in NET-SNMP-EXTEND-MIB: nsExtendOutLine ::= { nsExtendOutput2Entry 2 } Cannot adopt OID in NET-SNMP-EXTEND-MIB: nsExtendLineIndex ::= { nsExtendOutput2Entry 1 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsNotifyStart ::= { netSnmpNotifications 1 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsNotifyShutdown ::= { netSnmpNotifications 2 } Cannot adopt OID in NET-SNMP-AGENT-MIB: nsNotifyRestart ::= { netSnmpNotifications 3 } Cannot adopt OID in UCD-SNMP-MIB: laErrMessage ::= { laEntry 101 } Cannot adopt OID in UCD-SNMP-MIB: laErrorFlag ::= { laEntry 100 } Cannot adopt OID in UCD-SNMP-MIB: laLoadFloat ::= { laEntry 6 } Cannot adopt OID in UCD-SNMP-MIB: laLoadInt ::= { laEntry 5 } Cannot adopt OID in UCD-SNMP-MIB: laConfig ::= { laEntry 4 } Cannot adopt OID in UCD-SNMP-MIB: laLoad ::= { laEntry 3 } Cannot adopt OID in UCD-SNMP-MIB: laNames ::= { laEntry 2 } Cannot adopt OID in UCD-SNMP-MIB: laIndex ::= { laEntry 1 } PHP Fatal error: Class 'TelegramBot\TelegramBotManager\BotManager' not found in /var/www/tg/manager.php on line 18

installing with composer

]# composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

Problem 1
- php-telegram-bot/telegram-bot-manager 1.5.0 requires longman/telegram-bot ^0.59 -> satisfiable by longman/telegram-bot[0.59.0, 0.59.1] but these conflict with your requirements or minimum-stability.
- php-telegram-bot/telegram-bot-manager 1.4.0 requires longman/telegram-bot ^0.57 -> satisfiable by longman/telegram-bot[0.57.0] but these conflict with your requirements or minimum-stability.
- Installation request for php-telegram-bot/telegram-bot-manager ^1.4 -> satisfiable by php-telegram-bot/telegram-bot-manager[1.4.0, 1.5.0].

run php manager.php ,but mywebhock can't recive any messages.

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

? !
Operating system centos 7.9.2009
PHP Telegram Bot Manager version 1.7.0
PHP Telegram Bot version 0.73.0
PHP version 7.4
MySQL version 5.7 / none
Update Method Webhook
Self-signed certificate no
RAW update (if available) {...}

Summary

Current behaviour

How to reproduce

run php manager.php ,but mywebhock can't recive any messages.

Expected behaviour

Schema is not created by default and provided structure is incomplete

Hello, when I try to install the php-telegram-bot/example-bot and try to run the example script with a MySQL database, I get a lot of "table or view not found" errors. Effectively, tables do not exist. I found this structure.sql file in your repo that should apparently create everything. However, more errors are raised:

PHP Warning:  PDOStatement::execute(): SQLSTATE[42S22]: Column not found: 1054 Unknown column 'id' in 'field list' in /home/bot/vendor/longman/telegram-bot/src/DB.php on 
line 224
PHP Warning:  PDOStatement::execute(): SQLSTATE[42S22]: Column not found: 1054 Unknown column 'id' in 'field list' in /home/bot/vendor/longman/telegram-bot/src/DB.php on 
line 224
PHP Warning:  PDOStatement::execute(): SQLSTATE[42S22]: Column not found: 1054 Unknown column 'id' in 'field list' in /home/bot/vendor/longman/telegram-bot/src/DB.php on 
line 372

Fatal error: Uncaught validateRequest()

Support Question

<--
โ— 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

? !
Operating system Name and version
PHP Telegram Bot Manager version 2.0.0
PHP Telegram Bot version 0.77.1 as 0.73
PHP version 8.0
MySQL version x.y.z / none
Update Method Webhook
Self-signed certificate no
RAW update (if available) {...}

Summary

when i run
https://mydomain.com/manager.php?s=T4yy4B&?a=unset
i get this error
Fatal error: Uncaught TelegramBot\TelegramBotManager\Exception\InvalidAccessException: Invalid access in /membri/mybbpk/vendor/php-telegram-bot/telegram-bot-manager/src/BotManager.php:476 Stack trace: #0 /membri/mybbpk/vendor/php-telegram-bot/telegram-bot-manager/src/BotManager.php(90): TelegramBot\TelegramBotManager\BotManager->validateRequest() #1 /membri/mybbpk/manager.php(31): TelegramBot\TelegramBotManager\BotManager->run() #2 {main} thrown in /membri/mybbpk/vendor/php-telegram-bot/telegram-bot-manager/src/BotManager.php on line 476

Update Message: deactivate sql write

Hi,
I have to remove update in sql Db only when i do editMessage command because the level of cpu is always over 80% and sometime it go down :/
Can you say me how to deactivate this feature? I have to edit Request file?

Thank you for your great work.

Andrea

Feature request

  • Add getWebhookInfo result to GET/CLI parameters action #29
  • Categorize config array #13 (comment)
  • Botan options
  • Log rotator
  • Build-in log/exception reporter to admins ?

Fatal error: Call to a member function getChat() on null in BotManager.php:505

Bug Report

? !
Operating system Linux 5.10.15-1-MANJARO
PHP Telegram Bot Manager version 1.6.0
PHP Telegram Bot version 0.70.1
PHP version 8.0.1
Update Method getUpdates

RAW update

Longman\TelegramBot\Entities\CallbackQuery::__set_state(array(
  ...
   'raw_data' => 
  array (
    'id' => '...',
    'from' => 
    array (
      'id' => ...,
      'is_bot' => false,
      'first_name' => '...',
      'username' => '...',
      'language_code' => '...',
    ),
    'inline_message_id' => '...',
    'chat_instance' => '...',
    'data' => '...',
  ),
   'bot_username' => '...',
))

Summary

Fatal error: Call to a member function getChat() on null in BotManager.php:505

How to reproduce

answer() InlineQuery with InlineQueryResult*[] containing input_message_content and reply_markup with InlineKeyboard with callback_data-button, then choose that item from result then click inline button to get CallbackQuery above.

Tested in PM/Saved Messages chat.

telegram_bot.ERROR: cURL error 28: Failed to connect to api.telegram.org port 443

Support Question

<--
โ— 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

? !
Operating system Name and version
PHP Telegram Bot Manager version x.y.z
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

if i use manager package alwasy get this log and bot not running
telegram_bot.ERROR: cURL error 28: Failed to connect to api.telegram.org port 443: Connection timed out (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://api.telegram.org/botxxxxx:tokenbot/setWebhook []

any suggestion to fix this sir ?

Custom valid IPs

Allow the user to add custom IPs from which the script can be executed.

This is necessary for calling the script with getUpdates method or Webhook method with custom input.

(this does not apply to CLI call)

bot is not receiving any message!

Dear all
here is my config

<?php

/**
 * This file is part of the PHP Telegram Bot example-bot package.
 * https://github.com/php-telegram-bot/example-bot/
 *
 * (c) PHP Telegram Bot Team
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

/**
 * This file contains all the configuration options for the PHP Telegram Bot.
 *
 * It is based on the configuration array of the PHP Telegram Bot Manager project.
 *
 * Simply adjust all the values that you need and extend where necessary.
 *
 * Options marked as [Manager Only] are only required if you use `manager.php`.
 *
 * For a full list of all options, check the Manager Readme:
 * https://github.com/php-telegram-bot/telegram-bot-manager#set-extra-bot-parameters
 */

return [
    // Add you bot's API key and name
    'api_key'      => '<API key>',
    'bot_username' => '<ID>', // Without "@"

    // [Manager Only] Secret key required to access the webhook
    'secret'       => '<myKey>',

    // When using the getUpdates method, this can be commented out
    'webhook'      => [
        'url' => 'https://mywebsite.net/bot/hook.php',
        // Use self-signed certificate
        // 'certificate'     => __DIR__ . '/path/to/your/certificate.crt',
        // Limit maximum number of connections
        // 'max_connections' => 5,
        'allowed_updates' => ['message', 'channel_post', 'callback_query'],
    ],
'validate_request' => false,
    // All command related configs go here
    'commands'     => [
        // Define all paths for your custom commands
        'paths'   => [
             __DIR__ . '/Commands',
        ],
        // Here you can set any command-specific parameters
        'configs' => [
            // - Google geocode/timezone API key for /date command (see DateCommand.php)
            // 'date'    => ['google_api_key' => 'your_google_api_key_here'],
            // - OpenWeatherMap.org API key for /weather command (see WeatherCommand.php)
            // 'weather' => ['owm_api_key' => 'your_owm_api_key_here'],
            // - Payment Provider Token for /payment command (see Payments/PaymentCommand.php)
            // 'payment' => ['payment_provider_token' => 'your_payment_provider_token_here'],
        ],
    ],

    // Define all IDs of admin users
    'admins'       => [
        // 123,
    ],

    // Enter your MySQL database credentials
     'mysql'        => [
         'host'     => '127.0.0.1',
         'user'     => 'user',
         'password' => 'password',
         'database' => 'db_name',
     ],

    // Logging (Debug, Error and Raw Updates)
     'logging'  => [
         'debug'  => __DIR__ . '/php-telegram-bot-debug.log',
         'error'  => __DIR__ . '/php-telegram-bot-error.log',
         'update' => __DIR__ . '/php-telegram-bot-update.log',
     ],

    // Set custom Upload and Download paths
    'paths'        => [
        'download' => __DIR__ . '/Download',
        'upload'   => __DIR__ . '/Upload',
    ],

    // Requests Limiter (tries to prevent reaching Telegram API limits)
    'limiter'      => [
        'enabled' => false,
    ],
];

I keep getting this message in ./php-telegram-bot-update.log

{"update_id":3999994764, "message":{"message_id":2,"from":{"id":99999,"is_bot":false,"first_name":"instaRanker","username":"instaRanker","language_code":"en"},"chat":{"id":99999,"first_name":"instaRanker","username":"instaRanker","type":"private"},"date":1636295694,"text":"/start","entities":[{"offset":0,"length":6,"type":"bot_command"}]}}
{"update_id":3999994764, "message":{"message_id":2,"from":{"id":99999,"is_bot":false,"first_name":"instaRanker","username":"instaRanker","language_code":"en"},"chat":{"id":99999,"first_name":"instaRanker","username":"instaRanker","type":"private"},"date":1636295694,"text":"/start","entities":[{"offset":0,"length":6,"type":"bot_command"}]}}
{"update_id":3999994764, "message":{"message_id":2,"from":{"id":99999,"is_bot":false,"first_name":"instaRanker","username":"instaRanker","language_code":"en"},"chat":{"id":99999,"first_name":"instaRanker","username":"instaRanker","type":"private"},"date":1636295694,"text":"/start","entities":[{"offset":0,"length":6,"type":"bot_command"}]}}
{"update_id":3999994764, "message":{"message_id":2,"from":{"id":99999,"is_bot":false,"first_name":"instaRanker","username":"instaRanker","language_code":"en"},"chat":{"id":99999,"first_name":"instaRanker","username":"instaRanker","type":"private"},"date":1636295694,"text":"/start","entities":[{"offset":0,"length":6,"type":"bot_command"}]}}
{"update_id":3999994764, "message":{"message_id":2,"from":{"id":99999,"is_bot":false,"first_name":"instaRanker","username":"instaRanker","language_code":"en"},"chat":{"id":99999,"first_name":"instaRanker","username":"instaRanker","type":"private"},"date":1636295694,"text":"/start","entities":[{"offset":0,"length":6,"type":"bot_command"}]}}

The Commands folder has this PHP TestCommand.php page

the content of the page

<?php

namespace Longman\TelegramBot\Commands\UserCommands;

use Longman\TelegramBot\Commands\UserCommand;
use Longman\TelegramBot\Request;

class TestCommand extends UserCommand
{
    protected $name = 'test';                      // Your command's name
    protected $description = 'A command for test'; // Your command description
    protected $usage = 'test';                    // Usage of your command
    protected $version = '1.0.0';                  // Version of your command

    public function execute()
    {
        $message = $this->getMessage();            // Get Message object

        $chat_id = $message->getChat()->getId();   // Get the current Chat ID

        $data = [                                  // Set up the new message data
            'chat_id' => $chat_id,                 // Set Chat ID to send the message to
            'text'    => 'This is just a Test...', // Set message to send
        ];

        return Request::sendMessage($data);        // Send message!
    }
}

It does not work when I type test in my bot.
I did not get any response to the telegram bot not even once!

What am doing wrong?

Linux 
PHP 7.4.24 (cli) (built: Oct  6 2021 10:23:44) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.