Advertisement
R4TH4CK3R

Untitled

May 25th, 2017
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.25 KB | None | 0 0
  1. var steam = require("steam"),
  2. util = require("util"),
  3. fs = require("fs"),
  4. SteamApi = require('steam-api'),
  5. SteamID = require('steamid'),
  6. crypto = require("crypto"),
  7. dota2 = require("dota2"),
  8. steamClient = new steam.SteamClient(),
  9. steamUser = new steam.SteamUser(steamClient),
  10. steamFriends = new steam.SteamFriends(steamClient),
  11. Dota2 = new dota2.Dota2Client(steamClient, true);
  12.  
  13. global.config = require("./config/config");
  14.  
  15. function newBlankPlayer() {
  16. return {
  17. name: undefined,
  18. steam_id: undefined,
  19. status: 0,
  20. };
  21. }
  22.  
  23. global.userList = {
  24. "57312074": {
  25. "alias": "HAWGT",
  26. "bannedUntil": 0,
  27. "verifiedHost": true,
  28. "admin": true,
  29. "botowner": true,
  30. },
  31. "154189930": {
  32. "alias": "SP",
  33. "bannedUntil": 0,
  34. "verifiedHost": true,
  35. "admin": true,
  36. "botowner": false,
  37. },
  38. };
  39.  
  40. var onSteamLogOn = function onSteamLogOn(logonResp) {
  41. if (logonResp.eresult == steam.EResult.OK) {
  42. steamFriends.setPersonaState(steam.EPersonaState.Offline);
  43. steamFriends.setPersonaName(global.config.steam_name);
  44. util.log("Logged on.");
  45.  
  46. Dota2.launch();
  47. Dota2.on("ready", function() {
  48. util.log("Node-dota2 ready.");
  49.  
  50. // CHAT
  51.  
  52. var chatChannel = "HAWGT";
  53.  
  54. Dota2.joinChat(chatChannel);
  55. setTimeout(function() {
  56. Dota2.sendMessage("I'm just a bot.", chatChannel);
  57. }, 1000);
  58.  
  59.  
  60.  
  61. });
  62.  
  63. Dota2.on("lobbyInviteUpdate", function(lobby) {
  64. util.log(lobby);
  65.  
  66. var players = [];
  67. var hostId = lobby.sender_id.low;
  68.  
  69. for (var i = 0, len = lobby.members.length; i < len; i++) {
  70. players[i] = newBlankPlayer();
  71. players[i].name = lobby.members[i].name;
  72. players[i].steam_id = lobby.members[i].steam_id.low;
  73.  
  74. var currDate = new Date();
  75. if (userList[players[i].steam_id]) {
  76. var banDate = new Date(userList[players[i].steam_id].bannedUntil * 1000);
  77. } else {
  78. var banDate = new Date(0);
  79. }
  80. if (userList[players[i].steam_id]) {
  81. players[i].status = 1;
  82. if (userList[players[i].steam_id].verifiedHost == true && currDate > banDate) {
  83. players[i].status = 2;
  84. } else if (userList[players[i].steam_id].banned == true || currDate < banDate) {
  85. players[i].status = -1;
  86. }
  87. }
  88.  
  89. }
  90.  
  91. if (userList[hostId].verifiedHost == true && currDate > banDate) {
  92.  
  93. Dota2.respondLobbyInvite(lobby.group_id, true);
  94.  
  95. var lobbyName = "Lobby_" + lobby.group_id;
  96.  
  97. Dota2.joinChat(lobbyName, 3);
  98. setTimeout(function() {
  99.  
  100. for (var i = 0, len = players.length; i < len; i++) {
  101.  
  102. if (players[i].status == 0) {
  103.  
  104. Dota2.sendMessage(players[i].name + " isn't verified!" + " FID: " + players[i].steam_id, lobbyName, 3);
  105. } else if (players[i].status == -1) {
  106. var date = new Date(userList[players[i].steam_id].bannedUntil * 1000);
  107. Dota2.sendMessage(players[i].name + " is banned! (Until " + date.getDate() + "/" + date.getMonth() + "/" + date.getFullYear() + " " + date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds() + ")" + " FID: " + players[i].steam_id, lobbyName, 3);
  108. } else if (players[i].status == 1) {
  109.  
  110. Dota2.sendMessage(players[i].name + " is verified!" + " FID: " + players[i].steam_id, lobbyName, 3);
  111. } else if (players[i].status == 2) {
  112.  
  113. Dota2.sendMessage(players[i].name + " is a verified host!" + " FID: " + players[i].steam_id, lobbyName, 3);
  114. }
  115.  
  116. }
  117.  
  118. Dota2.leaveChat(lobbyName, 3);
  119. Dota2.leavePracticeLobby();
  120.  
  121. }, 1000);
  122. } else {
  123. Dota2.respondLobbyInvite(lobby.group_id, false);
  124. //DEBUG
  125. util.log(userList[hostId].verifiedHost + "," + currDate.getTime() / 1000 + "," + banDate.getTime() / 1000);
  126. }
  127. });
  128.  
  129.  
  130.  
  131. Dota2.on("unready", function onUnready() {
  132. util.log("Node-dota2 unready.");
  133. });
  134.  
  135. Dota2.on("chatMessage", function(channel, personaName, message, raw) {
  136. util.log("[" + channel + "] " + personaName + ": " + message);
  137. util.log(raw);
  138. if(message == "!check") {
  139. util.log(message);
  140. }
  141. if(message.length > 6) {
  142. if(message.substring(0,6)) {
  143. var cmd = message.split(' ');
  144. util.log(message);
  145. }
  146. }
  147.  
  148. });
  149.  
  150. Dota2.on("unhandled", function(kMsg) {
  151. util.log("UNHANDLED MESSAGE " + dota2._getMessageName(kMsg));
  152. });
  153. }
  154. },
  155. onSteamServers = function onSteamServers(servers) {
  156. util.log("Received servers.");
  157. fs.writeFile('servers', JSON.stringify(servers), (err) => {
  158. if (err) {
  159. if (this.debug) util.log("Error writing ");
  160. } else {
  161. if (this.debug) util.log("");
  162. }
  163. });
  164. },
  165. onSteamLogOff = function onSteamLogOff(eresult) {
  166. util.log("Logged off from Steam.");
  167. },
  168. onSteamError = function onSteamError(error) {
  169. util.log("Connection closed by server.");
  170. };
  171.  
  172. steamUser.on('updateMachineAuth', function(sentry, callback) {
  173. var hashedSentry = crypto.createHash('sha1').update(sentry.bytes).digest();
  174. fs.writeFileSync('sentry', hashedSentry)
  175. util.log("sentryfile saved");
  176.  
  177. callback({
  178. sha_file: hashedSentry
  179. });
  180. });
  181.  
  182. var logOnDetails = {
  183. "account_name": global.config.steam_user,
  184. "password": global.config.steam_pass,
  185. };
  186. if (global.config.steam_guard_code) logOnDetails.auth_code = global.config.steam_guard_code;
  187. if (global.config.two_factor_code) logOnDetails.two_factor_code = global.config.two_factor_code;
  188.  
  189. try {
  190. var sentry = fs.readFileSync('sentry');
  191. if (sentry.length) logOnDetails.sha_sentryfile = sentry;
  192. } catch (beef) {
  193. util.log("Cannot load the sentry. " + beef);
  194. }
  195.  
  196. steamClient.connect();
  197.  
  198. steamClient.on('connected', function() {
  199. steamUser.logOn(logOnDetails);
  200. });
  201.  
  202. steamClient.on('logOnResponse', onSteamLogOn);
  203. steamClient.on('loggedOff', onSteamLogOff);
  204. steamClient.on('error', onSteamError);
  205. steamClient.on('servers', onSteamServers);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement