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


Sajoin automatique avec une database
#1
Bonjour,
Je vient ici pour trouver un peu d'aide, en effet j'ai voulu créer un sajoin automatique envers les utilisateurs enregistrer dans une base de donnée ".db" mais je n'y arrive pas et je doit dire que je me tire les cheuveux.

Les enregistrements dans la base de donnée ce font ligne par ligne sous la forme :

Code:
pseudo@#salon
pseudo2@#salon,#salon2
Malheuresement j'ai l'impression qu'il ne lis pas ce qui ce trouve dans la base de donnée avec mon code tcl donc j'ai du surement raté la mise en page de la lecture de la base de donnée à la connexion ... donc le voici:


tcl
proc nicksaj {nick salon} {
    set uservip "[fread [clams:install_directory]sources/sajoin.db]"
	set llistsaj [llength $uservip]
	set i "0"
	while { $i <= $llistsaj } {
	set pseudo [lindex [split [lindex $uservip $i] "@"] 0]
	if {[string match -nocase $nick $pseudo]} {
	set salon [lindex [split [lindex $uservip $i] "@"] 1]
    if {[isindb $uservip $salon]!= -1} {
    putdcc $::clams(idx) ":[clams:server] SAJOIN $pseudo $salon"
    }
	incr i
	}
	return 1
	}
}
 
###################
# Clams Scriptdir #
###################
set ::clams(path) "[file dirname [info script]]/"
 
proc clams:install_directory {} { 
return $::clams(path) 
}

#2
Je ne connais pas ta commande fread, je la soupçonne de mal faire la lecture. Et je ne comprends pas ton tcl: quand est appelée nicksaj ? Tu sembles t'être compliqué la vie.
irc.zeolia.net - Offrez-moi un café
Merci de ne pas demander d'aide en MP
Away
#3
Nicksaj est appellé a chaque connexion au serveur (soit quand une personne rejoin n'importe quel salon).
Et je me complique toujours la vie sinon sa serais pas drole pour apprendre ^^
#4
Pour ma part, j'aurais fait un système qui charge le fichier en mémoire quand nécessaire (au start/rehash de l'egg ou lors de l'ajout/la suppression d'un vip) du genre:

tcl
proc init:vip {} {
   set fp [open "somefile" r]
   set file_data [read $fp]
   close $fp
   set data [split $file_data "\n"]
   foreach line $data {
      set infos [split $line "@"]
      set ::vip([string tolower [lindex $infos 0]]) [lindex $infos 1]
   }
}

Et ta procédure est alors simplifiée en:

tcl
proc nicksaj {nick salon} {
   if {![info exists $::vip([string tolower $nick])]} { return 0; }
   set chans [split $::vip([string tolower $nick]) ","]
   if { [lsearch $chans $salon] != -1 } {
      putdcc $::clams(idx) ":[clams:server] SAJOIN $pseudo $salon"
   }
   return 1
}

irc.zeolia.net - Offrez-moi un café
Merci de ne pas demander d'aide en MP
Away
#5
Ah ouai javou que ces enormement simplifié par rapport a mon code.
Je vais essayer, de finir ça et si sa marche je posterais tout ici sa poura etre utile a certains ^^
#6
Finalement comment j'ai dit je poste le code fait via l'aide d'un ami, ce code est largement plus simple que mon precedent et utilise une base de donnée sql


tcl
if {[issajoin $user]} {
        service:connect
		mysqlsel $::mysqlink "SELECT * FROM `votre_db` WHERE cible = '$user' ORDER BY id"
		if {[mysqlresult $::mysqlink rows] ne 0} {
		while {[set row [mysqlnext $::mysqlink]] ne ""} {
		set salonstaff [lindex $row 2]
		set chans [lindex $row 3]
		set cible [lindex $row 1]
		putdcc $::clams(idx) ":[clams:server] SAJOIN $cible $chans [clock seconds]"
		}
		} else {return 0;}
		service:deconnect


et voici la table


Code:
CREATE TABLE IF NOT EXISTS `clams_sajoins` (
  `id` int(11) NOT NULL auto_increment,
  `cible` varchar(255) NOT NULL default '',
  `salonstaff` text NOT NULL,
  `salonsajoin` text NOT NULL,
  `user` varchar(255) NOT NULL default '',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;


Possibly Related Threads…
Thread Author Replies Views Last Post
  TCL Auto-sajoin fonctionne partiellement. Aristide 24 15,395 24/02/2017, 17:36
Last Post: cestlemien
  Soucis avec un tcl de sajoin KeeViiNou 15 11,298 14/03/2014, 10:51
Last Post: KeeViiNou
  Message automatique heretoc 3 3,344 08/03/2013, 22:57
Last Post: aliasangelius
Sad Problème sajoin sur un salon. Alucard`68 1 3,894 22/04/2012, 16:58
Last Post: CrazyCat
  Sajoin automatique - Probleme de pseudonyme heretoc 3 4,051 01/06/2010, 15:50
Last Post: heretoc
  Affichage automatique avec précision en terme de jours Haribo 7 4,574 10/02/2010, 23:17
Last Post: Haribo
  Sajoin Par Vhost Babytigrou16 10 7,443 25/06/2009, 17:41
Last Post: BlackNight
  SAJOIN: pas bien CrazyCat 0 3,752 30/10/2008, 17:52
Last Post: CrazyCat
  Identification automatique CrazyCat 7 11,084 23/06/2008, 10:17
Last Post: BdS

Forum Jump:


Users browsing this thread: 1 Guest(s)