0

我很想从命令行发送我的 Adium 联系人消息。语法应该看起来像echo test | im <contact>. 我已经采用并修改了这个脚本来做我想做的事,但它有点旧,我正在尝试对其进行现代化改造。到目前为止,我已经完成了这项工作(我只更改了 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 中的错误还是我在 applescript 中做错了什么?

4

1 回答 1

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 创建的进程之外的任何进程。

于 2012-06-15T22:30:16.183 回答