Bot na discorda

Kichiyaki

Miecznik
Wynik reakcji
96
Link <- do dodania bota na serwer discord.

Funkcje
1. Notyfikacje o podbiciu/stracie wioski przez jedno z x monitorowanych plemion.
1667040550071.png

Tutoriale

1. Tworzymy grupę
1688104554002.png
version - wersja gry
server - serwer
język - w jakim języku mają być wysyłane powiadomienia
internals - czy pokazywać przejęcia
barbarians - czy pokazywać przejęcia barbarek
channel-gains - na jakim kanale mają się pojawiać notyfikacje o zdobytych wioskach (pole opcjonalne, jak nie zostanie podane to te notyfikacje nie będą wysyłane)
channel-losses - na jakim kanale mają się pojawiać notyfikacje o straconych wioskach (pole opcjonalne, jak nie zostanie podane to te notyfikacje nie będą wysyłane)
2. Dodajemy plemiona do grupy
1688104575732.png
1688104604810.png
1688104641820.png

1. Znajdź ID grupy, którą chcesz usunąć
1688104674481.png
2. Usuwamy grupę
1688104698722.png

1. Znajdujemy ID grupy, którą chcemy zmodyfikować
1688104674481.png
2. Odpalamy jedną z komend zależnie od tego co chcesz zrobić:
1688104728136.png

FAQ
Jak często są sprawdzane przejęcia?

Co minutę.

Czy korzystam z danych twstats?
Nie, mam swoje własne API i consumery odpowiadające za aktualizację danych.

Czy można korzystać z mojego API?
Jeżeli ktoś chce to nie ma problemu, ale nie obiecuję, że nie wystąpią jakieś breaking changes.

Jeżeli ktoś ma jakiekolwiek pytania/problemy to proszę je pisać w tym temacie/kontaktować się na discordzie kichiyaki lub email contact@tribalwarshelp.com.
 
Ostatnia edycja:

notfair.

Miecznik
Wynik reakcji
305
Jak wam wyskoczy że świat jest nieobsługiwany to pewnie podaliście sam numer a trzeba np pl150 a nie samo 150.
 

PabloCanaletto

Topornik
Wynik reakcji
264
Mniej opcji od Ozreła, ale ładniejsze i przynajmniej działa xD

Pokazałbyś jakieś przykłady korzystania z API?

@edit
Gdzie błędy zgłaszać? ;> <czytaj> ;D
 
Ostatnia edycja:

Kichiyaki

Miecznik
Wynik reakcji
96
Mniej opcji od Ozreła, ale ładniejsze i przynajmniej działa xD

Pokazałbyś jakieś przykłady korzystania z API?

@edit
Gdzie błędy zgłaszać? ;> <czytaj> ;D
Tak czułem, że ktoś coś testuje xD. Już prawdopodobnie naprawiłem ten błąd co crashował + dodałem autorestart kontenera w dockerze, ale możesz napisać na pw o co chodzi.

Jutro dodam przykłady.
 

Kichiyaki

Miecznik
Wynik reakcji
96
Teoretycznie id 0 łamie zastosowanie tej komendy (miało generować dla plemion, a nie dla osób poza plemieniem), dlatego już nie działa.
 

Kichiyaki

Miecznik
Wynik reakcji
96
API

Playground - Tu możesz testować zapytania.

1. Jak zobaczysz wszystkie dostępne zapytania/pola/filtry?
Klikamy na docs w playgroundzie. W spoilerze dodałem screena na którym jest zaznaczony ten przycisk.
iBGmEt7.png

2. Przykładowe query:
2.1 Ostatnie przejęcia na świecie pl151
Kod:
query {
  liveEnnoblements(server: "pl151") {
    newOwner {
      id
      name
      tribe {
        id
        name
        tag
      }
    }
    oldOwner {
      id
      name
      tribe {
        id
        name
        tag
      }
    }
    ennobledAt
    village {
      id
      name
      x
      y
    }
  }
}
2.2 Top 30 graczy pod względem punktów, którzy nie należą do żadnego plemienia na świecie pl148
Kod:
query {
  players(server: "pl148", filter: { tribeID: [0], sort: "points DESC", limit: 30 }) {
    total
    items {
      id
      name
      rank
      points
      totalVillages
      rankAtt
      rankDef
      rankTotal
      rankSup
    }
  }
}
2.3 Wszystkie osady koczowników z bonusem do luda na świecie pl151, które nie zostały jeszcze przez nikogo przejęte
Kod:
query {
  #bonusy
  #0 - brak bonusu, zwykła barbarka
  #1 - 100% do produkcji drewna
  #2 - 100% do produkcji gliny
  #3 - 100% do produkcji żelaza
  #4 - bonus do luda
  #5 - 33% szybsza rekrutacja w koszarach
  #6 - szybsza rekrutacja w stajni
  #7 - szybsza rekrutacja w warsztacie
  #8 - 30% do produkcji każdej surki
  #9 - koczownicza z powiększoną pojemnością spichlerza
  villages(server: "pl151", filter: { playerID: [0], bonus: 4 }) {
    total
    items {
      id
      name
      points
      x
      y
      player {
        id
        name
      }
    }
  }
}
2.4 wyszukiwania gracza po ID
Kod:
query {
  player(server: "pl148", id: 699723858) {
    name
    id
  }
}
2.5 wyszukiwanie graczy po frazie nazwy
Kod:
query {
  players(server: "pl148", filter: { nameIEQ: "%pablo%" }) {
    total
    items {
      id
      name
    }
  }
}
2.6 pobranie wszystkich światów, które znajdują się w bazie danych wraz z ich configiem/datą kiedy ostatnio zostały zaktualizowane dane (wszystkie możliwe pola proszę sprawdzić opcją na górze, ja wybrałem tylko kilka)
Kod:
query {
  servers {
    items {
      id
      key
      dataUpdatedAt
      langVersion {
        timezone
        tag
      }
      config {
        moral
        game {
          watchtower
        }
        win {
          check
        }
        snob {
          rise
          maxDist
          coinWood
          coinIron
          coinStone
        }
      }
      buildingConfig {
        main {
          iron
          maxLevel
          minLevel
          buildTime
          buildTimeFactor
        }
        watchtower {
          minLevel
          maxLevel
        }
      }
      unitConfig {
        light {
          pop
          speed
          carry
        }
      }
      langVersion {
        tag
        name
      }
    }
  }
}

3. Jak wykonać przykładowego requesta z poziomu JSa?
JavaScript:
const query = `
    query liveEnnoblements($server: String!) {
      liveEnnoblements(server: $server) {
        newOwner {
          id
          name
          tribe {
            id
            name
            tag
          }
        }
        oldOwner {
          id
          name
          tribe {
            id
            name
            tag
          }
        }
        ennobledAt
        village {
          id
          name
          x
          y
        }
      }
    }
  `;
fetch('https://api.tribalwarshelp.com/graphql', {
  method: 'POST',
  body: JSON.stringify({
    query,
    variables: {
      server: 'pl148',
    },
  }),
  headers: {
    'Content-Type': 'application/json',
  },
})
  .then((res) => {
    return res.json();
  })
  .then(({ data, errors }) => {
    if (errors && Array.isArray(errors) && errors.length > 0) {
      throw new Error(errors[0].message);
    }
    console.log(data);
  })
  .catch((err) => console.log(error));

Polecam też każdemu zainteresowanemu zapoznać się z GraphQL.

Niedługo pojawi się też historia graczy/plemion + statystyki światów oraz pełna dokumentacja z przykładami jak korzystać z API. (plus może stronka jak twstats, ale nad tym się jeszcze zastanawiam)
 
Ostatnia edycja:

wielki asasyn

Ciężki Kawalerzysta
Wynik reakcji
1.119
Witajcie!

Link <- do dodania bota na serwer discord.

Funkcje
1. Informacje o stracie/podbiciu wioski przez jedno z x obserwowanych plemion.
y8ehCuW.png
2. Możliwość wygenerowania listy najlepszych agresorów/obrońców/wspierających z wybranych plemion.
c7d4Qdy.png

Co jeszcze planuję dodać?
1. Wyszukiwanie wszystkich światów na których grał x gracz (na zamknięte światy nie ma co liczyć, gdyż plemiona nie udostępniają ich danych).
2. I18N (żeby inne wersje językowe plemion też mogły z tego korzystać)
Czekam również na jakieś ciekawe pomysły od was.

Jak często są sprawdzane przejęcia?
Co minutę.

Jak sprawdzić komendy oferowane przez bota?
tw!help

Skąd wziąć ID plemienia?
Trzeba wejść na profil plemienia a reszta w spoilerze jest zaznaczona.
YeTaIFJ.jpg

Czy korzystam z danych twstats?
Nie, mam swoje własne API i własnego crona, który zajmuje się pobieraniem danych.

Czy można korzystać z twojego API?
Jeżeli ktoś chce to nie ma problemu.

Notka dla teamu plemion:
1. Dane pobierane z interfacu get_conquer są cachowane na 30s/serwer, więc nie będzie problemu ze zbyt wielką ilością wykonywanych zapytań.
2. Dane ze światów pobieram co godzinę (chodzi o graczy, plemiona, wioski, pokonanych przeciwników a nie o przejęcia!).

Jeżeli ktoś ma jakiekolwiek pytania/problemy to proszę je pisać w tym temacie/kontaktować się na discordzie Kichiyaki#2064.

W przyszłości będzie możliwość dla funkcji podbić/strat ograniczyć rejon na mapie w którym przejęcia będą wyświetlana?

Przykładowo aby tylko były powiadomienia tylko dla podbić wiosek z koordynatami Y < 520.
Inaczej będzie zbyt duży spam jak pokazuje wszystkie przejęcia plemienia które ma kilkanaście tysięcy wiosek.
 

Kichiyaki

Miecznik
Wynik reakcji
96
W przyszłości będzie możliwość dla funkcji podbić/strat ograniczyć rejon na mapie w którym przejęcia będą wyświetlana?

Przykładowo aby tylko były powiadomienia tylko dla podbić wiosek z koordynatami Y < 520.
Inaczej będzie zbyt duży spam jak pokazuje wszystkie przejęcia plemienia które ma kilkanaście tysięcy wiosek.

Wydaje mi się, że dodanie wyboru czy wyświetlać podboje wiosek barbarzyńskich załatwi sprawę.

#Edit
+ trzeba pamiętać, że wszystkie plemiona dodane w tw!observations są traktowane jako jedność i nie pokazuje podbić darm
 
Ostatnia edycja:

Kichiyaki

Miecznik
Wynik reakcji
96
3/h w lategame nie jest w sumie sporym wynikiem.

Nie planuję żadnego zawężania terenu na podstawie kontynentów/koordynat (pojawi się tylko opcja do wykluczenia ze strat/podbić plemion sojuszniczych/takich co nas nie interesują + czy ma wyświetlać info o podbitych barbarkach). Proponuję po prostu wyciszenie kanału z podbitymi wioskami, jeżeli komuś przeszkadza spam.
 

krzysiekpirat

Chłop
Wynik reakcji
0
Czy powinno wyswietlac jakas komende po poprawnym dodaniu plemienia do obserwowanych?
Wpisuje dla przykladu:
tw!observe [pl149] [919]
otrzymuje odpowiedz bota:
tw!observe [świat] [id plemienia]

notomiast po wpisaniu:
tw!observations
nic sie nie wyswietla
 

krzysiekpirat

Chłop
Wynik reakcji
0
A czy mozna dodac grupe obserwowanych plemion do jednego kanalu a inna grupe obserwowanych plemion do innego kanalu?

Teraz stworzylem osobne serwery, ale czy jest opcja posiadania grup wlg kanalu?
 

Kichiyaki

Miecznik
Wynik reakcji
96
A czy mozna dodac grupe obserwowanych plemion do jednego kanalu a inna grupe obserwowanych plemion do innego kanalu?

Teraz stworzylem osobne serwery, ale czy jest opcja posiadania grup wlg kanalu?

W obecnej wersji nie, ale w przyszłym tygodniu pojawi się nowa która będzie to zawierać.
 

wielki asasyn

Ciężki Kawalerzysta
Wynik reakcji
1.119
Wydaje mi się, że dodanie wyboru czy wyświetlać podboje wiosek barbarzyńskich załatwi sprawę.

#Edit
+ trzeba pamiętać, że wszystkie plemiona dodane w tw!observations są traktowane jako jedność i nie pokazuje podbić darm

Bardziej miałem na myśli aby było ograniczenie choćby do kontynentu jak nie do wyznaczonej strefy. Jak gram na K42 to podboje z K47 na drugim końcu świata mało wnoszą do mojej gry i nie muszę o nich wiedzieć (to tylko extra spam gdy i tak jest ich dziesiątki) gdy jest już late game i plemię ma pół świata.

Wiosek barbarzyńskich zazwyczaj nie ma w późniejszym etapie gry.

Tak to testowałem bota na discord i działa bardzo dobrze :)
Tylko tak jak wcześniej wspominałem trochę spam się robi jak jest kilkaset przejęć dziennie i chciałem to jakoś mieć możliwość podzielić na różnych kanałach.
 
Do góry