2010-01-24 79 views
7

我正在尝试为Adium写一个简单的聊天机器人,它会发布“哈哈”和“哈哈”,并回答一些人在不断添加我的烦人群聊中的基本问题。在Applescript中接收Adium消息

我已经用一些简单的发送和延迟命令覆盖了“lol”部分,但我还需要做一些交互。
对任何带问号的问题回答“是”,例如...

相信我或不信,这样一个简单的机器人会通过一个图灵测试来进行这些对话。

打开Adium词典并没有显示任何明显的获取消息的方式,也没有咆哮词典。

我确实发现每次收到邮件时我都可以运行脚本,有没有办法访问发送的邮件?

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

我的代码:

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

与Alan Turing一样,它是“图灵测试”。我不得不想知道有多少人会通过图灵测试。另外,在最后一个问题中,你的意思是你想要访问* received *消息,还是你刚刚发送的消息? – 2010-01-24 18:01:56

+0

我会改变它。 是的,我想访问收到的消息,所以我可以在Applescript中编写一个基本的聊天机器人。 – Pepijn 2010-01-24 19:39:15

+0

我一直在想这个我自己几年,从来没有发现任何使用。我有一种感觉,它符合Adium开发者的利益,以防止这种确切类型的事情发生 - 尽管其他人可以使用它。 – 2010-06-04 17:18:56

回答

1

基于当前的Adium源代码的审查,并在Adium的bug跟踪和wiki当前和过去的项目同时包含“AppleScript的”搜索和“消息“作为子字符串,但在仅使用Adium 1.0到1.3.10(最近在编写本文时)使用AppleScript时,这似乎不可行。 Apple在Adium 0.89.1中似乎可以使用简单的AppleScript,但志愿者开发人员还不确定是否值得加入这个功能。

要访问AppleScript中的消息内容,现在可能需要编写一个Adium Xtra来转发信息。访问最后一条消息文本的Xtra插件的示例包括Challenge/ResponseSpamFilter。 SpamFilter的源代码是BitBucket上的available,所以您可以想象将其修改为将消息内容发送到AppleScript。

编辑:自从我发布我的回复后,用户'zostay'发现了一个名为“Pipe Event”的新Adium Xtra。它允许以我在编写第二段时所设想的方式将事件的文本发送到脚本,所以我是投票zostay的答案。 Sourcecode也可用。