Seite 1 von 1

Post in Channel (tcl)

Verfasst: 27.06.2008 13:46
von Slup
Grüße,

Unzwar suche ich schon eine ganze weile nach einem Mod/Snippet der es mir ermöglicht, neue post aus dem Forum im IRC Channel automatisch zu posten.
Am besten währe eine Lösung über nen eggi.

Gibt es schon sowas?

Verfasst: 27.06.2008 14:17
von tas2580
1. Das TCL Script

Code: Alles auswählen

    utimer 2 newthreads

    proc newthreads { } {
    set forumfile [open /kompletter/pfad/zu/httpdocs/newthread.dat r]
    while {![eof $forumfile]} {
    gets $forumfile lalala
    if {$lalala != ""} { puthelp "PRIVMSG #deinchannel :$lalala!" }
    }
    close $forumfile
    set forumfile [open /kompletter/pfad/zu/httpdocs/newthread.dat w]
    puts $forumfile ""
    close $forumfile
    utimer 2 newthreads
    } 
Hier muss Pfad und Channel angepasst werden.
Dann braucht man natürlich eine Datei mit dem Namen newthread.dat der man chmod 777 geben muss.

Änderung am Forum:
Öffne includes/functions_posting.php und suche

Code: Alles auswählen

        // Submit new topic
        if ($post_mode == 'post')
        { 
Füge danach ein

Code: Alles auswählen

            // Begin Post to IRC       
            if ($data['forum_id'] != 27)
            {
                $irc_msg = "Neues Thema in " .$data['forum_name']. ": $subject posted by " .$user->data['username']. " um ".date('F j, Y, g:i a'). "\n";
                $forumfile = fopen("../newthread.dat", "a");
                fputs($forumfile, $irc_msg);
                fclose($forumfile);
            }
            // END Post to IRC 

Verfasst: 27.06.2008 14:19
von Slup
Das ging ja fix!

Besten Dank

Verfasst: 27.06.2008 18:05
von Slup
Leider klappt es doch net so wie es sollte!
|18:02:28| |(Bot| [16:02] Schreibe Benutzerdatei...
|18:02:28| |(Bot| [16:02] Writing channel file...
Und danach ist ende! Sobald er die Datei schreibt schmiert mir der mysql ab

Verfasst: 27.06.2008 18:19
von tas2580
|18:02:28| |(Bot| [16:02] Schreibe Benutzerdatei...
|18:02:28| |(Bot| [16:02] Writing channel file...
Wo hast du das denn her?
Und danach ist ende! Sobald er die Datei schreibt schmiert mir der mysql ab
Das ist komisch da hier eigentlich nichts an der Datenbank gemacht wird. Wird was in die Datei geschrieben? Schreibt der Bot das was in der Datei steht in den Channel?

Verfasst: 27.06.2008 18:26
von Slup
Grüße!

Aus dem IRC. partyline vom eggi.

Ne er schreibt noch nichtmal in die Datei den sobald es los geht schmiert mysql ab

Verfasst: 27.06.2008 18:35
von tas2580
OK, TCL und Forum sind ja 2 versch. Sachen die erstmal nichts miteinander zutun haben. Stimmen die Pfade zur newthread.dat?
Versuch erstmal hinzubekommen das bei einem Neuen Thema ein eintrag in die newthread.dat gemacht wird. Dann schauen wir weiter was mit dem TCL-Script nicht stimmt. Bei mir funktioniert das auf jeden Fall so.

Verfasst: 28.06.2008 09:14
von Slup
HiHo,

Habe jetzt seit gestern einiges versucht aber er postet nix in die Datei.
Nach schreiben eines neuen Post enthällt die Datei zwar eine Zeile aber ohne Inhalt. Ich denke mal du weist was ich meine.

Hier mal der code aus der function_posting.php

Code: Alles auswählen

// Submit new topic
	if ($post_mode == 'post')
	{
	// Begin Post to IRC       
            if ($data['forum_id'] != 9)
            {
                $irc_msg = "Neues Thema in " .$data['forum_name']. ": $subject posted by " .$user->data['username']. " um ".date('F j, Y, g:i a'). "\n";
                $forumfile = fopen("../newthread.dat", "a");
                fputs($forumfile, $irc_msg);
                fclose($forumfile);
            }
            // END Post to IRC


		$sql = 'INSERT INTO ' . TOPICS_TABLE . ' ' .
			$db->sql_build_array('INSERT', $sql_data[TOPICS_TABLE]['sql']);
		$db->sql_query($sql);

		$data['topic_id'] = $db->sql_nextid();

		$sql_data[POSTS_TABLE]['sql'] = array_merge($sql_data[POSTS_TABLE]['sql'], array(
			'topic_id' => $data['topic_id'])
		);
		unset($sql_data[TOPICS_TABLE]['sql']);
	}
So wie es in dem Script steht foren_id 9!
das währe die url viewforum.php?f=9 oder ist dort doch die kategorie gemeint?
die *.dat Datei befindet sich auch im Root Ordner des Forums und hat die rechte

Verfasst: 28.06.2008 14:44
von tas2580
Wenn die dat im Rootordner liegt stimmt da der Pfad schon mal nicht

Code: Alles auswählen

$forumfile = fopen("./newthread.dat", "a"); 
Wurde stimmen.

Code: Alles auswählen

if ($data['forum_id'] != 9) 
Bedeutet das Beiträge aus Forum 9 nicht gepostet werden, das kann für interne Foren ganz nützlich sein.

Verfasst: 28.06.2008 15:54
von Slup
ah besten Dank nu klappt es!

Wie mach ich es nun das auch antworten auf post klappen?
EDIT: Habs, musste nur eine if abfrage weiter unten einfügen.

Nur mit der Zeit stimmt was nicht! Es wird ausgegeben 1:37 pm obwohl schon 15:31 Uhr war.

Und wie mach ich das das noch die URL mit gepostet wird?