Advertisement
Guest User

Untitled

a guest
Dec 17th, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.14 KB | None | 0 0
  1. #include <exception>
  2. #include <cstdlib>
  3.  
  4. #include "BLCMRRbot.h"
  5.  
  6. Userdata data;
  7.  
  8. void BLCMRRbot::SignUp(CallbackQuery::Ptr query) {
  9. stage = "Sign up";
  10. stageflag = 1;
  11. response = messenger.GetSignUpNameMessage();
  12. bot->getApi().sendMessage(query->message->chat->id, response);
  13. }
  14.  
  15.  
  16. void BLCMRRbot::StepBack(CallbackQuery::Ptr query) {
  17. response = messenger.SignUpResp[stageflag];
  18. // Если стадия 5 регистрации - прием фотографий, то выводим для нее соотвествующее меню.
  19. if (stageflag == 5) {
  20. bot->getApi().sendMessage(query->message->chat->id, response, false, 0, keyboard.GetStopKeyboard(), "Markdown");
  21. } else if (stageflag > 0) {
  22. // Если стадия 1 регистрации - запрос имени, то выводим соотвествующее сообщение.
  23. if (stageflag == 1) {
  24. bot->getApi().sendMessage(query->message->chat->id, response);
  25. stageflag++;
  26. } else {
  27. bot->getApi().sendMessage(query->message->chat->id, response, false, 0, keyboard.GetIntervalKeyboard(), "Markdown");
  28. }
  29. stageflag--;
  30. // Иначе выводим приветсвие
  31. } else {
  32. bot->getApi().sendMessage(query->message->chat->id, response, false, 0, keyboard.GetWelcomeMenuKeyboard(), "Markdown");
  33. }
  34. }
  35.  
  36. void BLCMRRbot::Exit(CallbackQuery::Ptr query) {
  37. if (stage == "Sign Up") {
  38. response = "Вы уверены, что хотите закончить регистрацию?";
  39. bot->getApi().sendMessage(query->message->chat->id, response, false, 0, keyboard.GetMakeSolutionKeyboard(), "Markdown");
  40. } else if (stage == "Login") {
  41. response = "Вы уверены, что хотите выйти?";
  42. bot->getApi().sendMessage(query->message->chat->id, response, false, 0, keyboard.GetMakeSolutionKeyboard(), "Markdown");
  43. }
  44.  
  45. }
  46.  
  47. void BLCMRRbot::Yes(CallbackQuery::Ptr query) {
  48. if (stage == "Login") {
  49. stageflag = 0;
  50. photocount = 0;
  51. stage = "";
  52. // ToDo затереть ChatId
  53. response = "Вы вышли из учетной записи. Введите /start, чтобы войти или зарегестрироваться.";
  54. bot->getApi().sendMessage(query->message->chat->id, response);
  55. } else if (stage == "Delete user") {
  56. stageflag = 0;
  57. photocount = 0;
  58. stage = "";
  59. response = "Мы уважаем ваше решение!";
  60. bot->getApi().sendMessage(query->message->chat->id, response);
  61. // ToDo затереть пользователя в БД
  62. }
  63. }
  64.  
  65. void BLCMRRbot::No(CallbackQuery::Ptr query) {
  66. if (stage == "Login") {
  67. Login(query);
  68. } else if (stage == "Delete user") {
  69. Login(query);
  70. }
  71. }
  72.  
  73. void BLCMRRbot::DeleteUser(CallbackQuery::Ptr query) {
  74. if (stage == "Login") {
  75. stage = "Delete user";
  76. response = messenger.GetDeleteUserMessage();
  77. bot->getApi().sendMessage(query->message->chat->id, response, false, 0, keyboard.GetMakeSolutionKeyboard(), "Markdown");
  78. }
  79. }
  80.  
  81. void BLCMRRbot::Stop(CallbackQuery::Ptr query) {
  82. response = messenger.GetPhotoCheckMessage();
  83. stageflag++;
  84. photocount = 0;
  85. bot->getApi().sendMessage(query->message->chat->id, response, false, 0, keyboard.GetSetupKeyboard(), "Markdown");
  86. }
  87.  
  88. void BLCMRRbot::SignUp(Message::Ptr message) {
  89. // Стадия получения имени
  90. if (stageflag == 1) {
  91. data.Name = message->text;
  92. std::string response = "Приятно познакомиться, " + message->text + ". " + messenger.GetSignUpLoginMessage();
  93. bot->getApi().sendMessage(message->chat->id, response, false, 0, keyboard.GetIntervalKeyboard(), "Markdown");
  94. stageflag++;
  95. // Стадия получения логина
  96. } else if (stageflag == 2) {
  97.  
  98. if (database.ChekLogin(message->text)) {
  99. data.Login = message->text;
  100. response = messenger.GetSignUpPasswordMessage();
  101. bot->getApi().sendMessage(message->chat->id, response, false, 0, keyboard.GetIntervalKeyboard(),"Markdown");
  102. stageflag++;
  103. } else {
  104. response = "Такой логин уже занят! Введите новый.";
  105. bot->getApi().sendMessage(message->chat->id, response, false, 0, keyboard.GetIntervalKeyboard(),"Markdown");
  106. }
  107. // Стадия получения пороля
  108. } else if (stageflag == 3) {
  109. if (message->text.length() >= 8) {
  110. data.Password = message->text;
  111. response = messenger.GetSignUpCheckPasswordMessage();
  112. bot->getApi().sendMessage(message->chat->id, response, false, 0, keyboard.GetIntervalKeyboard(),"Markdown");
  113. stageflag++;
  114. } else {
  115. response = "Пароль слишком простой, введите новый";
  116. bot->getApi().sendMessage(message->chat->id, response, false, 0, keyboard.GetIntervalKeyboard(),"Markdown");
  117. }
  118. // Стадия проверки пороля
  119. } else if (stageflag == 4) {
  120. if (message->text == data.Password) {
  121. response = messenger.GetSignUpEndMessage();
  122. bot->getApi().sendMessage(message->chat->id, response, false, 0, keyboard.GetStopKeyboard(), "Markdown");
  123. stageflag++;
  124. } else {
  125. response = "неверный пароль, попробуйте еще раз.";
  126. bot->getApi().sendMessage(message->chat->id, response, false, 0, keyboard.GetIntervalKeyboard(),"Markdown");
  127. }
  128. // Стадия приема фотографий
  129. } else if(stageflag == 5) {
  130. // ToDo: достать Img и отправка файлов на бд
  131. //photocount++;
  132. //TgBot::PhotoSize::Ptr photo = message->photo[0];
  133. //std::string file = bot.getApi().getFile(photo->fileId);
  134. response = "Фотка пришла";
  135. bot->getApi().sendMessage(message->chat->id, response, false, 0, keyboard.GetStopKeyboard(), "Markdown");
  136. // Стадия Выбора интерфейса
  137. } else if(stageflag == 6) {
  138.  
  139. // ToDo: отправка message-id на бд
  140. database.SetChatId(message->chat->id);
  141. database.SetData(data);
  142. photocount = 0;
  143. response = messenger.GetPhotoCheckMessage();
  144. bot->getApi().sendMessage(message->chat->id, response, false, 0, keyboard.GetSetupKeyboard(), "Markdown");
  145. }
  146. }
  147.  
  148.  
  149. void BLCMRRbot::Default(CallbackQuery::Ptr query) {
  150. stage = "";
  151. stageflag = 0;
  152. response = messenger.GetDefautInterfaceMessage();
  153. data.Intf1 = 1;
  154. data.Intf2 = 1;
  155. data.Intf3 = 1;
  156. database.SetIntf(database.GetLogin(query->message->chat->id), 1, 1);
  157. database.SetIntf(database.GetLogin(query->message->chat->id), 2, 1);
  158. database.SetIntf(database.GetLogin(query->message->chat->id), 3, 1);
  159. bot->getApi().sendMessage(query->message->chat->id, response);
  160. Login(query);
  161. }
  162.  
  163. void BLCMRRbot::Custom(CallbackQuery::Ptr query) {
  164. stage = "";
  165. stageflag = 0;
  166. response = messenger.GetCustomInterfaceMessage();
  167. bot->getApi().sendMessage(query->message->chat->id, response, false, 0, keyboard.GetCustomInterfaceKeyboard(), "Markdown");
  168. }
  169.  
  170. void BLCMRRbot::Login(CallbackQuery::Ptr query) {
  171. // ToDo проверка chat-id, если его нет в бд, то запросить логин и пароль
  172. if (database.)
  173. response = messenger.GetLoginInputMessage();
  174. stage = "Login";
  175. stageflag = 1;
  176. bot->getApi().sendMessage(query->message->chat->id, response, false, 0, keyboard.GetLoginKeyboard(), "Markdown");
  177. }
  178.  
  179. void BLCMRRbot::Interface(CallbackQuery::Ptr query) {
  180. response = messenger.GetSetInterfaceMessage();
  181. bot->getApi().sendMessage(query->message->chat->id, response, false, 0, keyboard.GetSetupKeyboard(), "Markdown");
  182. }
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189. void BLCMRRbot::Run() {
  190.  
  191. bot->getEvents().onCallbackQuery([this](CallbackQuery::Ptr query) {
  192. if ((StringTools::startsWith(query->data, "Sign Up") && (stage == ""))) {
  193. SignUp(query);
  194. } else if (StringTools::startsWith(query->data, "Back")) {
  195. StepBack(query);
  196. } else if (StringTools::startsWith(query->data, "Exit")) {
  197. Exit(query);
  198. } else if (StringTools::startsWith(query->data, "Stop")) {
  199. Stop(query);
  200. } else if (StringTools::startsWith(query->data, "Default")) {
  201. Default(query);
  202. } else if (StringTools::startsWith(query->data, "Custom")) {
  203. Custom(query);
  204. } else if ((StringTools::startsWith(query->data, "Login")) && (stage == "")) {
  205. Login(query);
  206. } else if ((StringTools::startsWith(query->data, "Interface")) && (stage == "Login")) {
  207. Interface(query);
  208. } else if (StringTools::startsWith(query->data, "Yes")) {
  209. Yes(query);
  210. } else if (StringTools::startsWith(query->data, "No")) {
  211. No(query);
  212. } else if (StringTools::startsWith(query->data, "Delete user")) {
  213. DeleteUser(query);
  214. }
  215. });
  216.  
  217.  
  218. bot->getEvents().onAnyMessage([this](Message::Ptr message) {
  219. if (stage == "Sign up") {
  220. SignUp(message);
  221. } else if (stage == "Send message") {
  222. //Login();
  223. }
  224. });
  225.  
  226. bot->getEvents().onCommand("start", [this](Message::Ptr message) {
  227. std::string response = messenger.GetWelcomeMessage();
  228. bot->getApi().sendMessage(message->chat->id, response, false, 0, keyboard.GetWelcomeMenuKeyboard(), "Markdown");
  229. });
  230.  
  231. signal(SIGINT, [](int s) {
  232. printf("SIGINT got\n");
  233. exit(0);
  234. });
  235.  
  236. try {
  237. printf("Bot username: %s\n", bot->getApi().getMe()->username.c_str());
  238. bot->getApi().deleteWebhook();
  239. TgLongPoll longPoll(*bot);
  240. while (true) {
  241. printf("Long poll started\n");
  242. longPoll.start();
  243. }
  244. } catch (std::exception& e) {
  245. printf("error: %s\n", e.what());
  246. }
  247.  
  248. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement