Как сделать бота в Телеграмме на c

В статье представлен код простого телеграмбота, который можно установить на любой линукс-компьютер или роутер. Бот работает через getUpdates, то есть без вебхука.

На устройство нужно установить libopenssl, curl и сертификаты. Если ставите бота на роутер, то чтобы его не загромождать, создайте файл — /etc/ssl/certs/Go_Daddy_Class_2_CA.crt, вот с таким содержимым…

Содержимое

——BEGIN CERTIFICATE—— MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEh MB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBE YWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3 MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkGA1UEBhMCVVMxITAfBgNVBAoTGFRo ZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28gRGFkZHkgQ2xhc3Mg MiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQADggEN ADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCA PVYYYwhv2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6w wdhFJ2+qN1j3hybX2C32qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXi EqITLdiOr18SPaAIBQi2XKVlOARFmR6jYGB0xUGlcmIbYsUfb18aQr4CUWWoriMY avx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmYvLEHZ6IVDd2gWMZEewo+ YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0OBBYEFNLE sNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h /t2oatTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5 IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmlj YXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD ggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wimPQoZ+YeAEW5p5JYXMP80kWNy OO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKtI3lpjbi2Tc7P TMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mER dEr/VxqHD3VILs9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5Cuf ReYNnyicsbkqWletNw+vHX/bvZ8= ——END CERTIFICATE——
Код бота

#include #include #include #define BOT_ADDRESS «https://api.telegram.org/bot803596633:f1thviAAEnIIWOo6zdVcp6wwhQ5-km3UsoY» // тута ваш токен #define GET_METHOD_READ_SIZE 128 #define GET_METHOD_WRITE_SIZE 128 typedef struct < size_t size; char *text; >json_message; //////////////////////////// здесь принимаются сообщения ////////////////////////// size_t read_message(void *raw_message, size_t size, size_t nmemb, void *dest) < size_t real_size = size * nmemb; json_message* dest_message = (json_message*) dest; dest_message->text = realloc(dest_message->text, dest_message->size + real_size + 1); if(dest_message->text == NULL) < printf(«Error: Маловато памяти.n»); return 0; >memcpy(text[dest_message->size]), raw_message, real_size); dest_message->size += real_size; dest_message->text[dest_message->size] = ‘’; return real_size; > ///////////////////// функция нужна curl`у для отправки сообщений///////////////////// size_t emp_function(void *no_use, size_t size, size_t nmemb, void *null) < no_use = no_use; null = null; return size * nmemb; >//////////////////////////// здесь отправляются сообщения ////////////////////////// void sendMessage(char *chat_id) < int result; char GET_write[GET_METHOD_WRITE_SIZE] = ; snprintf(GET_write, GET_METHOD_WRITE_SIZE — 1, «%s/sendMessage?chat_id=%s, BOT_ADDRESS, chat_id); // если отправляете что-то длинное, то увеличить GET_METHOD_WRITE_SIZE printf(«LenGET_write:%d_ENDn», (int)strlen(GET_write)); CURL *write_handle = curl_easy_init(); curl_easy_setopt(write_handle, CURLOPT_URL, GET_write); curl_easy_setopt(write_handle, CURLOPT_WRITEFUNCTION, emp_function); curl_easy_setopt(write_handle, CURLOPT_READDATA, NULL); result = curl_easy_perform(write_handle); curl_easy_cleanup(write_handle); if(result != 0) printf(«nError cURL_2:%dn», result); > /////////////////////////////////////////////////////////////////////////////////// int main() < int result; json_message in_message = ; unsigned long update_id = 0; curl_global_init(CURL_GLOBAL_ALL); char GET_read[GET_METHOD_READ_SIZE] = ; printf(«STARTn»); while (1) < in_message.text = (char*)malloc(1 * sizeof(char)); in_message.text[0] = ‘’; snprintf(GET_read, GET_METHOD_READ_SIZE — 1, «%s/getUpdates?limit=1timeout=10», BOT_ADDRESS, update_id); // обновления каждые 10 секунд (timeout=10) CURL *read_handle = curl_easy_init(); curl_easy_setopt(read_handle, CURLOPT_URL, GET_read); curl_easy_setopt(read_handle, CURLOPT_WRITEFUNCTION, read_message); curl_easy_setopt(read_handle, CURLOPT_WRITEDATA, result = curl_easy_perform(read_handle); curl_easy_cleanup(read_handle); if(result != 0) printf(«nError cURL_1:%dn», result); update_id = 0; /////////////////////////// read update_id /////////////////////////////// char *p = NULL; if((p = strstr(in_message.text, «update_id»:»)) != NULL) < update_id = strtoul(p + 11, NULL, 0); printf(«MYupdate_id:%lu_ENDnn», update_id); >if(update_id != 0) update_id++; /////////////////////////// read chat_id /////////////////////////////// char chat_id[16] = ; if((p = strstr(in_message.text, «chat»: <«id»:»)) != NULL) < memccpy(chat_id, p + 12, ‘,’, 15); chat_id[strlen(chat_id) — 1] = 0; >printf(«MYChat_id:%s_ENDn», chat_id); //////////////////////////// read msag //////////////////////////////// char msg_text[16] = ; // если будут приходить сообщения длинней 15 симв., тогда увеличить буфер. Ну или калок/малок-реалок))) if((p = strstr(in_message.text, «text»:»»)) != NULL) < memccpy(msg_text, p + 7, ‘»‘, 15); msg_text[strlen(msg_text) — 1] = 0; >printf(«Msg_text:%s_ENDn», msg_text); in_message.size = 0; free(in_message.text); ///////////////////////////// my functions //////////////////////////////// if(strstr(msg_text, «w») != NULL) < sendMessage(chat_id); >else if(strstr(msg_text, «/start») != NULL) < printf(«Кто-то нашёл бота.n»); >else printf(«NO_DATAn»); > curl_global_cleanup(); return 0; > // gcc -Wall -Wextra telegramgetup.c -o telegramgetup -lcurl // ./telegramgetup
Makefile для роутера
include $(TOPDIR)/rules.mk PKG_NAME:=telegramgetup PKG_VERSION:=1 PKG_RELEASE:=1 PKG_BUILD_DIR:= $(BUILD_DIR)/$(PKG_NAME) include $(INCLUDE_DIR)/package.mk define Package/telegramgetup SECTION:=utils CATEGORY:=Utilities TITLE:=telegramgetup — Telegramgetup utility DEPENDS:=+libcurl endef define Package/telegramgetup/description telegramgetup — Telegramgetup utility endef define Build/Prepare mkdir -p $(PKG_BUILD_DIR) $(CP) ./src/* $(PKG_BUILD_DIR)/ endef define Build/Compile $(TARGET_CC) $(TARGET_CFLAGS) -c -o $(PKG_BUILD_DIR)/telegramgetup.o $(PKG_BUILD_DIR)/telegramgetup.c $(TARGET_CC) $(TARGET_LDFLAGS) -o $(PKG_BUILD_DIR)/telegramgetup $(PKG_BUILD_DIR)/telegramgetup.o -lcurl endef define Package/telegramgetup/install $(INSTALL_DIR) $(1)/usr/sbin $(INSTALL_BIN) $(PKG_BUILD_DIR)/telegramgetup $(1)/usr/sbin/ endef $(eval $(call BuildPackage,telegramgetup)) // make package/telegramgetup/compile V=s

Еще по теме:  Как зайти в Телеграм если код приходит на почту а ее нету

Как создать Telegram бота на C#

Отправьте боту букву w, он ответит — Reciv ‘w’ OK!

Собственно описывать тут особо нечего, так что на этом всё. Спасибо.

Читать про libcurl тут и тут.

Эта статья опубликована мной на geektimes.

  • 22 февраля 2018, 14:42
  • stD
  • 5994
  • —>

    Поддержать автора

    Задать вопрос по статье

    Известит Вас о новых публикациях

    Источник: istarik.ru

    Телеграм-бот на C++: поиск и установка

    FAQ

    Автор fast12v0_steleg На чтение 3 мин Просмотров 2.9к. Опубликовано 28.02.2020

    Каждый пользователь мессенджера «Телеграм» может захотеть создать или установить собственного бота. Этот процесс своеобразный и требует неких умений. Поговорим об этом подробнее.

    Что такое боты

    Как прописать телеграм-бот на С++

    Боты – запускающие внутри Telegram утилиты. Проще говоря, это отдельные учетные записи, управление которыми выполняется не людьми, а непосредственно программным обеспечением.

    Их назначение

    Телеграм бот на C имеет широкую область применения. Он может общаться, принимать и отправлять сообщения в чат, а также выполнять поступающие команды.

    Все записи кодируются в HTTPS-запросы и обрабатываются bot-алгоритмом.

    Приложение упрощает процесс взаимодействия с пользователем. Робот предоставляет свежую новостную информацию, позволяет осуществлять перевод текста, покупать и продавать товар.

    Категории

    Все bots утилиты для Telegram bot API C можно разделить на ряд категорий, каждая из которых имеет свое применение:

    1. Интеграционные. Интегрируются с другими приложениями. Помощник скачивает информацию с посторонних ресурсов и выкладывает ее в чат.
    2. Расчетные. Осуществляют прием платежей от пользователей мессенджера. Также приложение может работать как виртуальный магазин или является продавцом настроенных платных услуг.
    3. Информационные. Предоставляют информацию о погоде. Данные берутся с прописанного в приложении сервера.
    4. Развлекающие. Telegram бот на C может предложить находящиеся в библиотеке развлечения HTML5, а также ряд развлекательных игр.
    5. Чат-боты. Предоставляют пространство для общения двух собеседников или более лиц. Поддерживает создание группы для беседы по интересам.
    Еще по теме:  Как визуализировать скачанное аудио Телеграм

    Особенности и описание С++

    C++ – популярный язык программирования. Поддерживает ряд парадигм. Имеет выраженную поддержку объектно-ориентированного и обобщенного програм-мирования. Обладает упрощенным api интерфейсом. Используется для создания Tелеграм бот на C.

    Как прописать бот на С

    Создавать Telegram bot C сложно.

    Правила написания телеграм-бота на С++

    1. Запускаем свой мессенджер. Версия приложения и используемый девайс не имеют значения.
    2. В окне поиска каналов пишем BotFather. Нажимаем на найденный файл, жмем кнопку внизу «Запустить».
    3. В предложенном прокси меню находим и кликаем /newbot.
    4. Выбираем имя помощника. Прописываем его в соответствующую графу.
    5. Придумываем и записываем имя пользователя.
    6. Копируем цифровой токен. Эта информация конфиденциальна. Ее распространение посторонним лицам чревато потерей помощника.
    7. Получаем подтверждение от BotFather об установке бота. Проверяем его работоспособность.

    Создание робота завершено. Никакая дополнительная настройка не требуется. Если все было выполнено по примеру, то у вас не должно возникнуть никаких трудностей.

    Преимущества

    Бот Tелеграмм C, созданный на языке программирования C++, обладает рядом преимуществ, к которым можно отнести:

    1. Высокий уровень совместимости с языками Си.
    2. Повышенная вычислительная производительность.
    3. Поддержка большого количества стилей программирования сайта.
    4. Управление константностью объектов.
    5. Доступность пользования благодаря ряду обучающих материалов.
    6. Автоматический вызов деструкторов объектов.
    7. Использование шаблонов С++, позволяющих строить алгоритмы для данных различных типов.
    8. Возможность встраивания дополнительных языков программирования в основной код.
    9. Перегрузка используемых операторов.

    Выводы

    Боты утилиты имеют много функций, позволяющих абоненту мессенджера получать ряд полезной информации без дополнительных усилий. При необходимости можно воспользоваться видео из интернета для создания помощника на языке С++.

    Детальная инструкция видна на видео:

    Источник: stelegram.ru

    Подключение бота к Telegram

    Вы можете настроить взаимодействие бота с другими пользователями с помощью программы для обмена сообщениями Telegram. В этой статье описывается, как создать бот Telegram и подключить его к боту на портале Azure.

    Еще по теме:  Как скачать переписку в ТГ с телефона

    Сведения о том, какие функции поддерживаются на каждом канале, см. в справочной статье о каналах .

    Предварительные требования

    • Учетная запись Azure. Если у вас еще нет подписки Azure, создайте бесплатную учетную запись, прежде чем начать работу.
    • Существующий бот, опубликованный в Azure.
    • Устройство с установленной телеграммой и учетной записью Telegram.

    Создание бота Telegram с помощью BotFather

    Создайте бот Telegram с помощью BotFather перед подключением бота к Telegram.

    Visit Bot Father

    1. Начните новую беседу с BotFather.
    2. Отправить /newbot , чтобы создать бот Telegram.
    3. При появлении запроса введите имя бота.
    4. Присвойте боту Telegram уникальное имя пользователя. Обратите внимание, что имя бота должно заканчиваться словом bot (без учета регистра).
    5. Скопируйте и сохраните маркер доступа бота Telegram для дальнейших действий.

    Настройка Telegram на портале Azure

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

    1. Войдите на портал Azure .
    2. Перейдите к боту. Затем выберите каналы из параметров.
    3. Выберите Telegram в списке доступных каналов.
    4. Введите токен, скопированный ранее в поле маркера доступа , и нажмите кнопку «Применить».

    Теперь бот успешно настроен для взаимодействия с пользователями в Telegram.

    Дополнительные сведения

    Сведения об использовании действий, относящихся к Telegram, в сообщениях см. в статье о реализации функций, относящихся к каналу.

    Источник: learn.microsoft.com

    Рейтинг
    ( Пока оценок нет )
    Загрузка ...