[PSDK] Configurer des Webhooks Discord et les utiliser

1 Réponses • 137 Vues

Suite à des demandes j'ai souhaité faire ce poste afin de répondre à tous et à bien d'autres qui ne savent pas comment faire :3
Le travail a surtout été fait par Nuri Yuri dans un sujet existant => https://pokemonworkshop.fr/forum/index.php?topic=5025.0

Comment configurer un webhook discord (en 4 étapes) ?
1/Accéder aux paramètres de son serveur


2/Aller dans "Intégrations"


3/ Cliquer sur "Créer un webhook"


4/ Spécifier son webhook : vous lui donner un nom, un logo et le salon où il enverra ces messages. Puis faites "Enregistrer les modifications"

Faites "copier l'URL du webhook" et mettez-vous le dans un coin. Attention de ne pas le partager,  toute personne disposant du lien peut utiliser votre webhook.

Comment utiliser mes webhooks ?

Téléchargez le zip => https://mega.nz/file/qzxDmQDL#Mxqy34ht19uHkDnDZITcOIThv9EwanMlEt2VxxK-gwE

Déplacez le dans le dossier "scripts" à la racine de votre jeu sous PSDK

Puis décompressez ce zip à l'intérieur de ce dossier. Vous aurez donc ce dossier :

Vous aurez les 2 fichiers suivants :


Dans webhooks :
Vous pourrez définir vos Webhooks dans DISCORD_WEBHOOK_URI :

Lorsque vous ferez un appel, si vous ne précisez pas quelle webhook vous utilisez, ça ira chercher par défaut :default

Dans InterpreterWebhooks :
Pour poster un message simple il est possible d'utiliser ceci :
post_simple_message_on_discord(MESSAGE, avatar: AVATAR, username: USERNAME, webhook_url: WEBHOOK)
Avec :
MESSAGE: le message à envoer
AVATAR: le lien de l'image qu'aura votre webhook
USERNAME: Le nom de votre webhook
WEBHOOK : le lien de votre webhook que vous aurez au préalable copier ou la clé (comme :example) de DISCORD_WEBHOOK_URI

Concernant l'avatar et le nom, si vous ne les précisez pas, votre webhook aura l'image et le nom que vous aurez défini sur votre serveur discord au préalable?
Pour le webhook_url, si vous ne le précisez pas

1er Exemple :

Résultat :


2eme exemple :

Ici je dis d'aller chercher la clé :example dans DISCORD_WEBHOOK_URI
Résultat :


Envoyer un message personnalisé :
La méthode présentée ci-dessus permet une utilisation rapide afin de ne pas se surcharger inutilement. Si vous voulez quelque chose de personnalisé avec des embeds par exemple, allez sur ce site => https://discohook.org/
Vous pourrez avoir une prévisualisation et générer du code pour votre embed, exemple :


Une fois vos modifications faites, récupérez ce qui se trouve être du JSON en-bas :


Maintenant revenez dans InterpreterWebhooks et créez une nouvelle méthode (que je nommerai "post_example_message_on_discord" ici). Dedant vous appellerez la méthode :
DiscordWebhooks.post()
Puis collez le JSON entre les parenthèses que vous avez précédemment copié. Vous obtiendrez quelque chose similaire à ceci :


Il ne vous reste plus qu'à exécuter la méthode que vous venez de créer en event :

Résultat :


Et voilà, si vous avez des questions / remarques n'hésitez pas  (a)

« Modifié: 11 novembre 2020, 01:14:17 par Damien Linux »

Linux c'est plus qu'un OS, c'est une passion

Tuto Script PSDK

Attention : 2 bugs dont un patch :
1ere erreur :
Le 1er bug concerne le Yuki_ErrorHandler. Quand la 2eme erreur a lieu, un message est remonté dans Yuki_ErrorHandler. lors du traitement de l'exception une erreur d'encodage dû au message fait planter la méthode critical_section de Yuki_ErrorHandler.
Comme il s'agit d'un bug sur le core de PSDK, le problème ainsi que la possible résolution a été remontée à Nuri Yuri.

2eme erreur :
Il se trouve que le script de base génère une erreur si le joueur est hors-ligne. J'ai patch le problème en transformant l'exception en un simple Warning sur le cmd  si vous êtes sur Windows ou bash si vous êtes sur Linux.

Vous pouvez télécharger directement la nouvelle archive corrigée (sachant que comme la 2eme erreur est corrigé, la 1ere n'est plus levée également) : https://mega.nz/file/qzxDmQDL#Mxqy34ht19uHkDnDZITcOIThv9EwanMlEt2VxxK-gwE
Le lien est aussi mis à jour dans le 1er message de ce fil

Si vous préférez modifier à la main, voilà comment faire :
Dans 09100 NuriYuri Webhooks/09101 webhooks.rb l.22 :
Remplacez :
def post(url, data = url, key = :default)
      url = DISCORD_WEBHOOK_URI[key] if url.is_a?(Hash)
      url = URI(url) if url.is_a?(String)
      Net::HTTP.post(url, data.to_json, "Content-Type" => "application/json")
  end

Par :
def post(url, data = url, key = :default)
      url = DISCORD_WEBHOOK_URI[key] if url.is_a?(Hash)
      url = URI(url) if url.is_a?(String)
      begin
        Net::HTTP.post(url, data.to_json, "Content-Type" => "application/json")
      rescue SocketError => exception
        puts "DiscordWebhooks::post - Warning : #{exception.message}\n"
        # No Internet connection, we ignore the problem
      end
  end

Et voilà, vous pouvez jouer en hors-ligne sans craindre de bug  (a)

« Modifié: 11 novembre 2020, 01:37:49 par Damien Linux »

Linux c'est plus qu'un OS, c'est une passion

There was an error while thanking
Thanking...