телеграм-бот

Ответить
ya
^-^
Сообщения: 2595
Зарегистрирован: 16 дек 2021, 19:56

телеграм-бот

Сообщение ya »

https://core.telegram.org/bots/samples

Код: Выделить всё

sudo apt-get install libboost-all-dev libjson-c-dev

Код: Выделить всё

git clone https://github.com/libcpr/cpr.git
cd cpr
mkdir build
cd build
cmake ..
make
sudo make install

Код: Выделить всё

#include <cpr/cpr.h>
#include <iostream>
#include <string>
#include <json/json.h>

const std::string BOT_TOKEN = "YOUR_TELEGRAM_BOT_TOKEN"; // Замените на ваш токен
const std::string BASE_URL = "https://api.telegram.org/bot" + BOT_TOKEN;

void sendMessage(const std::string& chat_id, const std::string& text) {
    std::string url = BASE_URL + "/sendMessage";

    // Создаем JSON-объект
    Json::Value jsonData;
    jsonData["chat_id"] = chat_id;
    jsonData["text"] = text;

    // Отправляем POST-запрос
    auto response = cpr::Post(cpr::Url{url},
                               cpr::Body{jsonData.toStyledString()},
                               cpr::Header{{"Content-Type", "application/json"}});

    std::cout << "Response: " << response.text << std::endl; // Выводим ответ от Telegram
}

int main() {
    std::string chat_id = "CHAT_ID"; // Замените на ID вашего чата
    std::string text = "Hello, World!";

    sendMessage(chat_id, text);

    return 0;
}
Компиляция:

Код: Выделить всё

g++ -std=c++11 -o telegram_bot telegram_bot.cpp -lcpr -lboost_system -lboost_thread -lpthread -ljson-c -I/usr/include/json
Запуск

Код: Выделить всё

./telegram_bot
Для реализации асинхронных операций вы можете использовать boost::asio для создания многопоточных операций или событийного цикла.

Не забудьте заменить YOUR_TELEGRAM_BOT_TOKEN и CHAT_ID на фактический токен вашего бота и ID вашего чата соответственно.
ya
^-^
Сообщения: 2595
Зарегистрирован: 16 дек 2021, 19:56

Re: телеграм-бот

Сообщение ya »

Код: Выделить всё

#include <cpr/cpr.h>
#include <iostream>
#include <string>
#include <json-c/json.h> // Изменено на json-c

const std::string BOT_TOKEN = "YOUR_TELEGRAM_BOT_TOKEN"; // Замените на ваш токен
const std::string BASE_URL = "https://api.telegram.org/bot" + BOT_TOKEN;

void sendMessage(const std::string& chat_id, const std::string& text) {
    std::string url = BASE_URL + "/sendMessage";

    // Создаем JSON-объект
    json_object *jsonData = json_object_new_object();
    json_object_object_add(jsonData, "chat_id", json_object_new_string(chat_id.c_str()));
    json_object_object_add(jsonData, "text", json_object_new_string(text.c_str()));

    // Получаем строку JSON
    const char *jsonStr = json_object_to_json_string(jsonData);

    // Отправляем POST-запрос
    auto response = cpr::Post(cpr::Url{url},
                               cpr::Body{jsonStr},
                               cpr::Header{{"Content-Type", "application/json"}});

    std::cout << "Response: " << response.text << std::endl; // Выводим ответ от Telegram

    // Освобождаем память
    json_object_put(jsonData);
}

int main() {
    std::string chat_id = "CHAT_ID"; // Замените на ID вашего чата
    std::string text = "Hello, World!";

    sendMessage(chat_id, text);

    return 0;
}

Код: Выделить всё

g++ -std=c++17 -o telegram_bot telegram_bot.cpp -lcpr -lboost_system -lboost_thread -lpthread -ljson-c  -I/usr/include/json-c
ya
^-^
Сообщения: 2595
Зарегистрирован: 16 дек 2021, 19:56

Re: телеграм-бот v2

Сообщение ya »

Код: Выделить всё

sudo apt-get install libcpprest-dev

Код: Выделить всё

#include <cpprest/http_client.h>
#include <cpprest/json.h>
#include <iostream>

using namespace web;
using namespace web::http;
using namespace web::http::client;

const std::string BOT_TOKEN = "YOUR_BOT_TOKEN";
const std::string BASE_URL = "https://api.telegram.org/bot" + BOT_TOKEN;

// Функция для отправки сообщения
void sendMessage(const std::string& chat_id, const std::string& text) {
    http_client client(U(BASE_URL + "/sendMessage"));
    uri_builder builder(U(""));
    builder.append_query(U("chat_id"), U(chat_id));
    builder.append_query(U("text"), U(text));

    client.request(methods::POST, builder.to_string()).then([](http_response response) {
        if (response.status_code() == status_codes::OK) {
            std::cout << "Message sent successfully!" << std::endl;
        } else {
            std::cout << "Error sending message." << std::endl;
        }
    }).wait();
}

// Основная функция
int main() {
    std::string chat_id = "CHAT_ID"; // Замените на ID вашего чата
    std::string message = "Hello, this is a test message!";
    
    sendMessage(chat_id, message);

    return 0;
}
В этом разделе более подробно рассматриваются платежи через API бота Telegram
https://core.telegram.org/bots/payments#the-payments-api

Подключение платежей
Чтобы начать принимать платежи, вам нужен Telegram-бот . Используйте BotFather для создания бота, если у вас его еще нет.

Теперь у вас есть торговый бот, который может предлагать товары или услуги пользователям Telegram. Давайте назовем его @merchantbotв этом документе.

Получение токена
Используйте /mybotsк оманду в чате с BotFather и выберите того @merchantbot, кто будет предлагать товары или услуги.
Перейдите в Настройки бота > Платежи .
Выберите провайдера, и вы будете перенаправлены на соответствующего бота.
Введите необходимые данные для успешного подключения к платежному провайдеру, вернитесь в чат с Botfather.
Теперь в сообщении будут показаны доступные поставщики. У каждого будет имя, токен и дата подключения поставщика.
Токен будет использоваться при работе с API бота.
Осуществление платежей
Необходимые методы для создания вашей платежной реализации вы найдете в разделе «Платежи» Руководства по API бота .

https://core.telegram.org/bots/api#payments
ya
^-^
Сообщения: 2595
Зарегистрирован: 16 дек 2021, 19:56

Re: телеграм-бот

Сообщение ya »

https://github.com/reo7sp/tgbot-cpp
https://www.youtube.com/watch?v=dwij9ZytWbQ
https://www.youtube.com/playlist?list=PLlxYwLnXeoE32ZbnD_BwwQ0cEbw8lIPg2

Документация по tgbot-cpp
http://reo7sp.github.io/tgbot-cpp/

Установка необходимых библиотек tgbot-cpp для сборки Телеграм-бота

Код: Выделить всё

#!/bin/bash

sudo apt update
sudo apt install git build-essential cmake libssl-dev libcurl4-openssl-dev

git clone https://github.com/reo7sp/tgbot-cpp

mkdir -p tgbot-cpp/build
cd tgbot-cpp/build
cmake ..
make -j$(nproc)
sudo make install
далее нужно создать сам телеграм-бот, например, назовём его telegram_bot

Теперь, когда у нас установлены необходимые глобальные библиотеки сборки бота, можно создать каталог в произвольном месте и в нём создать файл проекта (telegram_bot.cpp) и файл сборки (Makefile) . Или можно перейти в каталог samples/проект/src и в нём создать файл сборки, и собрать бота на основе предложенных вариантов. Или можно собрать Makefile из предложенных примеров samples/проект/CMakeLists.txt командой:

telegram_bot.cpp

Код: Выделить всё

#include <stdio.h>
#include <tgbot/tgbot.h>

int main() {
    TgBot::Bot bot("PLACE YOUR TOKEN HERE");
    bot.getEvents().onCommand("start", [&bot](TgBot::Message::Ptr message) {
        bot.getApi().sendMessage(message->chat->id, "Hi!");
    });
    bot.getEvents().onAnyMessage([&bot](TgBot::Message::Ptr message) {
        printf("User wrote %s\n", message->text.c_str());
        if (StringTools::startsWith(message->text, "/start")) {
            return;
        }
        bot.getApi().sendMessage(message->chat->id, "Your message is: " + message->text);
    });
    try {
        printf("Bot username: %s\n", bot.getApi().getMe()->username.c_str());
        TgBot::TgLongPoll longPoll(bot);
        while (true) {
            printf("Long poll started\n");
            longPoll.start();
        }
    } catch (TgBot::TgException& e) {
        printf("error: %s\n", e.what());
    }
    return 0;
}

Создадим файл сборки (Makefile) бота telegram_bot

Makefile

Код: Выделить всё

# Makefile для компиляции telegram_bot

CC = g++
CFLAGS = -std=c++14 -I/usr/local/include
LIBS = -lTgBot -lboost_system -lssl -lcrypto -lpthread
EXECUTABLE = telegram_bot

# Список исходных файлов
SOURCES = telegram_bot.cpp

# Создание объектных файлов
OBJECTS = $(SOURCES:.cpp=.o)

# Правило для компиляции
$(OBJECTS): %.o: %.cpp
    $(CC) $(CFLAGS) -c $< -o $@

# Правило для линковки
$(EXECUTABLE): $(OBJECTS)
    $(CC) $(OBJECTS) -o $@ $(LIBS)

# Правило для очистки
clean:
    rm -f $(OBJECTS) $(EXECUTABLE)


# Правило для запуска
run: $(EXECUTABLE)
    ./$(EXECUTABLE)


теперь бот можно собрать и/или пересобрать командой

Код: Выделить всё

make clear && make -j$(nproc)
запуск бота

Код: Выделить всё

./telegram_bot
Чтобы избежать ошибок сборки из tgbot-cpp/samples/проект/

Код: Выделить всё

#pragma message: The practice of declaring the Bind placeholders (_1, _2, ...) in the global namespace is deprecated. Please use <boost/bind/bind.hpp> + using namespace boost::placeholders, or define BOOST_BIND_GLOBAL_PLACEHOLDERS to retain the current behavior.
нужно добавить в файл CMakeLists.txt

Код: Выделить всё

add_definitions(-DBOOST_BIND_GLOBAL_PLACEHOLDERS)
затем уже выполнять сборку

Код: Выделить всё

cmake .
make -j$(nproc)
Если не используется переменная окружения для токена, то функцию для возврата переменной окружения getenv() из кода проекта удалить

Установка переменной окружения:

Код: Выделить всё

export TELEGRAM_BOT_TOKEN=token
тогда функция getenv() будет в коде проекта выглядеть так

Код: Выделить всё

getenv(TELEGRAM_BOT_TOKEN)
или в код проекта можно вставить проверку наличия соответствующей переменной окружения

Код: Выделить всё

    const char* tokenEnv = getenv(TELEGRAM_BOT_TOKEN);
    if (tokenEnv == nullptr) {
        std::cerr << "Error: Environment variable TELEGRAM_BOT_TOKEN not set." << std::endl;
        return 1; // Возвращаем код ошибки
    }

В проект подключить заголовочный файл <iostream> ввода-вывода потока

Код: Выделить всё

#include <iostream>
ya
^-^
Сообщения: 2595
Зарегистрирован: 16 дек 2021, 19:56

Re: телеграм-бот

Сообщение ya »

/bin/bash

Код: Выделить всё

sudo make install
После того как бот будет протестирован, можно его сделать демоном и включить в автозапуск
пост по сабжу: автозапуск autorun1
ya
^-^
Сообщения: 2595
Зарегистрирован: 16 дек 2021, 19:56

Re: телеграм-бот

Сообщение ya »

Для подключения к базе данных MySQL (mariadb) добавить в CMakeLists.txt

Код: Выделить всё

#MySQL
# Добавьте include директорию
target_include_directories(имя_проекта PRIVATE /usr/include/mariadb/mysql)
# Укажите путь к библиотекам (если необходимо)
target_link_directories(имя_проекта PRIVATE /usr/lib/mysql)
# Линковка библиотек
target_link_libraries(имя_проекта
    mariadb
    mysqlcppconn
    mysqlclient_r
    pthread
)
"имя_проекта" в CMakeLists.txt замените на своё, как указано в строке project(имя_проекта)

сборка проекта

Код: Выделить всё

#!/bin/bash

make clean
cmake .
make -j$(nproc)
пост по сабжу: Подключение к базе данных MySQL (библиотека mariadb.hpp)
ya
^-^
Сообщения: 2595
Зарегистрирован: 16 дек 2021, 19:56

Re: телеграм-бот

Сообщение ya »

Telegram bot powered by C++ | Бот для наблюдения за курсом валют | Currency monitoring Telegram bot
https://www.youtube.com/watch?v=dwij9ZytWbQ
ya
^-^
Сообщения: 2595
Зарегистрирован: 16 дек 2021, 19:56

Re: телеграм-бот

Сообщение ya »

Код: Выделить всё

~/cpp-telegram/tgbot-cpp/samples/echobot-submodule/
├── CMakeLists.txt
└── tgbot-cpp/  (скопированная папка)
cmake .
ya
^-^
Сообщения: 2595
Зарегистрирован: 16 дек 2021, 19:56

Re: телеграм-бот

Сообщение ya »

https://tdlib.github.io/telegram-bot-api/build.html?os=Linux

su -
apt-get update
apt-get upgrade
apt-get install make git zlib1g-dev libssl-dev gperf cmake g++
exit
git clone --recursive https://github.com/tdlib/telegram-bot-api.git
cd telegram-bot-api
rm -rf build
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX:PATH=.. ..
cmake --build . --target install
cd ../..

# Важно: Получите токен вашего бота из @BotFather
# в Telegram.
TOKEN="YOUR_BOT_TOKEN"

# Создайте файл main.cpp:
cat << EOF > main.cpp
#include <iostream>
#include <fstream>
#include <string>

#include <telegram-bot-api/telegram-bot-api.h>

int main() {
telegram::Bot bot(TOKEN);

bot.getUpdates([&bot](const telegram::Update& update) {
if (update.message) {
std::cout << "Получено сообщение: " << update.message->text << std::endl;
bot.sendMessage(update.message->chat_id, "Привет!");
}
});

return 0;
}
EOF

# Скомпилируйте бота:
g++ -std=c++11 -I/path/to/telegram-bot-api/include -o telegram_bot main.cpp -L/path/to/telegram-bot-api/lib -ltgbot

# Замените `/path/to/telegram-bot-api` на фактический путь к вашей папке.
# Запустите бота:
./telegram_bot
ya
^-^
Сообщения: 2595
Зарегистрирован: 16 дек 2021, 19:56

Re: телеграм-бот

Сообщение ya »

Код: Выделить всё

mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
cmake --build .
ya
^-^
Сообщения: 2595
Зарегистрирован: 16 дек 2021, 19:56

Re: телеграм-бот

Сообщение ya »

https://github.com/baderouaich/tgbotxx

Код: Выделить всё

git clone https://github.com/baderouaich/tgbotxx
cd tgbotxx
cmake .. -DCMAKE_BUILD_TYPE=Release
make
sudo make install 
# On Windows run `make install` as administrator 
ya
^-^
Сообщения: 2595
Зарегистрирован: 16 дек 2021, 19:56

Re: телеграм-бот

Сообщение ya »

https://github.com/reo7sp/tgbot-cpp

список методов для отправки и редактирования сообщений в чате bot.getApi()
http://reo7sp.github.io/tgbot-cpp/class_tg_bot_1_1_api.html


sendMessage - отправка сообщения в чат message->chat->id и кнопок навигации keyboard в чате:

Код: Выделить всё

bot.getApi().sendMessage(message->chat->id, response, nullptr, nullptr, keyboard, "Markdown");
sendVideo - отправка видео в чат

Код: Выделить всё

bot.getApi().sendVideo(message->chat->id, InputFile::fromFile(videoFilePath, videoMimeType));
sendPhoto отправка фото в чат

Код: Выделить всё

bot.getApi().sendPhoto(message->chat->id, InputFile::fromFile(photoFilePath, photoMimeType));
editMessageReplyMarkup - удалит кнопки навигации в сообщении, если они ранее были отправлены при нажатии пользователем на определённую кнопку, в данном случае кнопку "check" или кнопку "leto"

Код: Выделить всё

    bot.getEvents().onCallbackQuery([&bot, &keyboard](CallbackQuery::Ptr query) {
        if (StringTools::startsWith(query->data, "check")) {
            string response = "обратное событие check";
			//query->message->text;
			bot.getApi().editMessageReplyMarkup(query->message->chat->id, query->message->messageId);
            //bot.getApi().sendMessage(query->message->chat->id, response, nullptr, nullptr, keyboard, "Markdown");
        }
        if (StringTools::startsWith(query->data, "leto")) {
            string response = "обратное событие leto";
			bot.getApi().editMessageReplyMarkup(query->message->chat->id, query->message->messageId);
            //bot.getApi().sendMessage(query->message->chat->id, response, nullptr, nullptr, keyboard, "Markdown");
        }
    });
список слушателей событий bot.getEvents() происходящих в чате
http://reo7sp.github.io/tgbot-cpp/class_tg_bot_1_1_event_broadcaster.html

onAnyMessage - слушает любое сообщение, которое прислал пользователь

Код: Выделить всё

    bot.getEvents().onAnyMessage([&bot](Message::Ptr message) {
        printf("User wrote %s\n", message->text.c_str());
        if (StringTools::startsWith(message->text, "/start")) {
            return;
        }
        //bot.getApi().sendMessage(message->chat->id, u8"Your message is: " + message->text);
    });
onCallbackQuery - слушает кнопки навигации, которую нажал пользователь в чате
в данном случае, если отправлена кнопка с якорем "check", от оправляет сообщение "ok" пользователю вместе с кнопками навигации keyboard

Код: Выделить всё

    bot.getEvents().onCallbackQuery([&bot, &keyboard](CallbackQuery::Ptr query) {
        if (StringTools::startsWith(query->data, "check")) {
            string response = "ok";
            bot.getApi().sendMessage(query->message->chat->id, response, nullptr, nullptr, keyboard, "Markdown");
        }
    });
onCommand - слушает конкретную команду, которую отправил пользователь, в данном случае слушает команду "/photo"

Код: Выделить всё

    bot.getEvents().onCommand("photo", [&bot, &photoFilePath, &photoMimeType](Message::Ptr message) {
        bot.getApi().sendPhoto(message->chat->id, InputFile::fromFile(photoFilePath, photoMimeType));
    });
ya
^-^
Сообщения: 2595
Зарегистрирован: 16 дек 2021, 19:56

Re: телеграм-бот

Сообщение ya »

ya
^-^
Сообщения: 2595
Зарегистрирован: 16 дек 2021, 19:56

Re: телеграм-бот

Сообщение ya »

Плагин подсветки текста разных языков программирования для телеграм-бота
https://github.com/TelegramMessenger/libprisma#supported-languages

Стиль MarkdownV2
https://core.telegram.org/bots/api#formatting-options
Чтобы использовать этот режим, передайте MarkdownV2 в поле parse_mode. В сообщении используйте следующий синтаксис:

Код: Выделить всё

*bold \*text*
_italic \*text_
__underline__
~strikethrough~
||spoiler||
Любой символ с кодом от 1 до 126 включительно может быть экранирован в любом месте с помощью предшествующего символа „\“, в этом случае он рассматривается как обычный символ, а не часть разметки. Это означает, что символ „\“ обычно должен быть экранирован предшествующим символом „\“.
Внутри сущностей pre и кода все символы „`“ и „\“ должны быть экранированы предшествующим символом „\“.
Внутри (...) части инлайн-ссылки и пользовательского определения эмодзи все символы „)“ и „\“ должны быть экранированы предшествующим символом „\“.
Во всех остальных местах символы „_“, „*“, „[“, „]“, „(“, „)“, „~“, „`“, „>“, „#“, „+“, „-“, „=“, „|“, „{“, „}“, „.“, „!“ должны быть экранированы предшествующим символом „\“.
В случае неоднозначности между курсивными и подчеркивающими сущностями __ всегда рассматривается слева направо как начало или конец подчеркивающей сущности, поэтому вместо ___италического подчеркивания___ используйте ___италическое подчеркивание_**__, добавив пустую полужирную сущность в качестве разделителя.
В качестве альтернативного значения для пользовательского эмодзи должен быть указан допустимый эмодзи. Этот эмодзи будет показан вместо пользовательского в местах, где пользовательский эмодзи не может быть показан (например, в системных уведомлениях), или если сообщение пересылается не премиум-пользователем. Рекомендуется использовать эмодзи из поля эмодзи пользовательского стикера эмодзи.
Пользовательские сущности emoji могут использоваться только ботами, которые приобрели дополнительные имена пользователей на Fragment.

Стиль HTML
Чтобы использовать этот режим, передайте HTML в поле parse_mode. В настоящее время поддерживаются следующие теги:

Код: Выделить всё

<b>bold</b>, <strong>bold</strong>
<i>italic</i>, <em>italic</em>
<u>underline</u>, <ins>underline</ins>
<s>strikethrough</s>, <strike>strikethrough</strike>, <del>strikethrough</del>
<span class="tg-spoiler">spoiler</span>, <tg-spoiler>spoiler</tg-spoiler>
<b>bold <i>italic bold <s>italic bold strikethrough <span class="tg-spoiler">italic bold strikethrough spoiler</span></s> <u>underline italic bold</u></i> bold</b>
<a href="http://www.example.com/">inline URL</a>
<a href="tg://user?id=123456789">inline mention of a user</a>
<tg-emoji emoji-id="5368324170671202286">👍</tg-emoji>
<code>inline fixed-width code</code>
<pre>pre-formatted fixed-width code block</pre>
<pre><code class="language-python">pre-formatted fixed-width code block written in the Python programming language</code></pre>
<blockquote>Block quotation started\nBlock quotation continued\nThe last line of the block quotation</blockquote>
<blockquote expandable>Expandable block quotation started\nExpandable block quotation continued\nExpandable block quotation continued\nHidden by default part of the block quotation started\nExpandable block quotation continued\nThe last line of the block quotation</blockquote>
Обратите внимание:

В настоящее время поддерживаются только вышеуказанные теги.
Все символы <, > и &, которые не являются частью тега или HTML-сущности, должны быть заменены на соответствующие HTML-сущности (< на &lt;, > на &gt; и & на &amp;).
Поддерживаются все числовые сущности HTML.
В настоящее время API поддерживает только следующие именованные HTML-сущности: &lt;, &gt;, &amp; и &quot;.
Используйте вложенные теги pre и code, чтобы определить язык программирования для сущности pre.
Язык программирования не может быть указан для отдельных тегов code.
В качестве содержимого тега tg-emoji должен быть использован правильный эмодзи. Эмодзи будет показан вместо пользовательского эмодзи в местах, где пользовательский эмодзи не может быть показан (например, в системных уведомлениях), или если сообщение пересылается не премиум-пользователем. Рекомендуется использовать эмодзи из поля эмодзи пользовательского стикера эмодзи.
Пользовательские сущности emoji могут использоваться только ботами, которые приобрели дополнительные имена пользователей на Fragment.

Стиль Markdown
Это устаревший режим, сохраненный для обратной совместимости. Чтобы использовать этот режим, передайте Markdown в поле parse_mode. В сообщении используйте следующий синтаксис:

Код: Выделить всё

*bold text*
_italic text_
[inline URL](http://www.example.com/)
[inline mention of a user](tg://user?id=123456789)
`inline fixed-width code`
```
pre-formatted fixed-width code block
```
```python
pre-formatted fixed-width code block written in the Python programming language
```
Обратите внимание:

Сущности не должны быть вложенными, вместо этого используйте режим разбора MarkdownV2.
Нет возможности указать сущности «underline», «strikethrough», «spoiler», «blockquote», „expandable_blockquote“ и «custom_emoji», используйте режим разбора MarkdownV2.
Чтобы избежать символов „_“, „*“, „`“, „[“ вне сущности, добавьте перед ними символ „\“.
Экранирование внутри сущностей не разрешено, поэтому сущность должна быть сначала закрыта, а затем снова открыта: используйте _snake_\__case_ для курсивного змеиного_корпуса и *2*\**2=4* для полужирного 2*2=4.

Платные трансляции
По умолчанию все боты могут транслировать своим пользователям до 30 сообщений в секунду. Разработчики могут увеличить этот лимит, включив платные трансляции в @Botfather - это позволит их боту транслировать до 1000 сообщений в секунду.

Каждое сообщение, транслируемое сверх бесплатного лимита в 30 сообщений в секунду, стоит 0,1 звезды за сообщение и оплачивается с помощью Telegram Stars с баланса бота. Чтобы воспользоваться этой функцией, на балансе бота должно быть не менее 10 000 звезд.

С ботов с увеличенным лимитом плата взимается только за успешно переданные сообщения.

forwardMessage
Используйте этот метод для пересылки сообщений любого типа. Служебные сообщения и сообщения с защищенным содержимым не могут быть пересланы. В случае успеха возвращается отправленное сообщение.
ya
^-^
Сообщения: 2595
Зарегистрирован: 16 дек 2021, 19:56

Re: телеграм-бот

Сообщение ya »

Ответить