Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 20.01.2025
Сообщений: 4

Прошу помощи разобраться в tgbot-cpp

30.01.2025, 11:24. Показов 10118. Ответов 4

Студворк — интернет-сервис помощи студентам
Пытаюсь реализовать отправку сообщения пользователям по времени. К примеру, когда будет 12:00 - отправлять сообщение с определённым текстом. Я так понимаю sendMessage действует только в определённой области? И само оно не отправится, пока пользователь не напишет какое-либо сообщение? Вот код фрагмента, где я пытаюсь отправить сообщение:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
try {
    printf("Bot username: %s\n", bot.getApi().getMe()->username.c_str());
    TgBot::TgLongPoll longPoll(bot);
    while (true) {
        time_t ttime = time(0);
        tm* local_time = localtime(&ttime);
        if (local_time->tm_hour == 10 && local_time->tm_min == 57) {
            printf("Report send in\n" + local_time->tm_hour + local_time->tm_min);
            bot.getApi().sendMessage(IdUser, u8"Онович?");
        }
        longPoll.start();
    }
}
catch (TgBot::TgException& e) {
    printf("error: %s\n", e.what());
}
При достижении времени отправки сообщения в консоль выводится - chat not found. (IdUser - глобальная переменная и там указан ID админа)
Спасибо за ранее!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.01.2025, 11:24
Ответы с готовыми решениями:

Прошу помощи разобраться в работе скрипта
set "rez3=" for /f "tokens=1,2" %%m in ('netsh advfirewall firewall show rule name=Close_Port_135_TCP ^| FIND "Включен:" /I') do set...

Не могу разобраться с отладчиком, прошу помощи.
Народ подскажите пожалуйста, второй день туплю...с библиотекой периферии RCC. Настраиваю аналог функции SystemInit(). Предварительно...

Абрамов № 61, 85, 334(а), 374, 67(б,а). Прошу помочь, мне нужны эти задания для зачета прошу помощи.
Прошу помощи, скачайте файл Абрамов (пожалуйста), номер 61, 85, 334(а), 374, 67(а,б). Помочите чем сможете пожалуйста

4
 Аватар для andrey_f
884 / 537 / 228
Регистрация: 21.02.2011
Сообщений: 5,705
30.01.2025, 11:48
Цитата Сообщение от AlexNova4200 Посмотреть сообщение
longPoll.start();
1) блокирует выполнение кода, поэтому ваш цикл проверки времени не будет работать;
2) лучше использовать std::this_thread::sleep_for();
3) вы пытаетесь складывать строки и числа;

Добавлено через 1 минуту
Цитата Сообщение от andrey_f Посмотреть сообщение
лучше использовать std::this_thread::sleep_for()
для ожидания между проверками времени, чтобы не нагружать процессор

Добавлено через 34 секунды
Цитата Сообщение от andrey_f Посмотреть сообщение
вы пытаетесь складывать строки и числа
нужно использовать std::to_string() для конкатенации строк
1
0 / 0 / 0
Регистрация: 20.01.2025
Сообщений: 4
30.01.2025, 12:16  [ТС]
Благодарю за подсказки.
А в каком месте тогда правильнее написать объявление longPoll.start()? Это же функция, которая "прослушивает" бота, а без неё бот просто не реагирует ни на что.

Добавлено через 51 секунду
возможно ли вообще сделать отправку сообщений по таймеру с помощью этой библиотеки?
0
 Аватар для andrey_f
884 / 537 / 228
Регистрация: 21.02.2011
Сообщений: 5,705
30.01.2025, 12:19
Цитата Сообщение от andrey_f Посмотреть сообщение
std::this_thread::sleep_for()
начните пока вот с этого
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    while (true) {
            time_t ttime = time(0);
            tm* local_time = localtime(&ttime);
            if (local_time->tm_hour == 12 && local_time->tm_min == 0) {
                try {
                    printf("Отправка сообщения пользователю в %02d:%02d", local_time->tm_hour, local_time->tm_min);
                    bot.getApi().sendMessage(IdUser, u8"Онович?");
                } catch (TgBot::TgException& e) {
                    printf("Ошибка отправки сообщения: %s", e.what());
                }
                
                // Ждем 60 секунд, чтобы избежать повторной отправки в ту же минуту
                std::this_thread::sleep_for(std::chrono::seconds(60));
            }
            // Ждем 1 секунду перед следующей проверкой
            std::this_thread::sleep_for(std::chrono::seconds(1));
            longPoll.start();
        }
    } catch (TgBot::TgException& e) {
        printf("Ошибка: %s", e.what());
    }
0
0 / 0 / 0
Регистрация: 20.01.2025
Сообщений: 4
30.01.2025, 12:35  [ТС]
Цитата Сообщение от andrey_f Посмотреть сообщение
начните пока вот с этого
пишет Bad request: chat not found.
В консоль выводится по таймеру, но не отправляет сообщение пользователю.
Функция sendMessage именно тут не работает, а когда пользователь отправляет сообщение или команду, то sendMessage всех видит
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.01.2025, 12:35
Помогаю со студенческими работами здесь

С++ Rectangle (cpp 21day) Прошу обьяснить пример
Доброго Всем времени суток. Изучаю С++ по книге "С++ за 21 день" (как уже стало понятно по теме:)) Всё понималось и воспринималось...

Прошу помощи.
посчитать количество только слов в tmemo1.text

Помощи прошу
Как сделать ? String name; getline(cin, name) не получается использовать массив

Прошу помощи
Помогите пожалуйста... необходимо написать прогу, не понимаю как Создайте 2 сценария (top_ten_on_cpu и top_ten_on_mem). Эти сценарии...

Прошу помощи с БД
В общем у меня возникли проблемки при сдаче бд. Я сдавал свою б.д. , показывал Схему данных. Все шло хорошо, но тут моя...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru