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
(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"return0}# Encoding pour corriger un problème de charset. Ex: Ãle-de-Franceset 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.
23/12/2021, 22:26 (This post was last modified: 23/12/2021, 22:28 by uDc.)
(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"return0}# Encoding pour corriger un problème de charset. Ex: Ãle-de-Franceset 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 ?
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.