Demande script Planning
#8
Effectivement, une inversion de lignes dans mon code.

Voici la version corrigée:
tcl
namespace eval planning {
 
	variable plchan "#canal"
	variable db "planning.db"
 
 
	variable mem
	bind msg - addpl ::planning::pladd
	bind pub - !planning ::planning::pllist
 
	proc pladd {nick uhost handle text} {
		if {[llength [split $text]]<3} {
			putserv "PRIVMSG $nick :La commande est /msg $::botnick addpl jj/mm/aaaa hh:min Description de l'évènement"
			return 0
		}
		set date [lrange [split $text] 0 1]
		set event [join [lrange [split $text] 2 end]]
		if {$event==""} {
			putserv "PRIVMSG $nick :Aucune description donnée..."
			return 0
		}
		set ts [checkdate $date]
		if {$ts == "E1"} {
			putserv "PRIVMSG $nick :La date n'est pas formatée comme il faut"
			return 0
		} elseif {$ts == "E2"} {
			putserv "PRIVMSG $nick :On ne peut pas planifier un évènement passé"
			return 0
		}
		::planning::dbsave $ts $event
		set strd [strftime "%d/%m/%Y %H:%M" $ts]
		putserv "PRIVMSG $::planning::plchan :Nouvel évènement pour le $strd : $event"
		return 1
	}
 
	proc pllist {nick uhost handle chan args} {
		if { [string tolower $chan] != [string tolower $::planning::plchan]} {
			putserv "PRIVMSG $nick :Pas sur le bon chan"
			return 0
		}
		::planning::dbload
		if {[llength $::planning::mem] < 1} {
			putserv "PRIVMSG $::planning::plchan :Aucun évènement"
			return 0
		}
		foreach line $::planning::mem {
			foreach {t e} $line {
				set strd [strftime "%d/%m/%Y %H:%M" $t]
				putserv "PRIVMSG $::planning::plchan :$strd $e"
			}
		}
	}
 
	proc dbsave {ts event} {
		set fo [open $::planning::db a]
		puts $fo "$ts $event"
		close $fo
		::planning::dbload
	}
 
	proc dbload {} {
		set ::planning::mem [list]
		if {![file exists $::planning::db]} { return 0 }
		set fi [open $::planning::db r]
		set tmp [read -nonewline $fi]
		close $fi
		set tmp2 [list]
		foreach line [split $tmp "\n"] {
			set ts [lindex $line 0]
			set event [lrange $line 1 end]
			if {$ts >= [clock seconds]} {
				lappend tmp2 [list $ts [join $event]]
			}
		}
		set ::planning::mem [lsort -index 0 $tmp2]
		unset tmp
	}
 
	proc checkdate {datetime} {
		if {![regexp {([0-3]\d)/([01]\d)/((20)?\d{2})\ ([0-2]\d):([0-5]\d)} $datetime match day mon year cent H i]} {
			# date mal formatée
			return "E1"
		}
		set ts [clock scan "$mon/$day/$year $H:$i"]
		if { $ts < [clock seconds]} {
			# date dans le passé...
			return "E2"
		}
		return $ts
	}
 
	proc init {} {
		::planning::dbload
	}
 
}
::planning::init


Répondre


Messages dans ce sujet
Demande script Planning - par deejay-wilo - 07/01/2018, 01:39
RE: Demande script Planning - par CrazyCat - 07/01/2018, 02:23
RE: Demande script Planning - par deejay-wilo - 07/01/2018, 14:57
RE: Demande script Planning - par CrazyCat - 07/01/2018, 17:26
RE: Demande script Planning - par deejay-wilo - 07/01/2018, 20:16
RE: Demande script Planning - par CrazyCat - 08/01/2018, 14:16
RE: Demande script Planning - par deejay-wilo - 09/01/2018, 10:20
RE: Demande script Planning - par CrazyCat - 10/01/2018, 00:54

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
Tchat 100% gratuit -Discutez en toute liberté