Direkt mit 'nem PHP-Script eine Verbindung ins IRC aufbauen und dort die Channeluser auslesen würde ich nicht empfehlen. Erstens ist es mühselig und zweitens läuft das meist über einen User, der dann alle X Minuten in den Channel platzt und danach wieder geht. Das würde mir ziemlich auf den Keks gehen.
Praktischer ist es, wenn du einen der Channeluser, die rund um die Uhr im Channel sind, dazu verdammst, alle X Minuten die im Channel aktiven User irgendwo abzulegen. Am besten wär dafür natürlich ein Bot geeignet, der sowieso im Channel rumhängt. Folgendes Eggdrop-Script habe ich dafür bei mir im Einsatz:
Damit liest der Eggdrop alle 5 Minuten die Channeluser in #channelname aus und legt sie in der Datei /home/lx/whatever/dateiname.db ab. Die Datei sieht dann so aus:
Der Status wird also mit an den Nick angehängt. Diese Datei jetzt noch mit PHP zu parsen und daraus eine Liste zu machen, sollte aber nicht mehr das Problem sein
Praktischer ist es, wenn du einen der Channeluser, die rund um die Uhr im Channel sind, dazu verdammst, alle X Minuten die im Channel aktiven User irgendwo abzulegen. Am besten wär dafür natürlich ein Bot geeignet, der sowieso im Channel rumhängt. Folgendes Eggdrop-Script habe ich dafür bei mir im Einsatz:
Code:
# HTML2.Tcl -- a lot like ques3.tcl, but I wrote this one myself and to my
# likings PLUS improvemnets for eggdrop1.3.4!
#
# fixed - doesn't display chan voices twice..
#
# Original Version by kn0 <keith@cs.oswego.edu>
# Edited for Eggdrop1.3.x by Prime <Unkonwn>
# Set these....
# Do this for every channel you want
set web_chans(#channelname) dateiname.db
# What directory are your web pages in? Or what directory do you want this to
# be in?
set web_dir /home/lx/whatever/
###### Do not edit anything beyond this point!!! ######
if {![info exists couter_running]} {
timer 5 web_write
set counter_running 1
}
proc web_write {} {
global web_dir botnick nick web_chans
foreach i [array names web_chans] {
set wpage $web_dir$web_chans($i)
set web_chan $i
set a [open $wpage w]
set chanlist [chanlist $web_chan]
set chanlist "$botnick [lsort [lrange $chanlist 1 end]]"
set oplist ""
set hoplist ""
set vlist ""
set noplist ""
set noplist2 ""
set noplist3 ""
set symbolop "@"
set symbolhop "%"
set symbolvoice "+"
foreach i $chanlist {if [isop $i $web_chan] {lappend oplist $i$symbolop} {lappend noplist $i}}
foreach i $noplist {
if [ishalfop $i $web_chan] {lappend hoplist $i$symbolhop} {lappend noplist2 $i}
}
foreach i $noplist2 {
if [isvoice $i $web_chan] {lappend vlist $i$symbolvoice} {lappend noplist3 $i}
}
foreach i "\{$oplist\} \{$hoplist\} \{$noplist3\} \{$vlist\}" {
foreach b $i {
if {$botnick != $b} {
puts $a "$b"
}
}
}
close $a
}
timer 5 web_write
}
bind topc - * web_topic
proc web_topic {nick uhost handle channel vars} {
global web_topic web_chans
if {[lsearch [array names web_chans] $channel] != "-1"} {
set web_topic($channel) $vars
}
}
web_write
putlog "\002HTML2\002 by \037Prime\037 - Writing: [array names web_chans] :stats files"
Damit liest der Eggdrop alle 5 Minuten die Channeluser in #channelname aus und legt sie in der Datei /home/lx/whatever/dateiname.db ab. Die Datei sieht dann so aus:
Code:
Nick1@
Nick2@
Nick3
Nick4
Nick5+
Der Status wird also mit an den Nick angehängt. Diese Datei jetzt noch mit PHP zu parsen und daraus eine Liste zu machen, sollte aber nicht mehr das Problem sein