· 5 years ago · Oct 17, 2020, 08:18 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 regionArr = ['ru','eu','com','asia'];
35 var apiURL = "https://api.worldoftanks.";
36 var region = regionArr[config.region];
37 var clanTag = config.clanTag;
38 var apikey = "?application_id="+config.apikey;
39 var output;
40 var timeArr = [];
41 var tierArr = [];
42 var mapArr = [];
43 var vsArr = [];
44
45 function getClanData(){
46 var clanID;
47 sinusbot.http({
48 method: 'GET',
49 timeout: 60000,
50 url: apiURL+region+'/wgn/clans/list/'+apikey+'&game=wot&language=en&limit=1&search='+clanTag
51 },
52 function (error, clanResponse) {
53 var clanData = JSON.parse(clanResponse.data);
54 clanID = clanData.data[0].clan_id;
55 engine.log('clanID: ' + clanID);
56 output += "[b]Clan:[/b] "+clanData.data[0].tag;
57 getBattles(clanID);
58 });
59 }
60 function getBattles(clanID){
61 engine.log("getBattles() recieved: "+clanID);
62 sinusbot.https({
63 method: 'GET',
64 timeout: 60000,
65 url:apiURL+region+'/wot/globalmap/clanbattles/'+apikey+'&clan_id='+clanID+'&language=en'
66 },function (error, battleResponse) {
67 var battleData = JSON.parse(battleResponse.data);
68 engine.log(battleData.meta.count);
69 output += " [b]Battle Count:[/b] " + battleData.meta.count;
70
71 if(battleData.meta.count == 0){
72
73 mapArr = [];
74 vsArr = [];
75 backend.getChannelByID(config.tsChannel).setDescription(output);
76 } else {
77 engine.log(output);
78 for (i in battleData.data) {
79 var timestamp = battleData.data[i].time;
80 var date = new Date(timestamp * 1000);
81 if (date.getMinutes() < 10){ minutes = "0" + date.getMinutes(); } else{ minutes = date.getMinutes();}
82 timeArr[i] = date.getHours() + ":" + minutes + " AEST";
83 tierArr[i] = " [b]Tier:[/b] "+battleData.data[i].vehicle_level;
84 var frontID = battleData.data[i].front_id;
85 var provinceID = battleData.data[i].province_id;
86 getArena(frontID, provinceID, i);
87 var competitorID = battleData.data[i].competitor_id;
88 getCompetitor(competitorID, i);
89 }
90 for (i in timeArr){
91 output += "\n"+timeArr[i]+tierArr[i]+mapArr[i]+vsArr[i];
92 }
93 backend.getChannelByID(config.tsChannel).setDescription(output);
94 }
95 });
96 }
97 function getArena(frontID, provinceID, i){
98 sinusbot.http({
99 method: 'GET',
100 timeout: 60000,
101 url: apiURL+region+'/wot/globalmap/provinces/'+apikey+'&front_id='+frontID+'&province_id='+provinceID+'&language=en&fields=arena_name'
102 },function (error, provinceResponse) {
103 var provinceData = JSON.parse(provinceResponse.data);
104 var battleMap = provinceData.data[0].arena_name;
105 mapArr[i] = " [b]Map:[/b] " + battleMap;
106 return;
107 });
108
109 }
110 function getCompetitor(competitorID, i){
111 sinusbot.http({
112 method: 'GET',
113 timeout: 60000,
114 url: apiURL+region+'/wot/globalmap/claninfo/'+apikey+'&clan_id='+competitorID
115 },
116 function (error, competitorResponse) {
117 var competitorData = JSON.parse(competitorResponse.data);
118 var competitorTag = competitorData.data[competitorID].tag;
119 engine.log(output);
120 vsArr[i] = " [b]vs:[/b] " + competitorTag;
121 return;
122
123 });
124 }
125 setInterval(function refreshBattleList(){
126 output = "[b]Upcoming CW Battles:[/b]\n";
127 timeArr = [];
128 tierArr = [];
129 getClanData();
130 }, config.updatePeriod * 60000);
131});
132