· 5 years ago · Jun 15, 2020, 11:32 AM
1var TelegramBot = require('node-telegram-bot-api');
2
3var token = '';
4
5var bot = new TelegramBot(token, { polling: true });
6
7const playersArray = [];
8const maxPlayers = 10;
9
10const sqlite3 = require('sqlite3').verbose();
11const db = new sqlite3.Database(':memory:');
12
13db.serialize(function() {
14 db.run('CREATE TABLE IF NOT EXISTS games (info TEXT, chatId, isActive )');
15 db.run('CREATE TABLE IF NOT EXISTS players (info TEXT, id, username)');
16 db.run(
17 'CREATE TABLE IF NOT EXISTS gamePlayers (info TEXT, gameId, playerId, username, type)'
18 );
19});
20
21const getChatGameQuery =
22 'SELECT * FROM `games` WHERE `chatId` = ? AND isActive = 1';
23
24const getGamePlayerQuery =
25 'SELECT * FROM `games`, `gamePlayers` WHERE `gamePlayers`.`gameId` = `games`.`chatId` AND `gamePlayers`.`gameId` = ? AND `gamePlayers`.`playerId` = ?';
26
27const createChatGameQuery =
28 'INSERT INTO `games` (`chatId`, `isActive`) VALUES (?, 1)';
29
30const createPlayerQuery = 'INSERT INTO `gamePlayers` (`username`) VALUES (?)';
31const setPlayersType = 'UPDATE `gamePlayers` SET `type` = ? WHERE `id` = ?';
32const setPlayersWeapon = 'UPDATE `players` SET `weapon` = ? WHERE `id` = ?';
33const setPlayersLevel = 'UPDATE `players` SET `level` = ? WHERE `id` = ?';
34
35const createGamePlayerLink =
36 'INSERT INTO `gamePlayers` (`gameId`, `playerId`, `username`) VALUES (?, ?, ?)';
37
38bot.onText(/\/go/, function(msg) {
39 const { chat, from } = msg;
40 const username = from.first_name + ' ' + from.last_name;
41 db.get(getChatGameQuery, [chat.id], function(error, row) {
42 if (error) {
43 return;
44 }
45 if(row === undefined){
46 db.run(createChatGameQuery, [chat.id]);
47 }else{}
48 });
49
50 db.get(getGamePlayerQuery, [chat.id, from.id], function
51 (error, row) {
52 if (error) {
53 return;
54 }
55 if(row === undefined){
56 db.run(createGamePlayerLink, [chat.id, from.id, username]);
57 db.get(getGamePlayerQuery, [chat.id, from.id], function(row){
58 bot.sendMessage(chat.id, username + ' вы зарегались');
59 });
60 }else{
61 bot.sendMessage(chat.id, 'вы уже зарегистрированы' + username);
62 }
63 });
64
65/* if (gamePlayer.type !== null) {
66 // не выбран тип
67 // спрашиваем насчёт типа
68 return;
69 }
70
71 if (gamePlayer.weapon !== null) {
72 // не выбрано оружие
73 // спрашиваем насчёт оружия
74 return;
75 }*/
76});
77bot.onText(/\/g/, function(msg) {
78 db.each('SELECT rowid AS id, playerId, gameId FROM gamePlayers', function (err, row) {
79 var users = 'gameId ' + row.id + ': ' + row.gameId + ' – ' + row.playerId;
80 console.log(users)
81 })
82 /*db.each('SELECT rowid AS id, chatId FROM games', function (err, row) {
83 var user = 'chatId ' + row.id + ': ' + row.chatId;
84 console.log(user)
85 })*/
86});
87bot.on("polling_error", (err) => console.log(err));