Implémentations de commandes pour GLaDOS #1

Open
opened 2023-06-09 22:25:43 +02:00 by Shadow · 10 comments
Member

Coucou, c'était pour savoir exactement quoi programmer comme commandes !

Commandes V4

On peut commencer par reprendre les commandes de la V4, j'en oublie sans doute mais :

  • bonjour
  • au revoir
  • merci
  • le coup des message "potes", "mec" et "gars"
  • l'heure
  • clear
  • annonce d'évènement
  • annonce des liens (gitea, mumble)
  • faire parler GLaDOS
  • (un)kick
  • (un)ban

Pour les deux dernières, peut-être à voir avec la future version comment c'est géré etc… ?

Commandes troll

Ensuite pour les commandes trolls, on peut mettre un certain nombre de conneries.

J'avais pensé à un système de chasse au canard, le bot fait pop des canards de manière random sur un channel réservé et le premier qui tire le canard (avec une commande du genre /pan ou !pan whatever) gagne une monnaie qui permet d'acheter de nouvelles balle, de faire pop de faux canard, de fausser le fusil du voisin etc.

C'est juste une idée et les possibilités sont sans limites…

Coucou, c'était pour savoir exactement quoi programmer comme commandes ! ### Commandes V4 On peut commencer par reprendre les commandes de la V4, j'en oublie sans doute mais : * bonjour * au revoir * merci * le coup des message "potes", "mec" et "gars" * l'heure * clear * annonce d'évènement * annonce des liens (gitea, mumble) * faire parler GLaDOS * (un)kick * (un)ban Pour les deux dernières, peut-être à voir avec la future version comment c'est géré etc… ? ### Commandes troll Ensuite pour les commandes trolls, on peut mettre un certain nombre de conneries. J'avais pensé à un système de chasse au canard, le bot fait pop des canards de manière random sur un channel réservé et le premier qui tire le canard (avec une commande du genre `/pan` ou `!pan` whatever) gagne une monnaie qui permet d'acheter de nouvelles balle, de faire pop de faux canard, de fausser le fusil du voisin etc. C'est juste une idée et les possibilités sont sans limites…
Shadow self-assigned this 2023-06-09 22:25:43 +02:00
Shadow added the
enhancement
label 2023-06-09 22:26:08 +02:00
Member

Ouais les kick et ban il faudra voir, peut-être nécessiter un /MSG pour restreindre la commande aux messages directs. Et bien sur restreindre les comptes qui peuvent l'utiliser.

Effectivement pour les mini-jeux ça peu être drôle, mais je pense que c'est pas le rôle de GLaDOS, rien n’empêche de créer un autre bot avec ces jeux par contre.

Ouais les kick et ban il faudra voir, peut-être nécessiter un /MSG pour restreindre la commande aux messages directs. Et bien sur restreindre les comptes qui peuvent l'utiliser. Effectivement pour les mini-jeux ça peu être drôle, mais je pense que c'est pas le rôle de GLaDOS, rien n’empêche de créer un autre bot avec ces jeux par contre.
Author
Member

C'était ma deuxième question de savoir s'il valait mieux faire un deuxième bot ou tout faire avec GLaDOS. :p

Effectivement, faire un deuxième bot me semble plus simple et propre. ^^

C'était ma deuxième question de savoir s'il valait mieux faire un deuxième bot ou tout faire avec GLaDOS. :p Effectivement, faire un deuxième bot me semble plus simple et propre. ^^
Owner

Il nous faudra de toute façon un panel admin pour gérer qui est kick/ban, combien de temps, les IPs etc. À mon avis il y a très peu à faire sur la shout

Il nous faudra de toute façon un panel admin pour gérer qui est kick/ban, combien de temps, les IPs etc. À mon avis il y a très peu à faire sur la shout

Salut, je pense qu'un /msg user serait sympa.

Ça pourrait tout aussi bien créer un salon privé entre les utilisateurs concernés¹, ou bien pareil mais on pourrait communiquer depuis la shout (vous suivez ? récapitulatif plus bas), ou bien juste un mode privé depuis la shout.

concernés¹ : Limité à deux utilisateurs ? Ou pas ?

Récap' :

Si message dans n'importe quel salon = /msg user text :
	Créer salon_privé si non existant ;
    	Envoyer message dans salon_privé et dans la shout ;
    	Message invisible aux user non-concernés ;
    fin
Si message dans salon_privé entre User1 et User2 :
	Envoyer message dans salon_privé ;
	Envoyer message dans shout à User2 de façon invisible aux autres User non-concernés ;
    fin

Vous suivez ? Vous pouvez me dire, si je suis pas clair.

Désolé, j'ai pas trouvé de balise spoiler :p

Salut, je pense qu'un `/msg user` serait sympa. Ça pourrait tout aussi bien créer un salon privé entre les utilisateurs concernés¹, ou bien pareil mais on pourrait communiquer depuis la shout (vous suivez ? récapitulatif plus bas), ou bien juste un mode privé depuis la shout. *concernés¹ : Limité à deux utilisateurs ? Ou pas ?* Récap' : ``` Si message dans n'importe quel salon = /msg user text : Créer salon_privé si non existant ; Envoyer message dans salon_privé et dans la shout ; Message invisible aux user non-concernés ; fin ``` ``` Si message dans salon_privé entre User1 et User2 : Envoyer message dans salon_privé ; Envoyer message dans shout à User2 de façon invisible aux autres User non-concernés ; fin ``` Vous suivez ? Vous pouvez me dire, si je suis pas clair. *Désolé, j'ai pas trouvé de balise spoiler :p*
Owner

L'idée de pousser les discussion privées a été évoquée plusieurs fois mais de façon générale on n'est pas très chauds. La raison principale c'est qu'un forum par définition est un lieu de discussion public, et on ne veut pas fragmenter ça en un million de petits fils privés. Notamment une proposition de rendre les MP similaires à des topics a été rejetée pour ça.

C'est faisable sur le serveur IRC par nature du serveur mais sur le site web je ne pense pas que ce soit une bonne idée.

L'idée de pousser les discussion privées a été évoquée plusieurs fois mais de façon générale on n'est pas très chauds. La raison principale c'est qu'un forum par définition est un lieu de discussion public, et on ne veut pas fragmenter ça en un million de petits fils privés. Notamment une proposition de rendre les MP similaires à des topics a été rejetée pour ça. C'est faisable sur le serveur IRC par nature du serveur mais sur le site web je ne pense pas que ce soit une bonne idée.

Ah, ok, je savais pas.

Mais vu qu'en plus, c'est déjà faisable grâce à l'IRC, mon idée ne servirait qu'à enjoliver la chose, donc bof.

Et d'ailleurs, merci à tout le monde pour votre travail ^^

Ah, ok, je savais pas. Mais vu qu'en plus, c'est déjà faisable grâce à l'IRC, mon idée ne servirait qu'à enjoliver la chose, donc bof. Et d'ailleurs, merci à tout le monde pour votre travail ^^

Déjà, est ce que vous seriez chaud pour programmer des commandes troll ?

N'importe lequels, hein. Mais est ce qu'il y'aurait vraiment un intérêt ? (question bête en surface)

Déjà, est ce que vous seriez chaud pour programmer des commandes troll ? N'importe lequels, hein. Mais est ce qu'il y'aurait vraiment un intérêt ? (question bête en surface)
Author
Member

Déjà je bosse à une surcouche sur le travail de Darks ^^ C'est une très bonne base, mais je pense qu'on peut bricoler une API qui facilite les choses ! :p

Dans l'idée voila où j'en suis :

  • On peut créer un bot (comme avant) avec un préfixe facultatif
  • On peut créer des commandes avec un décorateur simple et un def :
@commands.command(name="my_command_name")
def cmnd(msg, *args):
	pass
  • On peut ensuite ajouter ces commandes dans le bot via mon_bot.add_command(cmnd)

L'intérêt et de pouvoir avoir des nom de commandes complètement indépendant du nom de la fonction. Et la prochaine étape est de relier l'input et l'output. Je m'explique. Pour l'instant la sortie de la commande ressemble à mon_bot.irc.send("msg") mais le mon_bot de la commmande est hardcodé. Donc là je suis en train de travailler sur une classe qui permet d'encapsuler toutes les commandes et après on pourra ajouter des classes de commandes avec un Bot.add_cmnd_pack ou autre méthode du même accabit. ^^

Déjà je bosse à une surcouche sur le travail de Darks ^^ C'est une très bonne base, mais je pense qu'on peut bricoler une API qui facilite les choses ! :p Dans l'idée voila où j'en suis : * On peut créer un bot (comme avant) avec un préfixe facultatif * On peut créer des commandes avec un décorateur simple et un `def` : ``` @commands.command(name="my_command_name") def cmnd(msg, *args): pass ``` * On peut ensuite ajouter ces commandes dans le bot via `mon_bot.add_command(cmnd)` L'intérêt et de pouvoir avoir des nom de commandes complètement indépendant du nom de la fonction. Et la prochaine étape est de relier l'input et l'output. Je m'explique. Pour l'instant la sortie de la commande ressemble à `mon_bot.irc.send("msg")` mais le `mon_bot` de la commmande est hardcodé. Donc là je suis en train de travailler sur une classe qui permet d'encapsuler toutes les commandes et après on pourra ajouter des classes de commandes avec un `Bot.add_cmnd_pack` ou autre méthode du même accabit. ^^
Owner

Question con, pourquoi avoir séparé la définition de la commande de celle qui l'ajoute à un bot ? Même si on sépare GLaDOS du bot alakon, le cas de figure consistant à avoir une même commande pour deux bots ne devrait pas se présenter.

Dans ce cas, la syntaxe @mon_bot.command("!yolo") ; def command_yolo(msg): se suffit à elle même.

Et à un raccourci près c´est déjà implémenté ^^

command(x) = on(lambda m: m.startswith(x))

Question con, pourquoi avoir séparé la définition de la commande de celle qui l'ajoute à un bot ? Même si on sépare GLaDOS du bot alakon, le cas de figure consistant à avoir une même commande pour deux bots ne devrait pas se présenter. Dans ce cas, la syntaxe `@mon_bot.command("!yolo") ; def command_yolo(msg):` se suffit à elle même. Et à un raccourci près c´est déjà implémenté ^^ `command(x) = on(lambda m: m.startswith(x))`
Author
Member

En fait, j'ai repris la même construction que Discord parce que j'ai l'habitude de travailler avec cette API du coup ça me parraissait plus simple / intuitif… Mais c'est vrai que ce n'est pas forcément le cas…

Le point fort est de pouvoir avoir un système de commandes gérées dynamiquement (aucune idée de si ça peut servir ou pas xD). De même, ce système permet de rajouter une documentation et une description ou autant de champs que l'on veut (ça peut être pratique pour check les permissions ou ce genre de choses). Et enfin, les commandes peuvent être ensemble dans un fichier séparé on peut regrouper les commandes qui vont ensemble dans des classes et après on ajoute tout le monde au bot et ça me paraissait sympatique. ^^

En fait, j'ai repris la même construction que Discord parce que j'ai l'habitude de travailler avec cette API du coup ça me parraissait plus simple / intuitif… Mais c'est vrai que ce n'est pas forcément le cas… Le point fort est de pouvoir avoir un système de commandes gérées dynamiquement (aucune idée de si ça peut servir ou pas xD). De même, ce système permet de rajouter une documentation et une description ou autant de champs que l'on veut (ça peut être pratique pour check les permissions ou ce genre de choses). Et enfin, les commandes peuvent être ensemble dans un fichier séparé on peut regrouper les commandes qui vont ensemble dans des classes et après on ajoute tout le monde au bot et ça me paraissait sympatique. ^^
Sign in to join this conversation.
No Milestone
No Assignees
5 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: devs/GLaDOS#1
No description provided.