Advertisement
Guest User

Untitled

a guest
Jul 20th, 2019
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.10 KB | None | 0 0
  1. const Discord = require('discord.js');
  2. const fetch = require('node-fetch');
  3. const querystring = require('querystring');
  4. const Rcon = require('rcon');
  5. var unirest = require('unirest'); // npm install unirest
  6. var logger = require('winston'); // npm install winston
  7.  
  8. const client = new Discord.Client();
  9. var prefix = '!';
  10. var seeding = true;
  11. var seeded = false;
  12. var channel = "602054337065254912";
  13. var channel2 = "602084241055940608";
  14. var liveThreshold = 40;
  15. var seedThreshold = 4;
  16. var playerCount = 0;
  17. const trim = (str, max) => (str.length > max ? `${str.slice(0, max - 3)}...` : str);
  18. var timeSeed = Date.now();
  19. var timeSeeded = Date.now();
  20. var id = "2028012";
  21.  
  22. client.once('ready', () => {
  23. console.log('Ready!');
  24. });
  25.  
  26.  
  27. client.login('eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbiI6Ijk3NjdiNWM4NGYxZGMxYWMiLCJpYXQiOjE1NjM1ODc0MzcsIm5iZiI6MTU2MzU4NzQzNywiaXNzIjoiaHR0cHM6Ly93d3cuYmF0dGxlbWV0cmljcy5jb20iLCJzdWIiOiJ1cm46dXNlcjoxNTM1MzAifQ.bDEzgtBnvw7wB3JZBTgn2O960u8mKGydJOU5anFEJuo');
  28.  
  29. var delay = 0.5; //in minutes
  30.  
  31. delay = delay * 1000 * 60;
  32.  
  33. var intervalID = client.setInterval(func, delay);
  34. var postMsg = "";
  35.  
  36. function serverInfo(postMsg) {
  37.  
  38. var generalChannel = client.channels.get(channel) // Replace with known channel ID
  39.  
  40. console.log("https://api.battlemetrics.com//servers/" + id);
  41.  
  42. unirest.get("https://api.battlemetrics.com//servers/" + id)
  43.  
  44. .end(function (result) {
  45.  
  46. var json = JSON.parse(JSON.stringify(result.body));
  47.  
  48. if (result.status != 200) {
  49.  
  50. message.reply("An error occurred while trying to make the API request!");
  51.  
  52. } else {
  53.  
  54. console.log(json);
  55.  
  56. generalChannel.send("**Server Information**:\n" +
  57.  
  58. "\tServer name: " + json.data.attributes.name + "\n" +
  59.  
  60. "\tServer IP: " + json.data.attributes.ip + "\n" +
  61.  
  62. "\tMap: " + json.data.attributes.details.map + "\n" +
  63. //"\tNextMap: " + json.data.attributes("squad:showNextMap") + "\n" +
  64. "\tPlayers: " + json.data.attributes.players + "\n" +
  65.  
  66. "\tMax Players: " + json.data.attributes.maxPlayers + "\n" +
  67.  
  68. "\tServer Rank: " + json.data.attributes.rank + "\n" +
  69.  
  70. "\tStatus: " + json.data.attributes.status + "\n" +
  71.  
  72. postMsg + "\n");
  73.  
  74. }
  75.  
  76. });
  77. console.log("nextmap")
  78. unirest.post("https://api.battlemetrics.com//servers/" + id + "/command")
  79. .header('Authorization', 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbiI6Ijk3NjdiNWM4NGYxZGMxYWMiLCJpYXQiOjE1NjM1ODc0MzcsIm5iZiI6MTU2MzU4NzQzNywiaXNzIjoiaHR0cHM6Ly93d3cuYmF0dGxlbWV0cmljcy5jb20iLCJzdWIiOiJ1cm46dXNlcjoxNTM1MzAifQ.bDEzgtBnvw7wB3JZBTgn2O960u8mKGydJOU5anFEJuo')
  80. .header('Accept', 'application/json')
  81. .header('Content-Type', 'application/json')
  82. .send({
  83. "data": {
  84. "type": "rconCommand",
  85. "attributes": {
  86. "command": "squad:showNextMap",
  87. "options": {}
  88. }
  89. }
  90. })
  91.  
  92. .end(function (result) {
  93. console.log("log 2 **** " + result.body)
  94. var json = JSON.stringify(result.body);
  95. console.log("log 3 **** " + json);
  96. generalChannel.send(json.map);
  97. });
  98.  
  99. }
  100.  
  101.  
  102. function func() {
  103. var generalChannel = client.channels.get(channel) // Replace with known channel ID
  104. //generalChannel.send("Hello, world!")
  105.  
  106. unirest.get("https://api.battlemetrics.com//servers/" + id)
  107.  
  108. .end(function (result) {
  109.  
  110. var json = JSON.parse(JSON.stringify(result.body));
  111.  
  112. if (result.status != 200) {
  113.  
  114. message.reply("An error occurred while trying to make the API request!");
  115.  
  116. } else {
  117.  
  118.  
  119. var statChannel = client.channels.get(channel2)
  120. const embed = new Discord.RichEmbed()
  121. .setTitle("**Server Information**")
  122. .setColor(0x00AE86)
  123. .setDescription("\tServer name: " + json.data.attributes.name + "\n" +
  124.  
  125. "\tServer IP: " + json.data.attributes.ip + "\n" +
  126.  
  127. "\tMap: " + json.data.attributes.details.map + "\n" +
  128.  
  129. "\tPlayers: " + json.data.attributes.players + "\n" +
  130.  
  131. "\tMax Players: " + json.data.attributes.maxPlayers + "\n" +
  132.  
  133. "\tServer Rank: " + json.data.attributes.rank + "\n" +
  134.  
  135. "\tStatus: " + json.data.attributes.status + "\n")
  136. .setThumbnail("https://gamepedia.cursecdn.com/squad_gamepedia/0/04/Narva_Minimap_Alpha_V10.jpg?version=912c2c18c81563ecabe6e01d1da0d225")
  137.  
  138. statChannel.fetchMessage("602089231958933524")
  139. .then(message => message.edit({ embed }));
  140.  
  141.  
  142. console.log(json);
  143.  
  144. playerCount = json.data.attributes.players;
  145.  
  146. if (playerCount < liveThreshold && playerCount > seedThreshold) {
  147. if (seeding == false) {
  148.  
  149.  
  150. serverInfo("\n**Server is Seeding**");
  151.  
  152. //generalChannel.send("\n**Server is Seeding**");
  153. seeding = true
  154. timeSeed = Date.now();
  155. }
  156.  
  157.  
  158. }
  159.  
  160. if (playerCount >= liveThreshold) {
  161. if (seeding == true) {
  162. timeSeeded = Date.now();
  163.  
  164. var timeToSeed = Math.round((timeSeeded - timeSeed)/60000);
  165.  
  166. serverInfo("\n**Server is Seeded**\n" +
  167. "Seeded in [" + timeToSeed + "] minutes");
  168.  
  169. //generalChannel.send("\n**Server is Seeded**");
  170. seeding = false
  171.  
  172.  
  173. }
  174.  
  175. }
  176.  
  177. if (playerCount <= seedThreshold) {
  178. if (seeding == true) {
  179. var timeToSeed = Math.round((timeSeeded - timeSeed) / 60000);
  180.  
  181. serverInfo("\n**Server stopped Seeding**\n" +
  182. "Seeded for [" + timeToSeed + "] minutes");
  183. seeding = false
  184.  
  185. }
  186.  
  187. }
  188.  
  189. }
  190.  
  191. });
  192. }
  193.  
  194. var pleb = "Hiizki";
  195.  
  196. client.on('message', message => {
  197.  
  198. var generalChannel = client.channels.get(channel)
  199.  
  200. if (!message.content.startsWith(prefix) || message.author.bot) return;
  201.  
  202. const args = message.content.slice(prefix.length).split(/ +/);
  203. const command = args.shift().toLowerCase();
  204.  
  205. switch(command) {
  206.  
  207. case 'id':
  208. id = args[0];
  209. serverInfo(postMsg);
  210. break;
  211.  
  212. case 'server':
  213. var query = args[0];
  214. serverInfo(postMsg);
  215. break;
  216.  
  217. case 'pleb':
  218. generalChannel.send(pleb + " is a pleb");
  219.  
  220. break;
  221.  
  222. case 'plebset':
  223. pleb = args;
  224. generalChannel.send("New pleb is " + pleb);
  225.  
  226. break;
  227.  
  228. case 'seed':
  229. if (playerCount < liveThreshold && playerCount > seedThreshold) {
  230. serverInfo("\n**Server is Seeding**");
  231. }
  232. if (playerCount >= liveThreshold) {
  233. serverInfo("\n**Server is Seeded**");
  234. }
  235. if (playerCount <= seedThreshold) {
  236. serverInfo("\n**Server is not Seeded**");
  237. }
  238. break;
  239.  
  240. case 'seedthreshold':
  241. seedThreshold = args[0];
  242. generalChannel.send("Seed threshold is " + seedThreshold);
  243.  
  244. break;
  245.  
  246. case 'livethreshold':
  247. //if (parseInt(args[0]) != NaN && args[0] >= 20 && args[0] <=70) {
  248. liveThreshold = args[0];
  249. generalChannel.send("Live threshold is " + liveThreshold);
  250. //} else {
  251. // generalChannel.send(args[0] + " is invalid, please enter a number between 20 and 70");
  252. //}
  253. break;
  254. case 'help':
  255. generalChannel.send("**List of bot commands:**\n" +
  256. "!id - Switch current server ID\n" +
  257. "!server - Poll current server stats\n" +
  258. "!pleb - troll hiizki\n" +
  259. "!plebset - not needed as pleb default is satisfactory\n" +
  260. "!seedthreshold - set the threshold for seeding to occur: Value: " + seedThreshold + "\n" +
  261. "!livethreshold - set the threshold for server to be live - Value: " + liveThreshold + "\n" +
  262. "!help - duh");
  263. break;
  264. }
  265. });
  266.  
  267. client.login('NjAxOTU2NDEwMzA1MTUwOTk3.XTJ1_g.RlZUrwV_t4v2qFK9cqGzZkVqvbU')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement