Mise en forme de code: pensez à utiliser les balises [ tcl ] et [ /tcl ] (sans les espaces bien sûr) autour de vos codes tcl afin d'avoir un meilleur rendu et une coloration syntaxique. x


Check de proxy avec ip-api
#16
il faut ajouter une condition en début de procédure:


tcl
if {$chan ne "#opers"} { 
    putserv "NOTICE $nick : Tu n'as pas le droit de taper la cmds" 
}

  Reply
#17
(22/12/2021, 19:21)Amand Wrote:
(22/12/2021, 18:50)CrazyCat Wrote: Ta variable $codepostal ne sera jamais instanciée à ce niveau là, elle est dans $data et doit être récupérée par un dict get. De plus c'est une très mauvaise idée de traiter $data comme une liste alors que c'est un dict.
Je verrais plutôt :

tcl
proc ipcheck {nick uhost handle chan text} {
  set data [getipdatas $text]
  if {![llength data] == 0 || ([dict exist $data status] && [dict get $data status] ne "success")} {
    putlog "No data found"
    return 0
  }
 
  # Encoding pour corriger un problème de charset. Ex: Île-de-France
  set continent [encoding convertfrom utf-8 [dict get $data continent]]
  set country [encoding convertfrom utf-8 [dict get $data country]]
  set region [encoding convertfrom utf-8 [dict get $data region]]
  set city [encoding convertfrom utf-8 [dict get $data city]]
 
  set codepostal [lindex $data zip]
  set isp [dict get $data isp]
  set mobile [dict get $data mobile]
  set proxy [dict get $data proxy]
  set hosting [dict get $data hosting]
  set proxytrad [string map -nocase {"true" "\0033oui\003" "false" "\0034non\003"} $proxy]
  set mobiletrad [string map -nocase {"true" "\0033oui\003" "false" "\0034non\003"} $mobile]
  set hostingtrad [string map -nocase {"true" "\0033oui\003" "false" "\0034non\003"} $hosting]
 
  putserv "PRIVMSG $chan :$text : Continent: $continent - Country: $country - Region: $region - City: $city - Code postal: $codepostal - ISP: $isp - Mobile: $mobiletrad - Proxy: $proxytrad - Hosting: $hostingtrad"
  }
}


Note que j'utilise llength sur la première condition parce que c'est le plus simple pour vérifier que la procédure getipdatas a bien retourné quelque chose qui puisse ressembler à un dictionnaire

il manque un $ sur le $data du  llength et il y a une accolade en trop à la fin .

Ça me retourne toujours " No data found " , je fais des tests.

Ce post est passé à la trappe :)
  Reply
#18
C'est de ma faute :) il y a un "!" en trop dans la condition, voila ce que c'est de faire du code puis de changer d'avis sur la manière de procéder.

tcl
if {[llength $data] == 0 || ([dict exists $data status] && [dict get $data status] ne "success")} {


(je corrige mon post initial)
zeolia: tchat gratuit, sans inscription ni publicité
Merci de ne pas demander d'aide en MP
Away
  Reply
#19
(23/12/2021, 18:04)Amand Wrote:
(22/12/2021, 19:21)Amand Wrote:
(22/12/2021, 18:50)CrazyCat Wrote: Ta variable $codepostal ne sera jamais instanciée à ce niveau là, elle est dans $data et doit être récupérée par un dict get. De plus c'est une très mauvaise idée de traiter $data comme une liste alors que c'est un dict.
Je verrais plutôt :

tcl
proc ipcheck {nick uhost handle chan text} {
  set data [getipdatas $text]
  if {![llength data] == 0 || ([dict exist $data status] && [dict get $data status] ne "success")} {
    putlog "No data found"
    return 0
  }
 
  # Encoding pour corriger un problème de charset. Ex: Île-de-France
  set continent [encoding convertfrom utf-8 [dict get $data continent]]
  set country [encoding convertfrom utf-8 [dict get $data country]]
  set region [encoding convertfrom utf-8 [dict get $data region]]
  set city [encoding convertfrom utf-8 [dict get $data city]]
 
  set codepostal [lindex $data zip]
  set isp [dict get $data isp]
  set mobile [dict get $data mobile]
  set proxy [dict get $data proxy]
  set hosting [dict get $data hosting]
  set proxytrad [string map -nocase {"true" "\0033oui\003" "false" "\0034non\003"} $proxy]
  set mobiletrad [string map -nocase {"true" "\0033oui\003" "false" "\0034non\003"} $mobile]
  set hostingtrad [string map -nocase {"true" "\0033oui\003" "false" "\0034non\003"} $hosting]
 
  putserv "PRIVMSG $chan :$text : Continent: $continent - Country: $country - Region: $region - City: $city - Code postal: $codepostal - ISP: $isp - Mobile: $mobiletrad - Proxy: $proxytrad - Hosting: $hostingtrad"
  }
}


Note que j'utilise llength sur la première condition parce que c'est le plus simple pour vérifier que la procédure getipdatas a bien retourné quelque chose qui puisse ressembler à un dictionnaire

il manque un $ sur le $data du  llength et il y a une accolade en trop à la fin .

Ça me retourne toujours " No data found " , je fais des tests.

Ce post est passé à la trappe :)

Celle-si elle est visible sur tout les salon:

Peut on le coriger si possible que sa soit uniquement sur #Opers  ?
  Reply
#20
(23/12/2021, 22:26)uDc Wrote: Celle-si elle est visible sur tout les salon:

Peut on le coriger si possible que sa soit uniquement sur #Opers ?

(22/12/2021, 21:57)Amand Wrote: il faut ajouter une condition en début de procédure:


tcl
if {$chan ne "#opers"} { 
    putserv "NOTICE $nick : Tu n'as pas le droit de taper la cmds" 
}

Il suffit de ne pas lire que le dernier post
zeolia: tchat gratuit, sans inscription ni publicité
Merci de ne pas demander d'aide en MP
Away
  Reply
#21
Bonjour,

J'ai 1 erreur que j'arrive pas le corgier:

Tcl error [scanip:join_proxy_check]: invalid command name " "

(24/12/2021, 14:07)CrazyCat Wrote:
(23/12/2021, 22:26)uDc Wrote: Celle-si elle est visible sur tout les salon:

Peut on le coriger si possible que sa soit uniquement sur #Opers  ?

(22/12/2021, 21:57)Amand Wrote: il faut ajouter une condition en début de procédure:


tcl
if {$chan ne "#opers"} { 
    putserv "NOTICE $nick : Tu n'as pas le droit de taper la cmds" 
}

Il suffit de ne pas lire que le dernier post

Sa te derange pas de ma la donner le tcl complet car j'arrive pas la resoudre le pb :(


Attached Files
.tcl   pro.tcl (Size: 9.58 KB / Downloads: 5)
  Reply
#22
(25/12/2021, 14:10)uDc Wrote: Bonjour,

J'ai 1 erreur que j'arrive pas le corgier:

Tcl error [scanip:join_proxy_check]: invalid command name " "


Sa te derange pas de ma la donner le tcl complet car j'arrive pas la resoudre le pb :(

Est-ce que sa vous derange pas de voir ça svp les ami.
(25/12/2021, 14:10)uDc Wrote: Bonjour,

J'ai 1 erreur que j'arrive pas le corgier:

Tcl error [scanip:join_proxy_check]: invalid command name " "

(24/12/2021, 14:07)CrazyCat Wrote:
(23/12/2021, 22:26)uDc Wrote: Celle-si elle est visible sur tout les salon:

Peut on le coriger si possible que sa soit uniquement sur #Opers  ?

Sa te derange pas de ma la donner le tcl complet car j'arrive pas la resoudre le pb :(

Est-ce que sa vous derange pas de voir ça svp les ami.


Attached Files
.tcl   pro.tcl (Size: 9.58 KB / Downloads: 2)
  Reply
#23
Lorsque tu as une telle erreur, tapes .set errorInfo en party-line pour avoir plus d'informations sur l'erreur.

Le problème vient de ton script qui est sûrement édité avec un logiciel inapproprié, les espaces utilisés pour l'indentation ne semblent pas bons.
En l'éditant avec notepad++ et en remplaçant tes faux espaces par des espaces normaux, ça fonctionne.
zeolia: tchat gratuit, sans inscription ni publicité
Merci de ne pas demander d'aide en MP
Away
  Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)