[DL] Helpop z powiadomieniami na discordzie

Projekty użytkowników
minecraft, aktywny, discord
tirex
tirex

Wstęp

Mam do zaprezentowania plugin do minecrafta, który dodaje do gry komendę helpop. Plugin testowałem na wersji javy 8 i wersji silnika 1.12.2.

Plugin wymaga utworzenia na serwerze discord webhooka (kiedyś dam link jak to zrobić).

Zasada działania

Gracz po wpisaniu komendy helpop + wiadomość wysyła wiadomość do administracji + bot na discordzie wysyła wiadomość na kanał, na którym jest skonfigurowany webhook.

Pobieranie

https://mega.nz/#!yxlgCbZI!ZvgxxOIipIL7VLz3CIjMV0gOLBHBbYgsB8sIs28EgTY

Uprawnienia

helpop.admin - uprawnienie potrzebne do tego, aby odbierać wiadomości w grze. helpop.toggle - uprawnienie potrzebne do tego, aby móc włączać/wyłączać helpopa. helpop.user - uprawnienie potrzebne do tego, aby móc wysyłać wiadomości na helpop.

Konfiguracja

Nic skomplikowanego nie będę opisywać.

helpop:
  enabled: true
webhooks:
  helpop:
  - url: https://discordapp.com/api/webhooks/{webhook.id}/{webhook.token}
    parameters:
      embeds:
      - color: '15158332'
        title: '{sender_name} napisał'
        description: '{message}'
  - url: https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
    parameters:
      color: '#e74c3c'
      fields:
      - title: '{sender_name} napisał'
        value: '{message}'
        short: false
      fallback: '{sender_name} napisał {message}'
messages:
  commands:
    helpop:
      correct_use: '&cPoprawne uzycie: &e/helpop '
      toggle:
        enable: '&cHelpop został włączony!'
        disable: '&cHelpop został wyłączony!'
      disabled: '&cHelpop jest aktualnie wyłączony!'
      message_style:
        receiver: '&4[HelpOp] &c{sender_name}&r> {message}'
        sender: '&c{sender_name}&r> {message}'

Zdjęcia

Wygląd wiadomosci na discordzie (nazwe bota możemy samemu dostosować podczas tworzenia webhooka). image|245x118

Wygląd wiadomości w grze (taka sama informacja dla gracza jak i dla administratora). image|259x19

Kod źródłowy

https://github.com/NoneTirex/minecraft-helpop

Dziondzio
Dziondzio

Fajne, tylko szkoda że na Discorda

tirex
tirex

Czemu szkoda?

Dziondzio
Dziondzio

Dlatego że mało(10) serwerów korzysta z Discorda a z np teamspeak więc(40), do projektu nic nie mam jest bardzo fajny 😉 ps dodaj że można sam zmieniać wygląd wiadomości i jeszcze tak żeby było helpop off i on w razie W

happi
happi

Dziondzio:

Dlatego że mało(10) serwerów korzysta z Discorda a z np teamspeak więc(40)

Skąd te statystyki?

Dziondzio
Dziondzio

happi:

Skąd te statystyki?

Bo gram na dużo serwerach, więc napisałem tak na oko.

Patbox
Patbox

Wytestuje 😉 Tylko polecam zmienić Zippyshare na coś innego. Myślałeś nad dodaniem tego pluginu na spigotmc.org albo dev.bukkit.org?

tirex
tirex

Nie myślałem, ale mogę to zmienić. Aktualnie plugin jest w wersji alpha, ale jak zaktualizuje go, aby można było go spokojnie używać to myślę, że go tam dodam.

anon10657637
anon10657637

Dziondzio:

Bo gram na dużo serwerach, więc napisałem tak na oko.

Ale nie na wszystkich, więc Twoje "statystyki" nie są wiarygodne.

@tirex Chyba coś za dużo w kodzie zostawiłeś:

public class TestDiscordHook
{
  public static void main(String[] args)
  {
    HttpBuilder httpBuilder = HttpBuilder.create();
    HttpConnection httpConnection = httpBuilder.buildConnection("https://discordapp.com/api/webhooks/434473344490930218/kca0_Ah_A86_8hptRrm7pabYRqP72BxqCtjV_P2UUPAzHbRG02qGRE8-rAFhp_YQ_Zk8");
    httpConnection.setHeader("User-Agent", "Helpop Minecraft (https://tirex.edu.pl, v0.1)");
    
    httpConnection.setMethod(HttpMethod.POST);
    httpConnection.setContentType(HttpContentType.JSON);
    
    JsonObject embed = new JsonObject();
    embed.addProperty("color", "3447003");
    embed.addProperty("description", "dasdsad");
    embed.addProperty("title", "dsds");
    
    JsonArray embeds = new JsonArray();
    embeds.add(embed);
    httpConnection.setParameter("embeds", embeds);
    try
    {
      System.out.println((String)httpConnection.execute(new StringResolver()));
    }
    catch (IOException e)
    {
      e.printStackTrace();
    }
  }
}
 
Bubi
Bubi

Bardzo fajny pomysł :) +

Patbox
Patbox

image|309x130 Działa i to najważniejsze. Tu link do główki: https://cravatar.eu/helmhead/Robotex/128.png

bvcz
bvcz

Config nie generuje się automatycznie, jest jedynie pusty plik config.yml. (Paper version git-Paper-1391 (MC: 1.12.2))

Dodałbym możliwość edycji wiadomości, zmianę koloru embeda na Discordzie oraz cooldown na użycie komendy

tirex
tirex

Dziękuje za wszystkie wskazówki:

Dziondzio:

Dlatego że mało(10) serwerów korzysta z Discorda a z np teamspeak więc(40), do projektu nic nie mam jest bardzo fajny 😉 ps dodaj że można sam zmieniać wygląd wiadomości i jeszcze tak żeby było helpop off i on w razie W

bvcz:

Dodałbym możliwość edycji wiadomości, zmianę koloru embeda na Discordzie oraz cooldown na użycie komendy

Postaram się dodać to jutro lub w poniedziałek (dzisiaj już nie dam rady).

@bvcz z tą konfiguracją też postaram się naprawić. Robiłem konfiguracje na szybko i możliwe, że nie wszystko jest w niej dopracowane (mimo, że konfiguracja jest prosta).

Vylence
Vylence

Dziondzio:

Fajne, tylko szkoda że na Discorda

Zamiast rozwijać nowe platformy i projekty, tym samym zachęcając osoby do odwiedzenia ich - Twoim zdaniem lepiej jest stać w miejscu?

Jeśli mogę spytać - jak Twoim zdaniem miałoby to wyglądać w przypadku teamspeaka?

Dziondzio
Dziondzio

Vylence:

Jeśli mogę spytać - jak Twoim zdaniem miałoby to wyglądać w przypadku teamspeaka?

Normalnie, gracz pisze /helpop on ma killaure i bot na ts3 daje poke właścicielowi lub admina z wiadomością on ma killaure

anon10657637
anon10657637

Niby jest implementacja protokołu Teamspeak'a w Javie, ale ona pozostawia dużo do życzenia jeśli chodzi o wydajne działanie, więc @tirex musiałby pokombinować by napisać własną, jak to zrobił w przypadku klienta HTTP notabene w tym pluginie.

tirex
tirex

Aktualizacja z dnia 15.04.2018

Zgodnie z tym co wczoraj napisałem w poście https://lvlup.rok.ovh/t/dl-helpop-z-powiadomieniami-na-discordzie/6295/#13?u=tirex

Postanowiłem dodać część funkcjonalności:

  • dowolna zmiana wszystkich parametrów wysyłanych za pomocą webhooka
  • wsparcie dowolnych webhooków (przy odpowiedniej konfiguracji)
  • możliwość zmiany wiadomości
  • możliwość włączenia/wyłączenia komendy helpop za pomocą:
    • włączenie /helpop on
    • wyłączenie /helpop off

Ze zmian, które nie wnikają w kod pluginu dodam, że postanowiłem zmienić hosting z zippyshare.com na mega.nz

Polecam wszystkim usunąć starą konfiguracje, gdyż nowa wygląda całkowicie inaczej. Po pierwszym uruchomieniu serwera z pluginem, powinien wygenerować się nowy plik config.yml, w którym możemy zobaczyć jak wygląda przykładowa konfiguracja:

helpop:
  enabled: true
webhooks:
  helpop:
  - url: https://discordapp.com/api/webhooks/{webhook.id}/{webhook.token}
    parameters:
      embeds:
      - color: '15158332'
        title: '{sender_name} napisał'
        description: '{message}'
  - url: https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
    parameters:
      color: '#e74c3c'
      fields:
      - title: '{sender_name} napisał'
        value: '{message}'
        short: false
      fallback: '{sender_name} napisał {message}'
messages:
  commands:
    helpop:
      correct_use: '&cPoprawne uzycie: &e/helpop '
      toggle:
        enable: '&cHelpop został włączony!'
        disable: '&cHelpop został wyłączony!'
      disabled: '&cHelpop jest aktualnie wyłączony!'
      message_style:
        receiver: '&4[HelpOp] &c{sender_name}&r> {message}'
        sender: '&c{sender_name}&r> {message}'

Nie zauważyłem, że potrzebne jest opóźnienie na wysłanie kolejnej wiadomości. W następnej aktualizacji postaram się to dodać.

Link do pobrania nowej wersji pluginu: https://mega.nz/#!yxlgCbZI!ZvgxxOIipIL7VLz3CIjMV0gOLBHBbYgsB8sIs28EgTY


@Dziondzio na początku nie pomyślałem o teamspeaku. W następnej aktualizacji postaram się dodać wsparcie dla tego komunikatora (ale nie obiecuję).

Dodaję ankietę, abym miał większą motywację jakby było więcej osób chętnych na tą funkcjonalność.

Dodać wsparcie do teamspeaka?

[poll type=regular public=true]

  • Tak
  • Nie [/poll]

Zaktualizuje główny post jak dostane do tego uprawnienia.

tirex
tirex

Odświeżam

tirex
tirex

Od dawna nie ruszałem tego pluginu. Z moich obserwacji wynika, że raczej plugin nie sprawia problemu co mnie niezmiernie cieszy. Z racji, że sobie o nim przypomniałem, bo potrzebuję takiego pluginu na mój serwer. Postanowiłem udostępnić jego kod źródłowy tutaj: https://github.com/NoneTirex/minecraft-helpop