// Einbinden von Discord, Botconfig und Instanziierung des Discord Clients const Discord = require("discord.js"); const config = require("./config.json"); const client = new Discord.Client(); const prefix = "!"; const request = require('request'); /****************************************************************************************/ // Clan spezifische Variabeln (Kann nach belieben abgeändert werden) const don = 150; // Erforderliche Spenden... const war = 250; // Erforderliche Kriegspunkte... const topDon = 750; // Anzahl der spenden um Topspender zu sein... const cnl = {s: 'spenden', v: 'verwahrnungen', k: 'kriegspunkte'}; // Channel: s: NAME = Spendenchannel in dem die Spenden gelistet werden, // Channel: v: NAME = Verwahrnungschannel in dem die Verwahrnungen gelistet werden let clanBirth = new Date(2018,7,11); // Datum der Clangründung - Format: JJJJ,MM,TT - !ACHTUNG!: Monat ein Monat früher einstellen Beispiel Monat 6 angegeben zeigt: Monat 7 // https://developer.clashroyale.com/#/account - Von hier muss der Key unter authToken eingefügt werden. (TOKEN) const authToken = ''; # Hier Authorization Key ohne "Bearer" // Clan ID einfügen! !Achtung!: %23 bedeutet # das einfach stehen lassen... const memberLink = 'https://api.clashroyale.com/v1/clans/%23PPVRQ8CR/members'; // v1/clans/%23CLANID/members <-- Hier die ClanID rein !Achtung!: %23 bedeutet # const currentRiverRaceLink = 'https://api.clashroyale.com/v1/clans/%23PPVRQ8CR/currentriverrace'; // v1/clans/%23CLANID/currentriverrace <-- Hier die ClanID rein !Achtung!: %23 bedeutet # // Nicht abändern. Erforderlich für die Zeitabfragen. var d = new Date(); var currentHour = d.getHours(); var currentMin = d.getMinutes(); var currentSec = d.getSeconds(); var jetzt = new Date(), tag = jetzt.getDate(), tagZahl = jetzt.getDay(), wochentag = ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag' ], monatZahl = jetzt.getMonth(), monat = ['Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'], jahrZahl = jetzt.getYear(); /****************************************************************************************/ // Test Bereich - damit man nicht immer das !Kommando eingeben muss .... bei Live version immer auskommentieren // request('https://api.clashroyale.com/v1/players/%2388PPJUQ2R/battlelog', {headers: {Authorization: 'Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiIsImtpZCI6IjI4YTMxOGY3LTAwMDAtYTFlYi03ZmExLTJjNzQzM2M2Y2NhNSJ9.eyJpc3MiOiJzdXBlcmNlbGwiLCJhdWQiOiJzdXBlcmNlbGw6Z2FtZWFwaSIsImp0aSI6IjNmNDc3YTg5LTg3YWEtNDc0Ny05OTA5LWY2OWNjYjkwZDM0ZSIsImlhdCI6MTYwNzYyMzA1Mywic3ViIjoiZGV2ZWxvcGVyLzAxODk5Yjk2LWQ0OTYtYjNlZi01YjQyLTg0OTQ4YjQwNWJmZCIsInNjb3BlcyI6WyJyb3lhbGUiXSwibGltaXRzIjpbeyJ0aWVyIjoiZGV2ZWxvcGVyL3NpbHZlciIsInR5cGUiOiJ0aHJvdHRsaW5nIn0seyJjaWRycyI6WyIxODguMTk0LjE3MC4xODkiXSwidHlwZSI6ImNsaWVudCJ9XX0.BCiOTJE2QfjnnunwfPYi1Co405qXBwUrBvu0ijADTdgbjtNQ2Axrq6Qj-3xu_3vTW3II0xMBzQfkepF8tg1Ktw'}}, (err, res, body) => { // if (err) { return console.log(err); } // //console.log(body.url); // //console.log(body); // const json = body; // const obj = JSON.parse(json); // let timeY = new Date(); // let year = timeY.getFullYear(); // let month = timeY.getMonth()+1; // let day = timeY.getDate(); // let hMinSec = '' + currentHour + '' + currentMin + '' + currentSec + ''; // if(month<10){ // month = '0' + month; // } // let yearMonth = '' + year + '' + month; // let yearMonthDay = '' + yearMonth + '' + day; // var i; // for(i=0; i { if (err) { return console.log(err); } const json = body; const obj = JSON.parse(json); var i; for(i=0; i channel.name === cnl.s).send(obj.items[i].name + ': Hat zu wenig Spenden erreicht: ' + obj.items[i].donations); } } }); } /**************************************************************************************/ // Spenden Befehl wird ausgelöst durch: !allespenden if (command === "allespenden") { request(memberLink, {headers: {Authorization: 'Bearer ' + authToken}}, (err, res, body) => { if (err) { return console.log(err); } const json = body; const obj = JSON.parse(json); var i; var z = 0; if(currentMin<10){ currentMin = ('0' + currentMin); } for(i=0; i channel.name === cnl.s).send('Alle aktuellen Spenden, Stand: ' + wochentag[tagZahl] + ', ' + currentHour + ':' + currentMin + ' Uhr'); z++; } client.channels.cache.find(channel => channel.name === cnl.s).send(obj.items[i].name + ': Hat: ' + obj.items[i].donations + ' Spenden erreicht.'); } }); } /**************************************************************************************/ // Spenden Befehl wird ausgelöst durch: !spenden if (command === "kämpfe") { request(memberLink, {headers: {Authorization: 'Bearer ' + authToken}}, (err, res, body) => { if (err) { return console.log(err); } const json = body; const obj = JSON.parse(json); var i; var dailyFights = 0; let timeY = new Date(); let year = timeY.getFullYear(); let month = timeY.getMonth()+1; let day = timeY.getDate(); let hMinSec = '' + currentHour + '' + currentMin + '' + currentSec + ''; if(month<10){ month = '0' + month; } let yearMonth = '' + year + '' + month; let yearMonthDay = '' + yearMonth + '' + (day); for(i=0; i { if (err) { return console.log(err); } const json2 = body1; const obj2 = JSON.parse(json2); var j; var dF = 0; //console.log(obj2); for(j=0; j r.name === "Vize-Anführer") || message.member.roles.cache.find(r => r.name === "Anführer")) { // Spenden Befehl wird ausgelöst durch: !spendenverwahrnung if (command === "spendenverwahrnung") { request(memberLink, {headers: {Authorization: 'Bearer ' + authToken}}, (err, res, body) => { if (err) { return console.log(err); } const json = body; const obj = JSON.parse(json); var i; var z = 0; if(currentMin<10){ currentMin = ('0' + currentMin); var currentTime = currentHour + ':' + currentMin; } for(i=0; i channel.name === cnl.v).send('Spendenverwahrnungen, Stand: ' + wochentag[tagZahl] + ', ' + currentHour + ':' + currentMin + ' Uhr'); z++; } if(obj.items[i].donations < don){ client.channels.cache.find(channel => channel.name === cnl.v).send(obj.items[i].name + ': - ' + obj.items[i].donations + ' - Spenden.'); } } }); } } /**************************************************************************************/ // Spenden Befehl wird ausgelöst durch: !topspender if (command === "topspender") { request(memberLink, {headers: {Authorization: 'Bearer ' + authToken}}, (err, res, body) => { if (err) { return console.log(err); } const json = body; const obj = JSON.parse(json); var i; var z = 0; for(i=0; i topDon && z===0){ z++; } } for(i=0; i topDon){ if(z===1){ client.channels.cache.find(channel => channel.name === cnl.s).send('Diese Woche sind unsere Topspender:'); } client.channels.cache.find(channel => channel.name === cnl.s).send(obj.items[i].name + ' hat diese Woche bereits: ' + obj.items[i].donations + ' Spenden erreicht!!'); } } if(z===0){ client.channels.cache.find(channel => channel.name === cnl.s).send('Diese Woche hat noch niemand mehr als ' + topDon + ' Spenden erreicht!'); } }); } /**************************************************************************************/ // Kriegspunkte Befehl Listet alle Mitglieder auf die noch nicht die täglichen Kriegspunkte erreicht haben. // Befehl wird ausgelöst durch: !krieg // If Abfrage kann eingeführt werden um den Befehl nur für bestimmte Discord Rollen verfügbar zu machen. //if(message.member.roles.cache.find(r => r.name === "Vize-Anführer") || message.member.roles.cache.find(r => r.name === "Anführer")) { if (command === "krieg") { request(currentRiverRaceLink, {headers: {Authorization: 'Bearer ' + authToken}}, (err, res, body) => { if (err) { return console.log(err); } const json = body; const obj = JSON.parse(json); var i; var dailyFame = 0; if(wochentag[tagZahl] === 'Dienstag' && currentHour > 11){ dailyFame = war; } if(wochentag[tagZahl] === 'Mittwoch' && currentHour > 11){ dailyFame = war*2; }else if(wochentag[tagZahl] === 'Mittwoch' && currentHour < 11){ dailyFame = war } if(wochentag[tagZahl] === 'Donnerstag' && currentHour > 11){ dailyFame = war*3; }else if(wochentag[tagZahl] === 'Donnerstag' && currentHour < 11){ dailyFame = war*2 } if(wochentag[tagZahl] === 'Freitag' && currentHour > 11){ dailyFame = war*4; }else if(wochentag[tagZahl] === 'Freitag' && currentHour < 11){ dailyFame = war*3 } if(wochentag[tagZahl] === 'Samstag' && currentHour > 11){ dailyFame = war*5; }else if(wochentag[tagZahl] === 'Samstag' && currentHour < 11){ dailyFame = war*4 } if(wochentag[tagZahl] === 'Sonntag' && currentHour > 11){ dailyFame = war*6; }else if(wochentag[tagZahl] === 'Sonntag' && currentHour < 11){ dailyFame = war*5 } for(i=0; i channel.name === cnl.k).send(obj.clan.participants[i].name + ': Hat zu wenig Kriegspunkte erreicht: ' + obj.clan.participants[i].fame); //client.channels.cache.find(channel => channel.name === 'verwahrnungen').send(obj.clan.participants[i].name + ': Verwahrnung wegen zu wenig Kriegspunkten - ' + 'Benötigt: ' + dailyFame + ' - erreicht: ' + obj.clan.participants[i].fame); } } }); } //} /**************************************************************************************/ if(message.member.roles.cache.find(r => r.name === "Vize-Anführer") || message.member.roles.cache.find(r => r.name === "Anführer")) { // Befehl wird ausgelöst durch: !kriegsverwahrnung if (command === "kriegsverwahrnung") { request(currentRiverRaceLink, {headers: {Authorization: 'Bearer ' + authToken}}, (err, res, body) => { if (err) { return console.log(err); } const json = body; const obj = JSON.parse(json); var i; var dailyFame = 0; if(wochentag[tagZahl] === 'Dienstag' && currentHour > 11){ dailyFame = war; } if(wochentag[tagZahl] === 'Mittwoch' && currentHour > 11){ dailyFame = war*2; }else if(wochentag[tagZahl] === 'Mittwoch' && currentHour < 11){ dailyFame = war } if(wochentag[tagZahl] === 'Donnerstag' && currentHour > 11){ dailyFame = war*3; }else if(wochentag[tagZahl] === 'Donnerstag' && currentHour < 11){ dailyFame = war*2 } if(wochentag[tagZahl] === 'Freitag' && currentHour > 11){ dailyFame = war*4; }else if(wochentag[tagZahl] === 'Freitag' && currentHour < 11){ dailyFame = war*3 } if(wochentag[tagZahl] === 'Samstag' && currentHour > 11){ dailyFame = war*5; }else if(wochentag[tagZahl] === 'Samstag' && currentHour < 11){ dailyFame = war*4 } if(wochentag[tagZahl] === 'Sonntag' && currentHour > 11){ dailyFame = war*6; }else if(wochentag[tagZahl] === 'Sonntag' && currentHour < 11){ dailyFame = war*5 } if(currentMin<10){ currentMin = ('0' + currentMin); var currentTime = currentHour + ':' + currentMin; } var z = 0; for(i=0; i channel.name === cnl.v).send('Kriegsverwahrnungen, Stand: ' + wochentag[tagZahl] + ', ' + currentHour + ':' + currentMin + ' Uhr'); z++; } //client.channels.cache.find(channel => channel.name === 'kriegspunkte').send(obj.clan.participants[i].name + ': Hat zu wenig Kriegspunkte erreicht: ' + obj.clan.participants[i].fame); client.channels.cache.find(channel => channel.name === cnl.v).send(obj.clan.participants[i].name + ': - ' + obj.clan.participants[i].fame + ' - Benötigt: ' + dailyFame); } } }); } } /******************************************************************************************/ if (command === "clanalter") { const timeTaken = Date.now(); let dtd = timeTaken - clanBirth; dtd = dtd / 31536000000; var y = dtd.toLocaleString(); y = y.substr(0, y.length-2); var dat = clanBirth.toLocaleString() dat = dat.substr(0, dat.length-10); message.reply("Der Clan wurde am: " + dat + " gegründet und ist somit: " + y + " Jahre alt."); } /******************************************************************************************/ }); client.login(config.BOT_TOKEN);