我喜欢从命令行发送Adium联系人消息。语法应该类似于echo test | im <contact>
。我已经采取并修改了this script来做我想做的事情,但它有点老了,我试图对它进行现代化改造。到目前为止,我已经完成了这项工作(我只在这里更改了AppleScript。)
set stdinText to do shell script "echo \"\$MESSAGE\"" without altering line endings
tell application "Adium"
set user to get contact "$BUDDY"
if not (exists (chats whose contacts contains user)) then
if not (exists (first chat window)) then
tell account of user
set new_chat to make new chat with contacts {user} with new chat window
end tell
else
set existing_window to first chat window
tell account of user
set new_chat to make new chat with contacts {user} in window existing_window
end tell
end if
else
set new_chat to first chat whose contacts contains user
end if
send new_chat message stdinText
end tell
效果很好,但聊天消息发送两次除外。这是Adium中的错误还是我在Applecript中做错了什么?
答案 0 :(得分:1)
我也遇到了这个错误,Adium多次发送聊天消息。
这是由多个名为AdiumApplescriptRunner的正在运行的后台进程引起的。显然,这些进程中只有一个应该在任何给定时间运行,但有时会启动多个进程,当发生这种情况时,会为每个额外的AdiumApplescriptRunner进程发送重复的聊天消息。
我的工作是创建一个每分钟运行一次的cron任务,然后执行这个bash命令:
ps -aef | grep -v grep | grep 'AdiumApplescriptRunner' | awk '{print $2}' | awk 'NR == 2,/c/' | xargs -I %s kill -9 %s
此命令确保只有一个名为AdiumApplescriptRunner的进程正在运行,并且会杀死Adium创建的任何进程。