Advertisement
Guest User

Untitled

a guest
Apr 15th, 2019
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.25 KB | None | 0 0
  1. const math = require('mathjs');
  2. const Discord = require('discord.js');
  3. const auth = require('./auth.json');
  4. const odpoved = require("./answers.json");
  5. const mysql = require("mysql");
  6.  
  7. const client = new Discord.Client();
  8. var lastMsgTime = new Date;
  9.  
  10. const Arothe = "<@119855451994193920>";
  11. const channelMajn = "354235259723841538";
  12. const channelDev = "542070256320118815";
  13.  
  14. const version = "1.2.2.f";
  15. x
  16. const badassDev = false;
  17. var inDev, sleeping, timer = false;
  18. var allowBadass = true;
  19.  
  20. var startTime, currentTime, runningTimer;
  21.  
  22. function badass() {
  23. return allowBadass && ((new Date().getHours() >= 22) || (new Date().getHours() < 6) || badassDev);
  24. }
  25.  
  26. function voteTimer() {
  27. if(badass()) client.channels.get(channelMajn).send("&2Hej, ty! Hlasuj pro mě! &4/vote");
  28. else client.channels.get(channelMajn).send("&2Nezapomeňte hlasovat pro server! &4/vote");
  29. }
  30.  
  31. function MluviNaMe(msg) {
  32. //if (msg.indexOf("ev") != -1) return true; //todo: "ev" neni soucasti slova
  33. /*else*/ if (msg.indexOf("evelynn")) //mluvi na me a ne na me.
  34. {
  35. var veta = msg.split(" ");
  36. if (veta.length = 0)
  37. {
  38. echo("Ano?");
  39. retrun(false);
  40. }
  41. else if (veta.length <= 3) //Evelynn je x || Evelynn x
  42. {
  43. if (veta[0] == "evelynn" && veta[1] == "je") return false
  44. }
  45. }
  46. }
  47.  
  48. client.on('ready', () => {
  49. console.log('Jsem připravena pomáhat :)');
  50. client.user.setActivity('Helping on Majncraft.cz');
  51. console.log("Poslouchám :)");
  52. console.log("");
  53. setInterval(voteTimer, 1 * 60 * 60 * 1000);
  54. });
  55.  
  56. // Vytvoření spojení s DB
  57. var db = mysql.createConnection({
  58. host: auth.DBhost,
  59. user: auth.DBuser,
  60. password: auth.DBpassword,
  61. database: "FQbot"
  62. });
  63.  
  64. client.on('message', function(message) {
  65. var mc;
  66.  
  67. if(message.content.includes("]") && message.content.includes("/")) {
  68. var username = (message.content.split("/"))
  69. if(username[2]) {
  70. username = (username[2]).split("]")[0].split("*").join(""); // Vytažení jména z bloku [Tethys/Global/name]
  71. username = username.charAt(0).toUpperCase() + username.substr(1);
  72. }
  73. else username = undefined;
  74. }
  75. else {
  76. if(message.member !== null) username = message.member.displayName;
  77. else username = undefined;
  78. }
  79.  
  80. // Odstrani diakritiku, velka pismena a hvezdicky
  81. mc = contentCleanup().normalize('NFD').replace(/[\u0300-\u036f]/g, "").toLowerCase();
  82.  
  83. if((message.author.id !== client.user.id)) { //loguj zprávu, pokud jsi ji nenapsala sama
  84. if(!message.content.includes("[")){
  85. if(message.member !== null){
  86. console.log(message.member.displayName + ": " + mc);
  87. }
  88. }
  89. else console.log(message.content);
  90. }
  91.  
  92. // ====== Admin commandy ======
  93. if(mc[0] == ">"){
  94. if (auth.ops.indexOf(message.author.id) == -1) break;
  95. switch (mc) {
  96. case ">reboot":
  97. reload();
  98. break;
  99. case ">kill":
  100. kill();
  101. break;
  102. case ">badass":
  103. toggleBadass();
  104. break;
  105. case ">devmode":
  106. toggleDevMode();
  107. if(inDev) echo("Devmode je zapnutý.");
  108. else echo("Devmode je vypnutý.");
  109. break;
  110. case ">devmode?":
  111. if(inDev) echo("Devmode je zapnutý.");
  112. else echo("Devmode je vypnutý.");
  113. break;
  114. case ">version":
  115. echo("Jedu na " + version);
  116. break;
  117. case ">docs":
  118. echo("Dokumentace: bit.ly/EvelynnDoc \n Github: bit.ly/EvelynnGit");
  119. break;
  120. case ">getops":
  121. console.log(message.member.displayName + ": " + message.author.id);
  122. echo(Arothe + ", " + message.member.displayName + " chce oprávnění!");
  123. break;
  124. case ">sleep":
  125. toggleSleep(); // Přepíná sleep mod
  126. break;
  127. default:
  128. //??
  129. break;
  130. }
  131. }
  132. // ====== Konec admin commandů ======
  133.  
  134. if(!sleeping) {
  135. if (mluviNaMe(mc))
  136. {
  137. switch (mc) {
  138. case "":
  139.  
  140. break;
  141.  
  142. default:
  143. echo("Nerozumim. Má být odpověď na zprávu implementována? (y/n)")
  144. break;
  145. }
  146. }
  147. // kolik je hodin pro tweetyho
  148. if(mci("kolik je hodin")){
  149. if(badass()){
  150. echo("Dost na to, abych tu seděla bez trička. A tobě nezbývá, než si představovat, jak krásný pohled to je.");
  151. }
  152. else echo(odpoved.general.cas + getTime());
  153. }
  154. else if(mci("kolikateho je") || mci("jake je datum")){
  155. if(badass()) echo("Pff, koho to zajímá... zítra je pondělí.");
  156. else{
  157. var months = ["Leden", "Únor", "Březen", "Duben", "Květen", "Červen", "Červenec", "Srpen", "Září", "Říjen", "Listopad", "Prosinec"];
  158. var date = new Date();
  159. echo("Dnes je " + date.getDate() + ". " + months[date.getMonth()] + " " + date.getFullYear());
  160. }
  161. }
  162. else if(mci("kdo je online")) {
  163. if(badass()) echo("Nikdo důležitý... a já.");
  164. else echo("playerlist");
  165. }
  166. else if(mci("joined lobby for the first time") && mci(":tada:") && message.author.id==354236347869036545){
  167. var msg = message.content.replace("\_","_").split("*").join("").split(" ");
  168. echo(odpoved.general.welcome[0] + "&e" + msg[1]+ "&r" + odpoved.general.welcome[1]);
  169. }
  170.  
  171. // Vypočítej
  172. else if(mc.substr(0,9) == "vypocitej" || mc.substr(0,8) == "spocitej" || mc.substr(0,8) == "kolik je"){
  173. if(mc.substr(0,9) == "vypocitej") var priklad = mc.substr(9,mc.length);
  174. else var priklad = mc.substr(8,mc.length);
  175.  
  176. priklad = priklad.replace("x","*").replace(":","/").replace("**","^").replace(",",".").replace("×","*").replace("?","").replace("v","sqrt");
  177. //priklad = priklad.replace(/[^0-9.*\-+()!/^]/g, "");
  178. console.log("=================");
  179. console.log(priklad);
  180. console.log("=================");
  181.  
  182. if(badass()) echo("Už se mi nechce, použij kalkulačku.");
  183. else{
  184. try{
  185. var vypocet = math.eval(priklad);
  186. vypocet = Math.round(vypocet * 100) / 100;
  187. if((vypocet > 64) && (vypocet !== Infinity) && (!isNaN(vypocet))){
  188. if(vypocet % 64 != 0){
  189. echo("Výsledek je " + vypocet + " což je " + Math.floor(vypocet/64) + " x 64 + " + Math.round((vypocet%64) * 100) / 100);
  190. }
  191. else echo("Výsledek je " + vypocet + " což je " + Math.floor(vypocet/64) + " x 64");
  192. }
  193. else if((vypocet !== Infinity) && (!isNaN(vypocet))) echo("Výsledek je " + vypocet);
  194. else echo(odpoved.vypocitej.pako);
  195. }
  196. catch(err){ echo(odpoved.vypocitej.nerozumim); }
  197. }
  198. }
  199.  
  200. //portal
  201. else if(mc.substr(0,6) == "portal"){
  202. var x = 0;
  203. var z = 0;
  204. var arr = mc.split(" ");
  205. var tping = false;
  206.  
  207. if(arr[1] && arr[2] && arr[3]){
  208. x = Number(arr[1]);
  209. z = Number(arr[3]);
  210. tping = true;
  211. }
  212. else if(arr[1] && arr[2] && !arr[3]){
  213. x = Number(arr[1]);
  214. z = Number(arr[2]);
  215. tping = true;
  216. }
  217. else if(mc == "portal") echo(odpoved.portal.tutorial);
  218. else echo(odpoved.portal.nope);
  219.  
  220. if(tping == true){
  221. var y = 60;
  222. if(isNumber(x) && isNumber(z)){
  223. x = Math.floor(x / 8);
  224. z = Math.floor(z / 8);
  225. echo("Svůj portál postav na souřadnicích x=" + x + " y=" + y + " z=" + z);
  226. }
  227. else{
  228. console.log("x: " + x.isNumber);
  229. console.log(x);
  230. console.log("z: " + z.isNumber);
  231. console.log(z);
  232. echo(odpoved.portal.vtipalek);
  233. }
  234. }
  235. }
  236.  
  237. else if(mc == "zapni casovac" || mc == "vypni casovac" || mc.replace("?","") == "aktualni cas"){
  238. if(mc == "zapni casovac"){
  239. if(timer) echo("Promiň, ale časovač teď má spuštěný někdo jiný. Zkus to později."); //@Proicop todo
  240. else{
  241. echo("Zapínám časovač.");
  242. let user = username;
  243. startTime = parseInt(new Date().getTime());
  244. console.log("start: " + startTime);
  245. timer = true;
  246.  
  247. runningTimer = setInterval(()=>{
  248. let currentTime = new Date().getTime();
  249. if(currentTime - startTime > 600000){
  250. clearInterval(runningTimer);
  251. timer = false;
  252. startTime = null;
  253. echo("Přesáhl jsi deset minut " + user + ". Zastavuji časovač.");
  254. }
  255. },10000)
  256. }
  257. }
  258. else if(mc == "vypni casovac"){
  259. if(timer){
  260. currentTime = parseInt(new Date().getTime());
  261. console.log("current: " + currentTime);
  262. clearInterval(runningTimer);
  263. var resultTime = currentTime - startTime;
  264. console.log(resultTime);
  265.  
  266. if(resultTime > 60000){
  267. echo("Konečný čas je " + ~~(resultTime / 60000) +
  268. ((~~(resultTime / 60000) > 4) ? " minut a " : (~~(resultTime / 60000) > 1) ? " minuty a " : " minuta a ") +
  269. (~~(resultTime / 1000) % 60) +
  270. ((~~(resultTime / 1000) % 60 > 4) ? " vteřin." : (~~(resultTime / 1000) % 60 > 1) ? " vteřiny." : " vteřina."));
  271. }
  272. else{
  273. echo("Konečný čas je " + ~~(resultTime / 1000) + ((~~(resultTime / 1000) > 4) ? " vteřin." : (~~(resultTime / 1000) > 1) ? " vteřiny." : " vteřina."));
  274. }
  275.  
  276. timer = false;
  277. }
  278. else echo("Žádný časovač neběží.");
  279. }
  280. else{
  281. currentTime = parseInt(new Date().getTime());
  282. var resultTime = currentTime - startTime;
  283. if(resultTime > 60000){
  284. echo("Aktuální čas je " + ~~(resultTime / 60000) +
  285. ((~~(resultTime / 60000) > 4) ? " minut a " : (~~(resultTime / 60000) > 1) ? " minuty a " : " minuta a ")
  286. + (~~(resultTime / 1000) % 60) +
  287. ((~~(resultTime / 1000) % 60 > 4) ? " vteřin." : (~~(resultTime / 1000) % 60 > 1) ? " vteřiny." : " vteřina."));
  288. }
  289. else{
  290. echo("Aktuální čas je " + ~~(resultTime / 1000) + ((~~(resultTime / 1000) > 4) ? " vteřin." : (~~(resultTime / 1000) > 1) ? " vteřiny." : " vteřina."));
  291. }
  292. }
  293. }
  294.  
  295. // Reakce na "miluji te"
  296. else if((message.author.id !== client.user.id) && (mci("miluji te") || mci("miluju te")) && (mci("evelynn")) && (!mci("mas me rada"))){
  297. echo(getRandomFromArray(reaodpoved.general.reakceNaLaskukce));
  298. }
  299.  
  300. // Reakce na "mas me rada"
  301. else if((message.author.id !== client.user.id) && (mci("mas me rada")) && (mci("evelynn"))){
  302. echo(getRandomFromArray(reaodpoved.general.reakceNaOblibenost));
  303. }
  304.  
  305. // Reakce na "jak se mas"
  306. else if((message.author.id !== client.user.id) && (mci("jak se mas")) && (mci("evelynn"))){
  307. var reakce = odpoved.general.nalada;
  308. var answer;
  309. var time = new Date;
  310. console.log(time.getHours());
  311.  
  312. if (time.getHours() >= 11 && time.getHours() <= 12) answer = reakce[0];
  313. else if((time.getHours() >= 20) && (time.getHours() <= 21)) answer = reakce[1];
  314. else if((time.getHours() < 8) && (time.getHours() >= 6)) answer = reakce[2];
  315. else if((time.getHours() < 6)) answer = reakce[7];
  316. else if( time.getHours() >= 22) answer = reakce[6];
  317. else if(Math.abs((lastMsgTime.getTime() - time.getTime())) > 1800000) answer = reakce[3];
  318. else if(Math.abs((lastMsgTime.getTime() - time.getTime())) < 15000) answer = reakce[4];
  319. else answer = reakce[5];
  320. echo(answer);
  321. }
  322.  
  323. //reakce na pozdrav
  324. else if((message.author.id !== client.user.id) && (mci("evelynn")) && mc.replace("?","") != "evelynn"){
  325. var pozdravy = odpoved.general.reakceNaPozdrav;
  326. var rnd = Math.floor(Math.random() * pozdravy.length);
  327.  
  328. if(username){
  329. if(odpoved.general.pozdravy.indexOf((mc.split("evelynn")[0]).trim().replace(",","")) >= 0){
  330. echo(odpoved.general.reakceNaPozdrav[rnd] + ", " + username);
  331. }
  332. else if(mc.split("evelynn")[0]){
  333. if((mc.split("evelynn")[0].trim().replace(",","")).includes("brou noc")){
  334. echo("Dobrou noc i tobě, " + username + " :)");
  335. }
  336. }
  337. }
  338. else{
  339. if(odpoved.general.pozdravy.indexOf(((mc.split("evelynn")[0]).trim()).replace(",","")) >= 0){
  340. echo(odpoved.general.reakceNaPozdrav[rnd] + ", " + message.member.displayName);
  341. console.log(odpoved.general.pozdravy.indexOf((mc.split("evelynn")[0]).trim()));
  342. }
  343. else if(mc.split("evelynn")[0]){
  344. if((((mc.split("evelynn")[0]).trim()).replace(",","")).includes("dobrou noc")){
  345. echo("Krásné sny, " + message.member.displayName);
  346. }
  347. }
  348. }
  349. }
  350.  
  351. // Counter sognus
  352. else if((message.author.id !== client.user.id) && (mc=="ping")) echo("Pong.");
  353. else if((message.author.id !== client.user.name) && dev(inDev)){
  354.  
  355. var helpQuery = 'SELECT * from klicova_slova INNER JOIN ks_o ON klicova_slova.PK_Idks = ks_o.FK_idks INNER JOIN odpoved ON ks_o.FK_ido = odpoved.PK_ido WHERE MATCH(klicova_slova.text) AGAINST ("' +
  356. mc.replace("?","") + '" IN NATURAL LANGUAGE MODE) AND MATCH(odpoved.co) AGAINST ("' +
  357. mc.replace("?","") + '" IN NATURAL LANGUAGE MODE)';
  358. var badassQuery = 'SELECT * from klicova_slova INNER JOIN ks_o ON klicova_slova.PK_Idks = ks_o.FK_idks INNER JOIN badass ON ks_o.FK_ido = badass.PK_ido WHERE MATCH(klicova_slova.text) AGAINST ("' +
  359. mc.replace("?","") + '" IN NATURAL LANGUAGE MODE) AND MATCH(badass.co) AGAINST ("' +
  360. mc.replace("?","") + '" IN NATURAL LANGUAGE MODE)';
  361. var query = "";
  362.  
  363. // Nastavení badass query
  364. if(badass()) query = badassQuery;
  365. else query = helpQuery;
  366.  
  367. db.query(query, function (err, result) {
  368. if(err){
  369. console.log("MySQL error: " + err);
  370.  
  371. var db = mysql.createConnection({
  372. host: auth.DBhost,
  373. user: auth.DBuser,
  374. password: auth.DBpassword,
  375. database: "FQbot"
  376. });
  377.  
  378. client.channels.get(channelDev).send("Tak to vypadá, že mi zase spadlo připojení... " + Arothe + " by se na to měl už konečně podívat...");
  379. }
  380. if(result){
  381. console.log("Result: %j" , result.length);
  382. if(result.length == 1 ){ echo(result[0].text); }
  383. else if(result.length > 1 ){
  384. if(badass()) echo("Zase něco chceš? Radši běž spát...");
  385. else echo("Napiš tu otázku lépe");
  386. }
  387. }
  388. });
  389. }
  390.  
  391. if(mc == "evelynn?" || mc == "evelynn"){
  392. echo("Jak ti mohu pomoci? Prosím, svou otázku napiš do kanálu pomoci. [/h <zpráva>]");
  393. }
  394. }
  395. });
  396.  
  397. db.connect();
  398. client.login(auth.token);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement