我想通过 dbus 向 Pidgin 聊天发送消息或设置聊天主题。按照本指南,我能够编写一些非常简单的代码来做到这一点,它确实会导致消息出现或聊天主题被更改......但它似乎只影响我的窗口,而其他参与者没有意识到任何消息或主题更改。
我在用着
purple.PurpleConvChatSetTopic(chat_data, user, topic)
和
purple.PurpleConvChatWrite(chat_data, user, message, flag, time)
我不认为这是由于对 dbus api 的任何滥用,因为调用实际上会导致操作。我只是想知道我是否需要先执行某种身份验证?或者用户只能是当前用户?我尝试使用我的昵称并将其设置为 unicode 但无济于事。
无论如何,这是完整的代码:
import dbus
import time
# define chat_name, user, topic, message
bus = dbus.SessionBus()
obj = bus.get_object('im.pidgin.purple.PurpleService', '/im/pidgin/purple/PurpleObject')
purple = dbus.Interface(obj, 'im.pidgin.purple.PurpleInterface')
for p in purple.PurpleGetConversations():
if purple.PurpleConversationGetName(p) == chat_name:
chat = p
chat_data = purple.PurpleConversationGetChatData(chat)
purple.PurpleConvChatSetTopic(chat_data, user, topic)
purple.PurpleConvChatWrite(chat_data, user, message, 0, int(time.time()))