Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <exception>
- #include <cstdlib>
- #include "BLCMRRbot.h"
- Userdata data;
- void BLCMRRbot::SignUp(CallbackQuery::Ptr query) {
- stage = "Sign up";
- stageflag = 1;
- response = messenger.GetSignUpNameMessage();
- bot->getApi().sendMessage(query->message->chat->id, response);
- }
- void BLCMRRbot::StepBack(CallbackQuery::Ptr query) {
- response = messenger.SignUpResp[stageflag];
- // Если стадия 5 регистрации - прием фотографий, то выводим для нее соотвествующее меню.
- if (stageflag == 5) {
- bot->getApi().sendMessage(query->message->chat->id, response, false, 0, keyboard.GetStopKeyboard(), "Markdown");
- } else if (stageflag > 0) {
- // Если стадия 1 регистрации - запрос имени, то выводим соотвествующее сообщение.
- if (stageflag == 1) {
- bot->getApi().sendMessage(query->message->chat->id, response);
- stageflag++;
- } else {
- bot->getApi().sendMessage(query->message->chat->id, response, false, 0, keyboard.GetIntervalKeyboard(), "Markdown");
- }
- stageflag--;
- // Иначе выводим приветсвие
- } else {
- bot->getApi().sendMessage(query->message->chat->id, response, false, 0, keyboard.GetWelcomeMenuKeyboard(), "Markdown");
- }
- }
- void BLCMRRbot::Exit(CallbackQuery::Ptr query) {
- if (stage == "Sign Up") {
- response = "Вы уверены, что хотите закончить регистрацию?";
- bot->getApi().sendMessage(query->message->chat->id, response, false, 0, keyboard.GetMakeSolutionKeyboard(), "Markdown");
- } else if (stage == "Login") {
- response = "Вы уверены, что хотите выйти?";
- bot->getApi().sendMessage(query->message->chat->id, response, false, 0, keyboard.GetMakeSolutionKeyboard(), "Markdown");
- }
- }
- void BLCMRRbot::Yes(CallbackQuery::Ptr query) {
- if (stage == "Login") {
- stageflag = 0;
- photocount = 0;
- stage = "";
- // ToDo затереть ChatId
- response = "Вы вышли из учетной записи. Введите /start, чтобы войти или зарегестрироваться.";
- bot->getApi().sendMessage(query->message->chat->id, response);
- } else if (stage == "Delete user") {
- stageflag = 0;
- photocount = 0;
- stage = "";
- response = "Мы уважаем ваше решение!";
- bot->getApi().sendMessage(query->message->chat->id, response);
- // ToDo затереть пользователя в БД
- }
- }
- void BLCMRRbot::No(CallbackQuery::Ptr query) {
- if (stage == "Login") {
- Login(query);
- } else if (stage == "Delete user") {
- Login(query);
- }
- }
- void BLCMRRbot::DeleteUser(CallbackQuery::Ptr query) {
- if (stage == "Login") {
- stage = "Delete user";
- response = messenger.GetDeleteUserMessage();
- bot->getApi().sendMessage(query->message->chat->id, response, false, 0, keyboard.GetMakeSolutionKeyboard(), "Markdown");
- }
- }
- void BLCMRRbot::Stop(CallbackQuery::Ptr query) {
- response = messenger.GetPhotoCheckMessage();
- stageflag++;
- photocount = 0;
- bot->getApi().sendMessage(query->message->chat->id, response, false, 0, keyboard.GetSetupKeyboard(), "Markdown");
- }
- void BLCMRRbot::SignUp(Message::Ptr message) {
- // Стадия получения имени
- if (stageflag == 1) {
- data.Name = message->text;
- std::string response = "Приятно познакомиться, " + message->text + ". " + messenger.GetSignUpLoginMessage();
- bot->getApi().sendMessage(message->chat->id, response, false, 0, keyboard.GetIntervalKeyboard(), "Markdown");
- stageflag++;
- // Стадия получения логина
- } else if (stageflag == 2) {
- if (database.ChekLogin(message->text)) {
- data.Login = message->text;
- response = messenger.GetSignUpPasswordMessage();
- bot->getApi().sendMessage(message->chat->id, response, false, 0, keyboard.GetIntervalKeyboard(),"Markdown");
- stageflag++;
- } else {
- response = "Такой логин уже занят! Введите новый.";
- bot->getApi().sendMessage(message->chat->id, response, false, 0, keyboard.GetIntervalKeyboard(),"Markdown");
- }
- // Стадия получения пороля
- } else if (stageflag == 3) {
- if (message->text.length() >= 8) {
- data.Password = message->text;
- response = messenger.GetSignUpCheckPasswordMessage();
- bot->getApi().sendMessage(message->chat->id, response, false, 0, keyboard.GetIntervalKeyboard(),"Markdown");
- stageflag++;
- } else {
- response = "Пароль слишком простой, введите новый";
- bot->getApi().sendMessage(message->chat->id, response, false, 0, keyboard.GetIntervalKeyboard(),"Markdown");
- }
- // Стадия проверки пороля
- } else if (stageflag == 4) {
- if (message->text == data.Password) {
- response = messenger.GetSignUpEndMessage();
- bot->getApi().sendMessage(message->chat->id, response, false, 0, keyboard.GetStopKeyboard(), "Markdown");
- stageflag++;
- } else {
- response = "неверный пароль, попробуйте еще раз.";
- bot->getApi().sendMessage(message->chat->id, response, false, 0, keyboard.GetIntervalKeyboard(),"Markdown");
- }
- // Стадия приема фотографий
- } else if(stageflag == 5) {
- // ToDo: достать Img и отправка файлов на бд
- //photocount++;
- //TgBot::PhotoSize::Ptr photo = message->photo[0];
- //std::string file = bot.getApi().getFile(photo->fileId);
- response = "Фотка пришла";
- bot->getApi().sendMessage(message->chat->id, response, false, 0, keyboard.GetStopKeyboard(), "Markdown");
- // Стадия Выбора интерфейса
- } else if(stageflag == 6) {
- // ToDo: отправка message-id на бд
- database.SetChatId(message->chat->id);
- database.SetData(data);
- photocount = 0;
- response = messenger.GetPhotoCheckMessage();
- bot->getApi().sendMessage(message->chat->id, response, false, 0, keyboard.GetSetupKeyboard(), "Markdown");
- }
- }
- void BLCMRRbot::Default(CallbackQuery::Ptr query) {
- stage = "";
- stageflag = 0;
- response = messenger.GetDefautInterfaceMessage();
- data.Intf1 = 1;
- data.Intf2 = 1;
- data.Intf3 = 1;
- database.SetIntf(database.GetLogin(query->message->chat->id), 1, 1);
- database.SetIntf(database.GetLogin(query->message->chat->id), 2, 1);
- database.SetIntf(database.GetLogin(query->message->chat->id), 3, 1);
- bot->getApi().sendMessage(query->message->chat->id, response);
- Login(query);
- }
- void BLCMRRbot::Custom(CallbackQuery::Ptr query) {
- stage = "";
- stageflag = 0;
- response = messenger.GetCustomInterfaceMessage();
- bot->getApi().sendMessage(query->message->chat->id, response, false, 0, keyboard.GetCustomInterfaceKeyboard(), "Markdown");
- }
- void BLCMRRbot::Login(CallbackQuery::Ptr query) {
- // ToDo проверка chat-id, если его нет в бд, то запросить логин и пароль
- if (database.)
- response = messenger.GetLoginInputMessage();
- stage = "Login";
- stageflag = 1;
- bot->getApi().sendMessage(query->message->chat->id, response, false, 0, keyboard.GetLoginKeyboard(), "Markdown");
- }
- void BLCMRRbot::Interface(CallbackQuery::Ptr query) {
- response = messenger.GetSetInterfaceMessage();
- bot->getApi().sendMessage(query->message->chat->id, response, false, 0, keyboard.GetSetupKeyboard(), "Markdown");
- }
- void BLCMRRbot::Run() {
- bot->getEvents().onCallbackQuery([this](CallbackQuery::Ptr query) {
- if ((StringTools::startsWith(query->data, "Sign Up") && (stage == ""))) {
- SignUp(query);
- } else if (StringTools::startsWith(query->data, "Back")) {
- StepBack(query);
- } else if (StringTools::startsWith(query->data, "Exit")) {
- Exit(query);
- } else if (StringTools::startsWith(query->data, "Stop")) {
- Stop(query);
- } else if (StringTools::startsWith(query->data, "Default")) {
- Default(query);
- } else if (StringTools::startsWith(query->data, "Custom")) {
- Custom(query);
- } else if ((StringTools::startsWith(query->data, "Login")) && (stage == "")) {
- Login(query);
- } else if ((StringTools::startsWith(query->data, "Interface")) && (stage == "Login")) {
- Interface(query);
- } else if (StringTools::startsWith(query->data, "Yes")) {
- Yes(query);
- } else if (StringTools::startsWith(query->data, "No")) {
- No(query);
- } else if (StringTools::startsWith(query->data, "Delete user")) {
- DeleteUser(query);
- }
- });
- bot->getEvents().onAnyMessage([this](Message::Ptr message) {
- if (stage == "Sign up") {
- SignUp(message);
- } else if (stage == "Send message") {
- //Login();
- }
- });
- bot->getEvents().onCommand("start", [this](Message::Ptr message) {
- std::string response = messenger.GetWelcomeMessage();
- bot->getApi().sendMessage(message->chat->id, response, false, 0, keyboard.GetWelcomeMenuKeyboard(), "Markdown");
- });
- signal(SIGINT, [](int s) {
- printf("SIGINT got\n");
- exit(0);
- });
- try {
- printf("Bot username: %s\n", bot->getApi().getMe()->username.c_str());
- bot->getApi().deleteWebhook();
- TgLongPoll longPoll(*bot);
- while (true) {
- printf("Long poll started\n");
- longPoll.start();
- }
- } catch (std::exception& e) {
- printf("error: %s\n", e.what());
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement