Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » GLaDOS V5
Shadow15510 Hors ligne Administrateur Points: 5504 Défis: 18 Message

GLaDOS V5

Posté le 28/10/2020 22:56

Hey !

Comme vous le savez la version 5 de Planète Casio est dans les cartons. Entre autres nouveauté un nouveau chat qui se fera non plus par la traditionnelle shoutbox mais via un serveur IRC. Nouveau chat implique nouvelle version de GLaDOS !

Je me propose pour faire la nouvelle GLaDOS, codée en Python pour V5.

J'aurais du coup besoin d'info… j'ai commencé à chercher un peu, le plus simple est de faire une lib maison pour connecter GLaDOS à IRC, lire et envoyer des messages. J'étais parti avec socket mais j'ai aussi besoin des certificats SSL et des authentifications SASL… J'avoue que je comprends pas trop les docs de pyOpenSSL

Merci d'avance !

Idées de commandes
Si vous en avez d'autres, hésitez pas à les proposer en commentaires
Commandes et messages prévus :
- Notification de création de topic
- Notification de nouveau message sur un topic
- Notification de publication d'un programme
- Notification de nouveau message sur un programme
- Kick / Unckick (non publique)
- Ban / Deban (non publique)
- Message custom (réservée au staff)
( - Recherche sommaire sur Wikipédia)
( - Traduction de mots)
( - Base de chatbot)

Commandes implémentées :
-



Breizh_craft En ligne Modérateur Points: 1171 Défis: 7 Message

Citer : Posté le 30/10/2020 17:44 | #


J’suis d’accord sur le fait que les kicks/bans de la v5 ont pas trop lieu d’être partagés entre IRC et site (ou alors du site vers l’IRC seulement, à la limite)… et faut tester la suppression de compte d’ailleurs.
Breizh.pm – Un adminsys qui aime les galettes.
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 31/10/2020 22:31 | #


Bon, le problème de communication asynchrone v5 → GLaDOS a été résolu de manière simple mais efficace : les messages sont envoyés de manière synchrone en UDP. Donc y'a pas de latence, d'acknoledge, et si le message se perd, tant pis.

Pour faire causer GLaDOS depuis la v5, ce sera aussi simple que ça :

from utils import glados

# Dire un message sur #general
glados.say("Hello général !")

# Dire un message sur #dev
glados.say("Salut les devs !", "#dev")

# Dire un message partout où GLaDOS est présente
glados.say("Salut tout le monde !", "#*")


Le message est à formater coté v5, GLaDOS se contentera de répéter ce qu'on lui dit. À terme on pourra potentiellement modifier le channel pour inclure des trucs types @pseudo, histoire d'envoyer un message privé au membre en question (à la réception d'un MP par exemple). On peut aussi envisager un système de regex/wildcard pour la target, pour cibler dev-* par exemple
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Potter360 Hors ligne Rédacteur Points: 1255 Défis: 2 Message

Citer : Posté le 01/11/2020 09:26 | #


Bon,je comprends rien mais est ce qu'il y a les sources de GLaDOS sur github histoire d'essayer de comprendre ?
Globalement, coder. Mal, mais coder.
Lephenixnoir En ligne Administrateur Points: 24673 Défis: 170 Message

Citer : Posté le 01/11/2020 09:29 | #


Excellent, Darks ! Super que tu aies réussi de régler ces difficultés. L'utilisation de GLaDOS sera tellement plus propre que dans la v42.

Soit dit en passant dans la v4.3, il y a un système d'événements/subscribers pour GLaDOS, ça vaut peut-être la peine de faire pareil pour pas mettre du BBCode partout dans le Python
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Shadow15510 Hors ligne Administrateur Points: 5504 Défis: 18 Message

Citer : Posté le 01/11/2020 09:45 | #


C'est génial !!
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Lephenixnoir En ligne Administrateur Points: 24673 Défis: 170 Message

Citer : Posté le 01/11/2020 09:50 | #


Petite précision :

Lephenixnoir a écrit :
Soit dit en passant dans la v4.3, il y a un système d'événements/subscribers pour GLaDOS, ça vaut peut-être la peine de faire pareil pour pas mettre du BBCode partout dans le Python

Vu le cas simple en fait on peut se contenter de trucs comme :

glados.new_topic(topic)
glados.new_comment(comment, topic)

etc, pour centraliser le BBCode Markdown de la shout.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Shadow15510 Hors ligne Administrateur Points: 5504 Défis: 18 Message

Citer : Posté le 01/11/2020 09:57 | #


Cette lib user- friendly af ♥

De mon côté j'ai un peu cherché pour avoir des commandes cheatées, c'est pas les plus importantes, mais ça pourrait être drôle… xD

import wikipedia
from googletrans import Translator

# Récupérer le résumé d'un article Wikipédia (la première ligne)
def get_summary(title):
    wikipedia.set_lang("fr")
    page = wikipedia.WikipediaPage(wikipedia.search(title, results = 1)[0])
    return f"{page.summary.splitlines()[0]} (lien : {page.url})"

# Traduire un mot, ou une phrase vers destination_lang
def translate(text, destination_lang):
    translator_tool = Translator()
    return translator_tool.translate(text, destination_lang).text


Pour les commandes 'normales' j'ai essayé de regarder, mais la V5 n'a pas encore de flux RSS ? (ou alors j'ai pas tapé les bonnes URL…)
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 01/11/2020 12:24 | #


Lephenixnoir a écrit :
Vu le cas simple en fait on peut se contenter de trucs comme :

glados.new_topic(topic)
glados.new_comment(comment, topic)

etc, pour centraliser le BBCode Markdown de la shout.

+1
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Breizh_craft En ligne Modérateur Points: 1171 Défis: 7 Message

Citer : Posté le 01/11/2020 12:28 | #


Pas compris pourquoi vous parlez de BBCode / Markdown. Y’a rien de tout ça dans IRC ^^’ (on peut faire un peu de formatage). Et oui on va perdre les liens vers les pseudo/topics, sauf à les afficher entièrement…

Ou alors vous parlez de balises spécifiques pour trigger GLaDOS depuis le forum ?
Breizh.pm – Un adminsys qui aime les galettes.
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 01/11/2020 12:37 | #


Ben au moins pour mettre en valeur les parties importantes du messages (auteur, nom du topic, etc). Mais oui c'est du formatage IRC et pas M↓
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir En ligne Administrateur Points: 24673 Défis: 170 Message

Citer : Posté le 01/11/2020 13:11 | #


Y'a moyen d'avoir un coup de formatage qui serait visible que sur le forum ? Genre sur ton client IRC normal y'a le texte brut et sur la shout y'a du formatage (un peu comme le mail texte/HTML) ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Citer : Posté le 01/11/2020 14:02 | #


Est ce que c'est vraiment nécessaire de se limiter au protocole IRC, de toute façon tout le monde utilisera un web wrapper ?

Un IRC recréé en web permettra de faire de la synchro (vu que le site gère le forum et le chat) et ne pas perdre de message glados.
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Breizh_craft En ligne Modérateur Points: 1171 Défis: 7 Message

Citer : Posté le 01/11/2020 14:07 | #


Zezombye a écrit :
Est ce que c'est vraiment nécessaire de se limiter au protocole IRC, de toute façon tout le monde utilisera un web wrapper ?


C’est faux, déjà, si on part sur un IRC c’est précisément pour pouvoir utiliser d’autres clients (web ou non) que celui intégré au site. De plus y’a pas énorméments de limitations. Je veux dire, ok, les liens à la limite, mais je pense que mettre le lien du post en complet est pas dramatique (ils seront pas excessivement longs normalement, si j’ai bien suivi). Quant au lien du profil on s’en fiche un peu (et il est accessible depuis le post il me semble…). Et oui, on peut faire de la détection dans le client web spécifique (un lien de post peut ainsi être réduit à son n° par exemple).

Zezombye a écrit :
Un IRC recréé en web permettra de faire de la synchro (vu que le site gère le forum et le chat) et ne pas perdre de message glados.


Dans ce cas c’est plus un IRC mais une shoutbox. Et puis, osef de perdre des messages en soit. Surtout que ça n’arrivera que si l’IRC ou le bot est down, et dans ce cas le problème sera pas de perdre quelques messages… et ce serait dommage de freeze le site parce que des trucs peu importants comme l’IRC ou son bot sont down.
Breizh.pm – Un adminsys qui aime les galettes.
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 01/11/2020 14:52 | #


pas perdre de message glados.

Je précise quand même que les messages de GLaDOS sur les espaces de discussion instantanés sont là uniquement par commodité. La source d'information primaire reste quand même la boite de réception et les flux RSS.

Au passage, encore un point pour l'API Gitea ↔ v5 dans la v5, c'est que si on veut faire un flux RSS de dev, on pourra plus facilement si Gitea ne propose pas déjà ça (?)
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Eragon En ligne Gardien des bots Points: 483 Défis: 0 Message

Citer : Posté le 06/11/2020 10:37 | #


Gitea est en cours d'implémentation(Gogs à vrai dire) mais on doit pas attendre ça avant une des prochaines releases majeur de gogs…
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 06/11/2020 10:39 | #


J'en profite pour lier le ticket correspondant : https://github.com/go-gitea/gitea/issues/569
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir En ligne Administrateur Points: 24673 Défis: 170 Message

Citer : Posté le 06/11/2020 11:30 | #


Si ça urge vraiment faudra envisager d'aller contribuer chez eux.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 06/11/2020 11:57 | #


C'est clairement pas urgent. Je soulevais le point au cas où on souhaite le faire manuellement, donc autant dire qu'on s'en fiche un peu pour le moment

Ajouté le 07/11/2020 à 14:31 :
Hello, quelques nouvelles du front.

J'ai créé un dépot, disponible sur la forge → https://gitea.planet-casio.com/devs/GLaDOS
C'est un premier jet, pas de doc pour le moment, du code assez sale. Je compte commit un truc plus propre dans la journée.

Au niveau des fonctionnalités, je ferais deux catégories :
– Back end : ce qu'il faut pour que GLaDOS fonctionne correctement
– Front end : ce qui sera le comportement de GLaDOS sur l'IRC

On a un peu réfléchi avec Eragon, voilà ce qu'on propose :

Back end
– Historique de X messages de chaque channel dans lequel GLaDOS est présente
– API facile à utiliser (ajouter un callback, traiter un message ou l'historique, etc.)

Front end
– Fonction pour inviter GLaDOS dans un channel
– Instant kick si… des conditions à définir sont réunies
– Fonctions type réponse auto

Si vous avez d'autres idées, n'hésitez pas à les proposer

Concernant le fait de verrouiller les pseudos, ça va être compliqué puisque les identifiants d'authentification sont complètement dissociés des identifiants IRC classiques. Donc faut voir ce que les plugins sont capables de fournir…

Ajouté le 11/11/2020 à 18:22 :
Moins d'avancées que ce que je souhaitais aujourd'hui, mais j'ai mis au propre le bot.

→ L'API est relativement fixée coté v5 (source)
→ L'API est relativement fixée coté GLaDOS (source)
→ La CD est en place sur le bot : pousser sur master met à jour sur le VPS. Attention à la synchronisation des branches entre la v5 et GLaDOS.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 146 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd