Bot na discorda

Kichiyaki

Miecznik
Wynik reakcji
85
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.
1610217509124.png

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

Jak sprawdzić komendy oferowane przez bota?
tw!help

Jak włączyć/wyłączyć wyświetlanie informacji o podbitych barbarkach?
tw!showennobledbarbs [id z tw!groups]

Jak włączyć/wyłączyć powiadomienia o podbiciach w jednym plemieniu/grupie?
tw!showinternals [id z tw!groups]

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!).

Aktualizacja 19.07.2020:
- Bot jest obecnie dostępny po angielsku i po polsku (z czego język angielski jest domyślny, więc jeżeli ktoś chce ustawić język polski musi wpisać komendę poniżej)
Kod:
tw!changelanguage pl
- Zostały zmienione nazwy niektórych komend.
- Możliwość wyłączenia powiadomień o podbitych barbarkach za pomocą komendy tw!showennobledbarbs [id grupy]

Aktualizacja 09.08.2020:
2 nowe komendy:
- tw!coordstranslation [serwer]
xL14oKn.png
- tw!disablecoordstranslation - wyłącza translator koordynat.

Aktualizacja 09.01.2021:
- Do komend tw!tribe topoda/topodd/topods/topod/toppoints oraz tw!observe zamiast ID można wprowadzać skróty plemion (liczy się wielkość liter).

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

notfair.

Pikinier
Wynik reakcji
122
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
250
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
85
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
85
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
85
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

Zwiadowca
Wynik reakcji
395
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
85
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
85
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
85
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

Zwiadowca
Wynik reakcji
395
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