Advertisement
Guest User

Untitled

a guest
Mar 3rd, 2019
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.83 KB | None | 0 0
  1. 'use strict';
  2.  
  3.  
  4. const token = '799644371:AAGth5Y8W_Yh8ehILlI9OrqgVlRp0phCp9E';
  5. const Agent = require('socks5-https-client/lib/Agent');
  6. const TelegramBot = require('node-telegram-bot-api');
  7.  
  8. const low = require('lowdb');
  9. const FileSync = require('lowdb/adapters/FileSync');
  10.  
  11. const adapter = new FileSync('db.json');
  12. const db = low(adapter);
  13.  
  14. const fs = require('fs');
  15. const csv = require('csvtojson')
  16.  
  17. const download = require('download');
  18. var request = require('request')
  19. var r = request.defaults({'proxy': 'http://doctordoctorwhu:G3j1ZpU@185.231.244.83:65233'})
  20.  
  21. //download('unicorn.com/foo.jpg').pipe(fs.createWriteStream('dist/foo.jpg'),{proxy:'doctordoctorwhu:G3j1ZpU@185.231.244.83:65233'});
  22.  
  23.  
  24. //const shortid = require('shortid');
  25.  
  26. db.defaults({users: [], anketus: []})
  27. .write();
  28.  
  29. //db.get('users').push()
  30.  
  31. var user = function () {
  32. this.id = 0;
  33. this.name = '';//Имя или Организация
  34. this.for_courousel = []; //Для гугла карусели
  35. this.shown_ankets = [];//просмотренные анкеты
  36. this.messages = [];
  37. this.history = {};
  38. this.search_index = 0;
  39. this.patch = [];
  40. this.buyers = []; //человек и анкета (айди) для продавцов
  41. this.order_id = -1;
  42. this.history_for_messages = 0;
  43.  
  44.  
  45. };
  46.  
  47. function get_users_count() {
  48. return db.get('users').size().value() + 1;
  49. }
  50.  
  51. var anketu = {
  52. id: 0,
  53. order_guys: [], //список претендующих (их айди)
  54. closed: false, //обозначает закрыта или нет.
  55. description: '',
  56. photos: [], //патчи на фоточки
  57. address: []
  58.  
  59. };
  60.  
  61. function is_user_exist(quest_id) {
  62. return !!db.get('users').find({id: quest_id}).value();
  63. }
  64.  
  65. function get_user(quest_id) {
  66. return db.get('users').find({id: quest_id}).value();
  67. }
  68.  
  69.  
  70. const bot = new TelegramBot(token, {
  71. polling: true,
  72. request: {
  73. agentClass: Agent,
  74. agentOptions: {
  75. socksHost: '185.231.244.83',
  76. socksPort: parseInt('65234'),
  77. // If authorization is needed:
  78. socksUsername: 'doctordoctorwhu',
  79. socksPassword: 'G3j1ZpU'
  80. }
  81. }
  82. });
  83.  
  84. // Matches "/echo [whatever]"
  85. bot.onText(/\/echo (.+)/, (msg, match) => {
  86. // 'msg' is the received Message from Telegram
  87. // 'match' is the result of executing the regexp above on the text content
  88. // of the message
  89.  
  90. const chatId = msg.chat.id;
  91. const resp = match[1]; // the captured "whatever"
  92.  
  93. // send back the matched "whatever" to the chat
  94. bot.sendMessage(chatId, resp);
  95. });
  96.  
  97.  
  98. bot.onText(/\/start/, (msg) => {
  99.  
  100. start(msg.chat.id);
  101. //const buffer = fs.readFileSync('D:/Projects/Moor/app/src/node_code/Hans Zimmer - Kung Fu Panda 3 - Po Belongs.mp3');
  102. //const stream = fs.createReadStream('D:/Projects/Moor/app/src/node_code/Hans Zimmer - Kung Fu Panda 3 - Po Belongs.mp3');
  103. //.sendAudio(msg.chat.id, buffer);
  104. });
  105.  
  106.  
  107. bot.on('callback_query', function (msg) {
  108. switch (msg.data) {
  109. case 'need_pet':
  110. var options_search = {
  111. reply_markup: JSON.stringify({
  112. inline_keyboard: [
  113. [{text: 'Ищу по фотке', callback_data: 'search_by_photo'}],
  114. [{text: 'Ищу по описанию', callback_data: 'search_by_text'}],
  115. [{text: 'Аля-тиндер', callback_data: 'search_by_tinder'}],
  116. ]
  117. })
  118. };
  119. console.log("DDS");
  120. bot.sendMessage(msg.from.id, "Как вы хотите искать?", options_search);
  121. break;
  122. case 'want_to_give':
  123. console.log('kokokko');
  124. bot.sendMessage(msg.from.id, "Киньте текст");
  125. db.get('users').find({id: msg.from.id}).assign({'history_for_messages': 2}).write();
  126.  
  127. break;
  128.  
  129. case 'end_of_photo':
  130. db.get('users').find({id: msg.from.id}).assign({'history_for_messages': 0}).write();
  131. var anketa = db.get('users').find({id: msg.from.id}).value().last_unketa;
  132. var photos = db.get('anketus').find({id: anketa}).value().photos;
  133. var descr = db.get('anketus').find({id: anketa}).value().description;
  134.  
  135.  
  136. db.get('users').find({id: msg.from.id}).assign({'last_unketa': -1}).write();
  137. bot.sendMessage(msg.from.id, "Вау! Круто! Анкета заполнена, вот как она выглядит");
  138. //const stream = fs.createReadStream(photos[0]);
  139.  
  140. var last_file = [];
  141. for (var i = 0; i < photos.length; i++) {
  142. last_file.push({type: 'photo', media: fs.readFileSync(photos[i])})
  143. }
  144. bot.sendMediaGroup(msg.from.id, last_file);
  145.  
  146. bot.sendMessage(msg.from.id, 'Описание: \n' + descr);
  147.  
  148.  
  149. break;
  150.  
  151.  
  152. case 'search_by_photo':
  153. bot.sendMessage(msg.from.id, "Скиньте фото, нравящегося вам питомца");
  154. db.get('users').find({id: msg.from.id}).assign({'history_for_messages': 4}).write();
  155. break;
  156. case 'search_by_text':
  157. bot.sendMessage(msg.from.id, "Введите описание");
  158. db.get('users').find({id: msg.from.id}).assign({'history_for_messages': 5}).write();
  159. break;
  160.  
  161. case 'search_by_tinder':
  162. var anketes = db.get('anketus').value();
  163. var index = db.get('users').find({id: msg.from.id}).value().search_index;
  164. var left_right = {
  165. reply_markup: JSON.stringify({
  166. inline_keyboard: [
  167. [{text: 'Выбираю', callback_data: 'tinder_choose'}],
  168. [{text: 'Поехали дальше', callback_data: 'tinder_right'}],
  169. ]
  170. })
  171. };
  172. bot.sendPhoto(msg.from.id, fs.readFileSync(anketes[index].photos[0]), left_right);
  173.  
  174. break;
  175.  
  176. case 'tinder_right':
  177. var index = db.get('users').find({id: msg.from.id}).value().search_index;
  178. index += 1;
  179. db.get('users').find({id: msg.from.id}).assign({search_index:index}).write();
  180. var left_right = {
  181. reply_markup: JSON.stringify({
  182. inline_keyboard: [
  183. [{text: 'Выбираю', callback_data: 'tinder_choose'}],
  184. [{text: 'Поехали дальше', callback_data: 'tinder_right'}],
  185. ]
  186. })
  187. };
  188. bot.sendPhoto(msg.from.id, fs.readFileSync(anketes[index].photos[0]), left_right);
  189.  
  190. break;
  191. case 'tinder_choose':
  192. break;
  193.  
  194. }
  195. });
  196.  
  197. function start(id) {
  198.  
  199. if (!is_user_exist(id)) {
  200. bot.sendMessage(id, "Добро пожаловать! ");
  201. bot.sendMessage(id, "Я тут порылся в базе данных и осознал, что вы здесь впервые. Пожалуйста, назовите себя. Можете исопльзовать наименование физ или юр лица.");
  202. var new_user = new user;
  203. console.log(new_user);
  204. new_user.id = id;
  205. new_user.history_for_messages = 1;
  206. db.get('users').push(new_user)
  207. .write();
  208. } else {
  209. bot.sendMessage(id, "Добро пожаловать, " + get_user(id).name);
  210. var start_options = {
  211. reply_markup: JSON.stringify({
  212. inline_keyboard: [
  213. [{text: 'Ищу питомца', callback_data: 'need_pet'}],
  214. [{text: 'Хочу отдать питомца', callback_data: 'want_to_give'}],
  215. ]
  216. })
  217. };
  218. bot.sendMessage(id, "Зачем ты здесь ?", start_options);
  219.  
  220. }
  221.  
  222.  
  223. }
  224.  
  225.  
  226. bot.on('message', (msg) => {
  227. const chatId = msg.chat.id;
  228.  
  229. console.log(chatId);
  230.  
  231. if (is_user_exist(chatId)) {
  232.  
  233. switch (get_user(chatId).history_for_messages) {
  234. case 1:
  235.  
  236. console.log(msg.text);
  237. db.get('users').find({id: chatId}).assign({'name': msg.text}).write();
  238. var start_options = {
  239. reply_markup: JSON.stringify({
  240. inline_keyboard: [
  241. [{text: 'Ищу питомца', callback_data: 'need_pet'}],
  242. [{text: 'Хочу отдать питомца', callback_data: 'want_to_give'}],
  243. ]
  244. })
  245. };
  246. db.get('users').find({id: chatId}).assign({'history_for_messages': 0}).write();
  247.  
  248. bot.sendMessage(chatId, "Зачем ты здесь ?", start_options);
  249.  
  250. break;
  251. case 2:
  252. var new_anketa = Object.assign({}, anketu);
  253. new_anketa.id = db.get('anketus').size().value() + 1;
  254. new_anketa.description = msg.text;
  255. db.get('anketus').push(new_anketa).write();
  256.  
  257. db.get('users').find({id: chatId}).assign({'history_for_messages': 3}).write();
  258.  
  259. bot.sendMessage(chatId, "Время настало для фоток");
  260.  
  261. break;
  262. case 3:
  263. console.log(msg);
  264. //console.log(msg.photo[msg.photo.length - 1]);
  265.  
  266. mkdirp.sync('photos/' + msg.from.id + '/');
  267. var dstring = `https://api.telegram.org/bot` + token + `/getFile?file_id=` + msg.photo[msg.photo.length - 1].file_id;
  268. console.log(dstring);
  269. var patch_photo = 'photos/' + msg.from.id + '/' + msg.photo[msg.photo.length - 1].file_id + '.jpg';
  270. var parent_photo = 'photos/' + msg.from.id + '/';
  271.  
  272. r(dstring, function (error, response, body) {
  273.  
  274. console.log('error:', error); // Print the error if one occurred
  275. console.log('statusCode:', response && response.statusCode); // Print the response status code if a response was received
  276. console.log('body:', body); // Print the HTML for the Google homepage.
  277. var down_string = `https://api.telegram.org/file/bot` + token + `/` + JSON.parse(body).result.file_path;
  278. var anketa_id = db.get('users').find({id: msg.from.id}).value().last_unketa;
  279. console.log(phots);
  280. var phots = db.get('anketus').find({id: anketa_id}).value().photos;
  281. console.log('anketa_1 ' + anketa_id);
  282. console.log(phots);
  283. phots.push(patch_photo);
  284. db.get('anketus').find({id: anketa_id}).assign({'photos': phots}).write();
  285. console.log(down_string)
  286. download(down_string, parent_photo, {
  287. proxy: 'http://doctordoctorwhu:G3j1ZpU@185.231.244.83:65233',
  288. filename: msg.photo[msg.photo.length - 1].file_id + '.jpg'
  289. }).then(data => {
  290. if (data) {
  291. var end_of_photo = {
  292. reply_markup: JSON.stringify({
  293. inline_keyboard: [
  294. [{text: 'Да, закончил', callback_data: 'end_of_photo'}],
  295. [{text: 'Нет, будут ещё', callback_data: '_'}],
  296. ]
  297. })
  298. };
  299. bot.sendMessage(msg.from.id, 'Фотография загружена. будут ещё фотографии ?', end_of_photo)
  300. }
  301. });
  302. //download(down_string,).pipe(fs.createWriteStream(patch_photo));
  303. });
  304. //download(dstring).pipe(fs.createWriteStream('photos/'+msg.from.id+'/'+msg.photo[msg.photo.length-1].file_id+'.jpg'),{proxy:'doctordoctorwhu:G3j1ZpU@185.231.244.83:65233'});
  305.  
  306. break;
  307. case 4:
  308. console.log(msg.photo[msg.photo.length - 1]);
  309. break;
  310. case 5:
  311.  
  312. console.log(msg.text);
  313.  
  314.  
  315. request({url: 'http://127.0.0.1:5000/', qs: {name: msg.text}}, function (err, resp, body) {
  316. console.log(err);
  317. console.log(body);
  318. csv()
  319. .fromFile('train.csv')
  320. .then((jsonObj) => {
  321. console.log(jsonObj);
  322. console.log(jsonObj[JSON.parse(body).id]);
  323. console.log(jsonObj[JSON.parse(body).id].PetID);
  324. bot.sendMessage(chatId, jsonObj[JSON.parse(body).id].toString());
  325. bot.sendPhoto(chatId, fs.readFileSync('train_images/' + jsonObj[JSON.parse(body).id].PetID + '-1.jpg'));
  326. bot.sendPhoto(chatId, fs.readFileSync('train_images/' + jsonObj[JSON.parse(body).id].PetID + '-2.jpg'));
  327. bot.sendPhoto(chatId, fs.readFileSync('train_images/' + jsonObj[JSON.parse(body).id].PetID + '-3.jpg'));
  328.  
  329.  
  330. /**
  331. * [
  332. * {a:"1", b:"2", c:"3"},
  333. * {a:"4", b:"5". c:"6"}
  334. * ]
  335. */
  336. })
  337. });
  338.  
  339.  
  340. break;
  341.  
  342.  
  343. }
  344. }
  345. // send a message to the chat acknowledging receipt of their message
  346. }) //bot.sendMessage(chatId, 'Received your message');
  347.  
  348.  
  349. console.log('launched');
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement