2010-01-24 13 views
7

Ich versuche, einen einfachen Chat-Bot für Adium zu schreiben, der "lol" und "haha" posten und grundlegende Fragen in ärgerlichen Gruppenchats beantworten wird, zu denen mich einige Leute hinzufügen.Empfange Adium-Nachrichten in Applescript

Ich habe den "lol" -Teil mit ein paar einfachen Sende- und Delay-Befehlen in einer Wiederholung behandelt, aber ich muss auch etwas Interaktion machen.
Beantworten Sie "ja" mit einem Fragezeichen zum Beispiel ...

Glauben Sie mir oder nicht, solch ein einfacher Bot würde einen Turing-Test für diese Gespräche bestehen.

Das Öffnen des Adium-Wörterbuchs zeigt keine offensichtliche Möglichkeit, Nachrichten zu erhalten, und auch nicht das Growl-Wörterbuch.

Ich habe herausgefunden, dass ich jedes Mal ein Skript ausführen kann, wenn eine Nachricht empfangen wird. Gibt es eine Möglichkeit, Zugriff auf die gesendete Nachricht zu erhalten?

Adium pref http://media.ruk.ca/images/adiumpreferences.png

Mein Code:

tell application "Adium" 
    activate 
    set theChat to the active chat 
    send theChat message "Hi" 
    delay 5 
    send theChat message "How's life?" 
    delay 10 
    repeat 10 times 
     send theChat message "Realy?" 
     delay 5 
     send theChat message "Lol :P" 
     delay 15 
     send theChat message "Haha XD" 
     delay 15 
     send theChat message "Yes1!!1" 
     delay 20 
     send theChat message "I like it! :D" 
     delay 10 
    end repeat 
    send theChat message "Bye!" 
    tell theChat to close 
end tell 
+0

Es ist "Turing-Test", wie in Alan Turing. Und ich muss mich fragen, wie viele Leute den Turing-Test bestehen würden. Auch in der letzten Frage meinst du, dass du auf die * empfangene * Nachricht zugreifen willst, oder auf die, die * du * gerade gesendet hast? –

+0

Ich werde es ändern. Ja, ich möchte Zugriff auf empfangene Nachrichten haben, damit ich einen einfachen Chat-Bot in Applescript schreiben kann. – Pepijn

+0

Ich frage mich seit ein paar Jahren selbst und habe nie etwas Nützliches gefunden. Ich habe das Gefühl, es liegt im Interesse der Adium-Entwickler, zu verhindern, dass genau diese Art von Dingen passiert - trotz der guten, für die andere sie nutzen könnten. –

Antwort

1

Basierend auf Überprüfung des aktuellen Adium Sourcecode und die Suche nach aktuellen und früheren Artikel in der Adium Bug-Tracker und dem Wiki, die sowohl "Applescript" enthalten und " Nachricht "als Teilstrings, scheint dies nicht möglich zu sein, wenn nur AppleScript in Adium 1.0 bis 1.3.10 (spätestens zum Zeitpunkt des Schreibens). Es scheint mit reinem AppleScript in Adium 0.89.1 möglich zu sein, aber die freiwilligen Entwickler sind noch nicht davon überzeugt, dass es sich lohnt, diese Funktion hinzuzufügen.

Um auf den Nachrichteninhalt in AppleScript jetzt zugreifen zu können, muss wahrscheinlich ein Adium Xtra geschrieben werden, um die Informationen weiterzuleiten. Beispiele für Xtra-Plugins, die auf den Text der letzten Nachricht zugreifen, sind Challenge/Response oder SpamFilter. Der Quellcode für SpamFilter ist available auf BitBucket, also könnten Sie es möglicherweise modifizieren, um Nachrichteninhalte an ein AppleScript zu senden.

EDIT: Seit ich meine Antwort veröffentlicht, hat Benutzer "Zostay" einen neuen Adium Xtra namens "Pipe Event" entdeckt. Es erlaubt mir, den Text eines Ereignisses genau so in ein Skript zu schreiben, wie ich es mir vorgestellt habe, als ich meinen zweiten Absatz schrieb, also stimme ich zostay's Antwort zu. Sourcecode ist ebenfalls verfügbar.