· 5 years ago · Oct 18, 2020, 05:32 PM
1registerPlugin({
2 requiredModules: ['http'],
3 name: 'WoT CW Upcoming Battles',
4 version: '0.0.1',
5 description: 'World of Tanks upcoming Clan Wars list',
6 author: 'icarusSB <dmillen04@gmail.com>',
7 vars: [{
8 name: 'clanTag',
9 title: 'Clan Tag',
10 type: 'string'
11 },{
12 name: 'region',
13 title: 'Region of clan',
14 type: 'select',
15 options: ['RU','EU','NA','ASIA']
16 },{
17 name: 'apikey',
18 title: 'WG API key (get one at https://developers.wargaming.net)',
19 type: 'string'
20 },{
21 name: 'tsChannel',
22 title: 'Channel to display info',
23 type: 'channel'
24 },{
25 name: 'updatePeriod',
26 title: 'Update Period (mins)',
27 type: 'number',
28 placeholder: '1'
29 }]
30},
31function(sinusbot, config) {
32 var backend = require('backend');
33 var engine = require('engine');
34 var http = require('http');
35 var regionArr = ['ru','eu','com','asia'];
36 var apiURL = "https://api.worldoftanks.";
37 var region = regionArr[config.region];
38 var clanTag = config.clanTag;
39 var apikey = "?application_id="+config.apikey;
40 var output;
41 var clanID;
42 var timeArr = [];
43 var tierArr = [];
44 var mapArr = [];
45 var vsArr = [];
46
47 function getClanData(){
48 http.simpleRequest({
49 'method': 'GET',
50 'timeout': 6000,
51 'url': apiURL+region+'/wgn/clans/list/'+apikey+'&game=wot&language=de&limit=1&search='+clanTag
52 },
53 function (error, clanResponse) {
54 var clanData = JSON.parse(clanResponse.data);
55 clanID = clanData.data[0].clan_id;
56 engine.log('clanID: ' + clanID);
57 output += "[b]Clan:[/b] "+clanData.data[0].tag;
58 getBattles(clanID);
59 });
60 }
61 function getBattles(clanID){
62 engine.log("getBattles() recieved: "+clanID);
63 http.simpleRequest({
64 method: 'GET',
65 timeout: 60000,
66 url:apiURL+region+'/wot/globalmap/clanbattles/'+apikey+'&clan_id='+clanID+'&language=de'
67 },function (error, battleResponse) {
68 var battleData = JSON.parse(battleResponse.data);
69 engine.log(battleData.meta.count);
70 output += " [b]Battle Count:[/b] " + battleData.meta.count;
71
72 if(battleData.meta.count == 0){
73
74 mapArr = [];
75 vsArr = [];
76 backend.getChannelByID(config.tsChannel).setDescription(output);
77 } else {
78 engine.log(output);
79 for (i in battleData.data) {
80 var timestamp = battleData.data[i].time;
81 var date = new Date(timestamp * 1000);
82 if (date.getMinutes() < 10){ minutes = "0" + date.getMinutes(); } else{ minutes = date.getMinutes();}
83 timeArr[i] = date.getHours() + ":" + minutes + " AEST";
84 tierArr[i] = " [b]Tier:[/b] "+battleData.data[i].vehicle_level;
85 var frontID = battleData.data[i].front_id;
86 var provinceID = battleData.data[i].province_id;
87 getArena(frontID, provinceID, i);
88 var competitorID = battleData.data[i].competitor_id;
89 getCompetitor(competitorID, i);
90 }
91 for (i in timeArr){
92 output += "\n"+timeArr[i]+tierArr[i]+mapArr[i]+vsArr[i];
93 }
94 backend.getChannelByID(config.tsChannel).setDescription(output);
95 }
96 });
97 }
98 function getArena(frontID, provinceID, i){
99 sinusbot.http({
100 method: 'GET',
101 timeout: 60000,
102 url: apiURL+region+'/wot/globalmap/provinces/'+apikey+'&front_id='+frontID+'&province_id='+provinceID+'&language=de&fields=arena_name'
103 },function (error, provinceResponse) {
104 var provinceData = JSON.parse(provinceResponse.data);
105 var battleMap = provinceData.data[0].arena_name;
106 mapArr[i] = " [b]Map:[/b] " + battleMap;
107 return;
108 });
109
110 }
111 function getCompetitor(competitorID, i){
112 sinusbot.http({
113 method: 'GET',
114 timeout: 60000,
115 url: apiURL+region+'/wot/globalmap/claninfo/'+apikey+'&clan_id='+competitorID
116 },
117 function (error, competitorResponse) {
118 var competitorData = JSON.parse(competitorResponse.data);
119 var competitorTag = competitorData.data[competitorID].tag;
120 engine.log(output);
121 vsArr[i] = " [b]vs:[/b] " + competitorTag;
122 return;
123
124 });
125 }
126 setInterval(function refreshBattleList(){
127 output = "[b]Kommende CW Gefechte:[/b]\n";
128 timeArr = [];
129 tierArr = [];
130 getClanData();
131 }, config.updatePeriod * 60000);
132});
133