Обновлен banana.

This commit is contained in:
Kirill Kirilenko 2022-11-22 23:36:44 +03:00
parent c9a587f1b7
commit ae73c267d4
8 changed files with 21 additions and 25 deletions

2
external/banana vendored

@ -1 +1 @@
Subproject commit 787d34ea6f616d3a37a09c7262c07d0ff1f0bef4 Subproject commit e8cf5d31b6bb338ad6166abe5077c174901182da

View file

@ -51,8 +51,7 @@ void Bot::notifyUser(UserId userId,
"{}\n" "{}\n"
"Дата: {} {}\n", "Дата: {} {}\n",
caseNumber, caseUrl, item.status, item.date, item.time); caseNumber, caseUrl, item.status, item.date, item.time);
banana::api::send_message(agent_, {.chat_id = userId, .text = message, .parse_mode = "markdown"}, banana::api::send_message(agent_, {.chat_id = userId, .text = message, .parse_mode = "markdown"});
[](const auto&) {});
} }
void Bot::getUpdates() void Bot::getUpdates()

View file

@ -29,7 +29,7 @@ private:
LocalStorage& storage_; LocalStorage& storage_;
bool& terminationFlag_; bool& terminationFlag_;
banana::agent::beast_callback agent_; banana::agent::beast_async_monadic agent_;
std::int64_t updatesOffset_ = 0; std::int64_t updatesOffset_ = 0;
std::map<banana::integer_t, BotSession> sessions_; std::map<banana::integer_t, BotSession> sessions_;
}; };

View file

@ -7,7 +7,7 @@
#include <banana/api.hpp> #include <banana/api.hpp>
#include <fmt/core.h> #include <fmt/core.h>
BotSession::BotSession(banana::agent::beast_callback& agent, BotSession::BotSession(banana::agent::beast_async_monadic& agent,
banana::integer_t userId, banana::integer_t userId,
LocalStorage& storage) LocalStorage& storage)
: agent_(agent), userId_(userId), storage_(storage) : agent_(agent), userId_(userId), storage_(storage)

View file

@ -14,7 +14,9 @@ class Dialog;
class BotSession final class BotSession final
{ {
public: public:
BotSession(banana::agent::beast_callback& agent, banana::integer_t userId, LocalStorage& storage); BotSession(banana::agent::beast_async_monadic& agent,
banana::integer_t userId,
LocalStorage& storage);
~BotSession(); ~BotSession();
void processMessage(const banana::api::message_t& message); void processMessage(const banana::api::message_t& message);
@ -30,7 +32,7 @@ private:
void processStartCommand(); void processStartCommand();
void processStopCommand(); void processStopCommand();
banana::agent::beast_callback& agent_; banana::agent::beast_async_monadic& agent_;
banana::integer_t userId_; banana::integer_t userId_;
LocalStorage& storage_; LocalStorage& storage_;
std::unique_ptr<Dialog> activeDialog_; std::unique_ptr<Dialog> activeDialog_;

View file

@ -14,12 +14,12 @@ namespace statechart = boost::statechart;
template <class MostDerived, class InitialState> template <class MostDerived, class InitialState>
struct StateMachine : public statechart::state_machine<MostDerived, InitialState> struct StateMachine : public statechart::state_machine<MostDerived, InitialState>
{ {
explicit StateMachine(banana::agent::beast_callback& agent, banana::integer_t userId) explicit StateMachine(banana::agent::beast_async_monadic& agent, banana::integer_t userId)
: agent(agent), userId(userId) : agent(agent), userId(userId)
{ {
} }
banana::agent::beast_callback& agent; banana::agent::beast_async_monadic& agent;
banana::integer_t userId; banana::integer_t userId;
}; };

View file

@ -32,7 +32,9 @@ struct SubscriptionConfirmed : statechart::event<SubscriptionConfirmed> { };
struct SubscribeCaseStateMachine : StateMachine<SubscribeCaseStateMachine, WaitingForInput> struct SubscribeCaseStateMachine : StateMachine<SubscribeCaseStateMachine, WaitingForInput>
{ {
SubscribeCaseStateMachine(banana::agent::beast_callback& agent, long userId, LocalStorage& storage) SubscribeCaseStateMachine(banana::agent::beast_async_monadic& agent,
long userId,
LocalStorage& storage)
: StateMachine(agent, userId), storage(storage) : StateMachine(agent, userId), storage(storage)
{ {
} }
@ -52,7 +54,7 @@ struct WaitingForInput : State<WaitingForInput, SubscribeCaseStateMachine>
auto& machine = context<SubscribeCaseStateMachine>(); auto& machine = context<SubscribeCaseStateMachine>();
std::string text = "Введите номер дела..."; std::string text = "Введите номер дела...";
banana::api::send_message(machine.agent, banana::api::send_message(machine.agent,
{.chat_id = machine.userId, .text = std::move(text)}, [](auto) {}); {.chat_id = machine.userId, .text = std::move(text)});
} }
statechart::result react(const NewMessageEvent& event) statechart::result react(const NewMessageEvent& event)
@ -70,8 +72,8 @@ struct WaitingForInput : State<WaitingForInput, SubscribeCaseStateMachine>
std::string text = std::string text =
"Некорректный формат номера дела!\n" "Некорректный формат номера дела!\n"
"Попробуйте еще раз."; "Попробуйте еще раз.";
banana::api::send_message( banana::api::send_message(machine.agent,
machine.agent, {.chat_id = machine.userId, .text = std::move(text)}, [](auto) {}); {.chat_id = machine.userId, .text = std::move(text)});
return discard_event(); return discard_event();
} }
} }
@ -108,8 +110,7 @@ struct GettingCaseDetails : State<GettingCaseDetails, SubscribeCaseStateMachine>
banana::api::send_message( banana::api::send_message(
machine.agent, machine.agent,
{.chat_id = machine.userId, .text = std::move(text), .reply_markup = keyboard}, {.chat_id = machine.userId, .text = std::move(text), .reply_markup = keyboard});
[](auto) {});
post_event(CaseDetailsFetched()); post_event(CaseDetailsFetched());
} }
@ -139,14 +140,8 @@ struct WaitingForConfirmation : State<WaitingForConfirmation, SubscribeCaseState
{ {
if (event.query.message) if (event.query.message)
banana::api::edit_message_reply_markup( banana::api::edit_message_reply_markup(
machine.agent, machine.agent, {.chat_id = event.query.message->chat.id,
{.chat_id = event.query.message->chat.id, .message_id = event.query.message->message_id});
.message_id = event.query.message->message_id},
[](banana::expected<banana::variant_t<banana::api::message_t, banana::boolean_t>> result)
{
if (!result)
LOGE(dialog, result.error());
});
if (*event.query.data == "yes") if (*event.query.data == "yes")
{ {
@ -174,7 +169,7 @@ struct Subscribed : State<Subscribed, SubscribeCaseStateMachine, true>
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
SubscribeCaseDialog::SubscribeCaseDialog(banana::agent::beast_callback& agent, SubscribeCaseDialog::SubscribeCaseDialog(banana::agent::beast_async_monadic& agent,
banana::integer_t userId, banana::integer_t userId,
LocalStorage& storage) LocalStorage& storage)
: Dialog(userId, "SubscribeCase"), : Dialog(userId, "SubscribeCase"),

View file

@ -11,7 +11,7 @@ struct SubscribeCaseStateMachine;
class SubscribeCaseDialog : public Dialog class SubscribeCaseDialog : public Dialog
{ {
public: public:
SubscribeCaseDialog(banana::agent::beast_callback& agent, SubscribeCaseDialog(banana::agent::beast_async_monadic& agent,
banana::integer_t userId, banana::integer_t userId,
LocalStorage& storage); LocalStorage& storage);
~SubscribeCaseDialog() override; ~SubscribeCaseDialog() override;