• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Javascript punkty/grupa antyraid

Object Storage Arubacloud
0 głosów
231 wizyt
pytanie zadane 4 lutego 2021 w JavaScript przez Ativ Nowicjusz (120 p.)

Witam.

Chce stworzyć prostego bota który by sprawdzał osoby które dołączają na serwer discord i wyrzucał w przypadku podejrzenia rajdu.

Mianowicie miało by to działać tak że jeżeli w przeciągu np 60 sekund dołączy 20 osób których konto zostało założone mniej niż 3 dni temu to zostaną oni wszyscy wyrzuceni/zbanowani.

A więc musi to wyglądać tak że kazda jedna nowa osoba = 1 punkt + wrzucenie osoby do grupy "do wyrzucenia" i w momencie uzyskania 20 punktów bot wyrzuca osoby z grupy "do wyrzucenia" lub jeżeli minie 60 sekund i nie uzbiera 20 punktów to po prostu resetuje punkty do 0.

Póki co mam coś takiego:    

 var rp = 0;

    if (Date.now() - member.user.createdAt < 1000*60*60*24*10) {

        rp++;

    }

    if(rp>0){

    member.send(dm);

    member.guild.channels.cache.get("806563747325542410").send(`rp = 1`);

    }

    if(rp=25){

        member.send(dm);

        member.guild.channels.cache.get("806563747325542410").send(`rp = 25`);



    setTimeout(function(){ 

        member.kick("AntyRajd");

    }, 500);

I bot nie dodaje punktów, kazdy jeden nowy użytkownik to nadal 1 pkt.

Jest możliwe aby bot w js podtrzymywał te punkty przez określony czas i działało to tak jak wyżej opisałem?

komentarz 4 lutego 2021 przez ScriptyChris Mędrzec (190,190 p.)

I bot nie dodaje punktów

Czyli nie wykonuje się linia 5 z inkrementacją zmiennej rp? Jesteś pewien, że warunek jest prawidłowo napisany? W jaki sposób kod tego pliku jest uruchamiany?

komentarz 5 lutego 2021 przez Ativ Nowicjusz (120 p.)
Wykonuje z tym że nie ważne ile dołączy użytkowników dalej RP wynosi 1.

Spodziewałem się ze to RP będzie sie po prostu dodawać przy każdym dołączeniu ale niestety tak nie jest. Gdyby tak było to prawdopodobnie wystarczyło by dodać do kodu resetowanie co X czasu RP i byłoby wszystko dobrze.
komentarz 5 lutego 2021 przez ScriptyChris Mędrzec (190,190 p.)

Powtórzę pytanie:

W jaki sposób kod tego pliku jest uruchamiany?

W obecnej formie to jest luźny kod, który przy każdym uruchomieniu ustawia zmienną rp na wartość 0, możliwe że przechodzi przez pierwsze dwa ify i wysyła do określonego kanału wiadomość o treści "rp = 1". Po czym przechodzi pewnie przez trzeci if, bo w nim zamiast porównania rp do liczby 25 jest przypisanie tejże liczby i zostaje wysłana kolejna wiadomość o treści "rp = 25".

komentarz 5 lutego 2021 przez Ativ Nowicjusz (120 p.)

Troszeczke pozmieniałem i zamiast rp jest po prostu ID w.json

 

let rUser = {
    id: (member.user.id),
};

try {

    // convert JSON object to a string
    const data = JSON.stringify(rUser, null, 4);

    // write file to disk
    fs.writeFileSync('./warns.json', data, 'utf8');

    console.log(`Zapisane pomyślnie!`); 

	const path = './warns.json'

	setTimeout(function(){
	fs.unlinkSync(path)
	 console.log(`Wyczyszczono`)
	}, 3000);

} catch (err) {
    console.log(`Error: ${err}`); 
	
} 

Póki co to uruchamiane jest to przez VSC.

I działa choć nie do końca tak jakbym chciał.

Mianowicie w momencie jeżeli ktoś dołączy do serwera z kontem młodszym niż 10 dni to jego ID jest zapisywane do ./warns.json oraz bot wysyła informacje zarówno na kanał z logami jak i osobie którą wyrzucił - i to jest już kawałek sukcesu.

Do pełni sukcesu potrzeba by zmienić prawdopodobnie 

setTimeout(function(){
	fs.unlinkSync(path)
	 console.log(`Wyczyszczono`)
	}, 3000);

Żeby fs.unlinkSync(path) działał tylko w momencie kiedy plik warns.json zawiera na swojej liście zapisaną konkretną minimalną ilość ID (np minimum 25 różnych ID) i wtedy dodatkowo przed usunięciem poszłoby member.kick na te zapisane ID. Jeżeli nie uzbierał by minimum 25 ID w przeciągu 60 sekund to po prostu sam fs.unlinkSync(Path) bez member.kick.

komentarz 5 lutego 2021 przez ScriptyChris Mędrzec (190,190 p.)

Ten skrypt jest wołany przez jakiś router, czy tak po prostu uruchamiasz go w VSC? Skąd jest brana zmienna member? Jak wygląda logika dołączania użytkowników do czatu?

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 208 wizyt
pytanie zadane 6 stycznia 2021 w C# przez kubaa322 Użytkownik (710 p.)
–2 głosów
1 odpowiedź 1,172 wizyt
pytanie zadane 27 lipca 2018 w JavaScript przez FrOsT Nowicjusz (120 p.)
0 głosów
1 odpowiedź 249 wizyt

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...