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