Closed AndyB117 closed 5 months ago
Здесь параметры передаются в json, а не в query string. Знак = не нужен, как и кавычки, посмотри как в примере идёт работа с packet или в любом месте в библиотеке
Так в примере просто посылается Message. И все.
fb::Packet p = bot.beginPacket(fb::cmd::sendMessage); // Все команды API Telegram доступны в fb::cmd
p.addString(fb::api::text, "message text"); // все ключи объектов API Telegram доступны в fb::api
// p.addInt(fb::api::chat_id, CHAT_ID);
bot.sendPacket(p);
Ладно, пока времени нет, откачусь на другие библиотеки.
я скину пару примеров, сейчас проверяю на железе. Ошибки сервера нет, но и команды не появляются
в общем так
p.beginArr(fb::api::commands);
p.addText(R"(
{"command":"help","description":"Помощь по командам"},
{"command":"info","description":"Информация о настройках"},
{"command":"status","description":"Показания датчиков"},
{"command":"restart","description":"Перезагрзка контроллера"}
)");
p.endArr();
или нативно по одной
p.beginArr(fb::api::commands);
p.beginObj().addString(fb::api::command, "help").addString(fb::api::description, "Помощь по командам").endObj();
p.beginObj().addString(fb::api::command, "info").addString(fb::api::description, "Информация о настройках").endObj();
p.endArr();
Спасибо, сейчас попробую.
работает, но у меня не обновлялись команды пока телегу не перезапустил)
Хм, не появляется. Перезапуск телеги - это перезапуск приложения, очистка и /start в боте по-новом или revoke key?
перезапуск приложения да
вот фрагменте кода
fb::Packet p;
p = bot.beginPacket(fb::cmd::setMyCommands);
p.beginArr(fb::api::commands);
p.addText(R"(
{"command":"help","description":"Помощь по командам"},
{"command":"info","description":"Информация о настройках"},
{"command":"status","description":"Показания датчиков"},
{"command:""tpar","description":"Заданная температура парилки"},
{"command":"restart","description":"Перезагрзка контроллера"}
)");
p.endArr();
// p.addInt(fb::api::chat_id, CHAT_ID);
FB_LOG("" + p.s + "\n");
bot.sendPacket(p, false);
А вот полученный запросзапрос
14:23:31.889 > > GET /botХХХХХХХХ:AAE7PHsaJ7y9gLpIhejA07hn0sOj8MXQ/setMyCommands HTTP/1.1
14:23:31.889 > Host: api.elegram.org
14:23:31.889 > Content-Type: application/json
14:23:31.889 > Content-Length:
14:23:31.889 >
14:23:31.889 > {,"commands":[
14:23:31.889 > {"command":"help","description":"Помощь по командам"},
14:23:31.889 > {"command":"info","description":"Информация о настройках"},
14:23:31.889 > {"command":"status","description":"Показания датчиков"},
14:23:31.889 > {"command:""tpar","description":"Заданная температура парилки"},
14:23:31.889 > {"command":"restart","description":"Перезагрзка контроллера"}
14:23:31.889 > ],
14:23:31.889 > in bot_setup() [src/telegram.cpp : 81]
14:23:31.889 > [ 1106][D][ssl_client.cpp:176] start_ssl_client(): WARNING: Skipping SSL Verification. INSECURE!
14:23:32.147 > {"ok":true,"result":true}
{,"commands":[
Здесь запятая не лишняя?
возможно стоит обновить fastbot2/gson/stringutils до актуальных версий
Сейчас обновил, с Гита. Все тоже. На пару часов отложу тесты, поработать просят )))
так, проблема в
fb::Packet p = bot.beginPacket(fb::cmd::sendMessage);
и
fb::Packet p;
p = bot.beginPacket(fb::cmd::setMyCommands);
второй вариант даёт лишнюю запятую, буду фиксить
нужен gson 1.4.10
Вчера не заработал. Вечером не компилировалось. Сейчас обновился, опять ошибки компиляции In file included from lib/FastBot2/src/VirtualFastBot2.h:17, from lib/FastBot2/src/FastBot2Client.h:4, from lib/FastBot2/src/FastBot2.h:13, from src/telegram.h:5, from src/telegram.cpp:3: lib/FastBot2/src/core/types/Update.h:19:17: error: stray '\320' in program businessСonnection = fbh::api::business_connection, ^ lib/FastBot2/src/core/types/Update.h:19:18: error: stray '\241' in program businessСonnection = fbh::api::business_connection, ^
Четверг, 11 апреля 2024, 4:07 +07:00 от AlexGyver @.>: Мой пример заработал? — Reply to this email directly, view it on GitHub , or unsubscribe . You are receiving this because you authored the thread. Message ID: <GyverLibs/FastBot2/issues/5/2048437024 @ github . com> С уважением, Andy Neverowsky @.
Перебил названия, на которые ругался компилятор. Скомпилировалось. Но меню появляется только после перезапуска телеги.
Четверг, 11 апреля 2024, 4:07 +07:00 от AlexGyver @.>: Мой пример заработал? — Reply to this email directly, view it on GitHub , or unsubscribe . You are receiving this because you authored the thread. Message ID: <GyverLibs/FastBot2/issues/5/2048437024 @ github . com> С уважением, Andy Neverowsky @.
Там 2 ошибки опечатки у тебя в коде. Вместо латинской стоят русские «С» Из патчика понятно.
Четверг, 11 апреля 2024, 4:07 +07:00 от AlexGyver @.>: Мой пример заработал? — Reply to this email directly, view it on GitHub , or unsubscribe . You are receiving this because you authored the thread. Message ID: <GyverLibs/FastBot2/issues/5/2048437024 @ github . com> С уважением, Andy Neverowsky @.
Похоже дело сейчас уже не в боте. Попробовал сделать такой запрос: TELEGRAM_TOKEN=XXXXXX:YYYYYYYYYYYYYYY curl -X POST -H "Content-Type: application/json" -d "{\"commands\":[{\"command\":\"test\",\"description\":\"description with spaces\"}]}" https://api.telegram.org/bot$TELEGRAM_TOKEN/setMyCommands тоже меню появляется, но не сразу, а после загрузки. А вот в методе GET, который используется в FastBot (первом), все появляется сразу. Скорее всего нужно еще что то послать, типа какого-нибудь refresh (telegram API не знаю). Надо будет посмотреть, что там в UniversalTelegramBot. Но это уже после работы и то если успею.
Четверг, 11 апреля 2024, 4:07 +07:00 от AlexGyver @.>: Мой пример заработал? — Reply to this email directly, view it on GitHub , or unsubscribe . You are receiving this because you authored the thread. Message ID: <GyverLibs/FastBot2/issues/5/2048437024 @ github . com> С уважением, Andy Neverowsky @.
Чтоб добить тему. В общем заработал вариант, в котором элементы меню добавляются по одному. fb :: Packet p = bot . beginPacket ( fb :: cmd :: setMyCommands ); p . beginArr ( fb :: api :: commands ); p . beginObj (). addString ( fb :: api :: command , "help" ). addString ( fb :: api :: description , "Помощь по командам" ). endObj (); p . beginObj (). addString ( fb :: api :: command , "info" ). addString ( fb :: api :: description , "Информация о настройках" ). endObj (); p . beginObj (). addString ( fb :: api :: command , "status" ). addString ( fb :: api :: description , "Показания датчиков" ). endObj (); p . beginObj (). addString ( fb :: api :: command , "restart" ). addString ( fb :: api :: description , "Перезагрзка контроллера" ). endObj (); p . endArr (); bot . sendPacket ( p ); Когда сразу все меню добавляется — не заработал. Но есть нюанс, который немного сбил с понталыку. Поскольку изначально меню не появлялось, я в сетапе отправлял приветствие в чат. После запуска бота приходило уведомление на телефон и когда поднимал телефон, то сразу оказывался в чате. Меню не было. Но, если выйти из чата и зайти, то меню появлялось. Убрал приветствие, теперь запускаю бота, захожу в чат — меню на месте. Спс. Это уже рабочий вариант.
Четверг, 11 апреля 2024, 4:07 +07:00 от AlexGyver @.>: Мой пример заработал? — Reply to this email directly, view it on GitHub , or unsubscribe . You are receiving this because you authored the thread. Message ID: <GyverLibs/FastBot2/issues/5/2048437024 @ github . com> С уважением, Andy Neverowsky @.
лол, а у меня не ругается на кириллицу (stray \320). И вот этот работает ок
p.beginArr(fb::api::commands);
p.addText(R"(
{"command":"help","description":"Помощь по командам"},
{"command":"info","description":"Информация о настройках"},
{"command":"status","description":"Показания датчиков"},
{"command":"restart","description":"Перезагрзка контроллера"}
)");
p.endArr();
Странно, на одну русскую С перестал ругаться, а на ту, что lib/FastBot2/src/core/updates.h:22:17: error: stray '\320' in program BusinessСonnection = bit(4), ругается. git pull делал. Приходится самому править. Сравнивал твой пример со своим — визуально отличий не нашел. Тупо скопипастил — работает. Чудеса! Может у меня заполнение табами, а не пробелами было и для raw строк при посылке в http это имеет значение? Забью. Работает — не трож!
Четверг, 11 апреля 2024, 21:06 +07:00 от AlexGyver @.***>: лол, а у меня не ругается на кириллицу (stray \320). И вот этот работает ок p.beginArr(fb::api::commands); p.addText(R"( {"command":"help","description":"Помощь по командам"}, {"command":"info","description":"Информация о настройках"}, {"command":"status","description":"Показания датчиков"}, {"command":"restart","description":"Перезагрзка контроллера"} )"); p.endArr();
— Reply to this email directly, view it on GitHub , or unsubscribe . You are receiving this because you authored the thread. Message ID: <GyverLibs/FastBot2/issues/5/2049774009 @ github . com> С уважением, Andy Neverowsky @.***
да, есть там ещё одна русская) сейчас допишу доку ещё, запушу
В FastBot и UniversalBot использовал
В FastBot2 пытался
и
и
Все равно выдается ошибка от сервера, мол не могу распарсит JSON. А как правильно?