業餘問題的道歉。我只是在學習Python,而我正在使用XMPP來解決這個XMPP機器人腳本。 http://sleekxmpp.com/getting_started/muc.html在SleekXMPP中收到「角色」和/或「隸屬關係」消息
在哪裏我的機器人從例如不同的是我的腳本創建一個SQLite數據庫和每個group_message事件,解析XML來檢索尼克和:
我有一個機器人利用SleekXMPP的MUC BOT例如建消息正文文本並用時間戳寫入數據庫。
這裏是我的機器人的那的錄音從XMPP通道輸出味精各部分:
def groupchat_message(self, msg):
if msg['type'] in ('groupchat'):
raw = str(msg) # Save raw XML as a string in the database for debugging purposes
timestamp = datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S')
fromuser = str(msg['from']) # Convert "from" attribute to string so it can be split
author = fromuser.split('/')[1] # Split "from" attribute to remove channel address leaving only nick behind
body = msg['body']
msginsert = [timestamp, author, body, raw] # Database input list to be handed to placeholders.
db.execute("INSERT INTO messages VALUES (?,?,?,?)", msginsert) # "?" placeholder is REQUIRED for automatic database sanitization.
dbconn.commit()
print("[",timestamp,"]",author,": ",body, sep='')
else:
print(msg)
打印語句只是爲了調試的目的,所以我可以觀察消息在終端蜱通過,所以我知道該腳本正在運行。
在錄製的信息中,我希望在XMPP頻道中包含用戶的角色或聯盟,以便管理員和版主可以被挑選出來。這是我無法包裹頭部的麻煩。看起來我應該可以根據SleekXMPP stanza docs來做到這一點,但我無法弄清楚我如何從消息XML獲得角色/聯盟信息。
如何獲取消息XML中提供的信息並獲取發佈該消息的用戶的角色和/或隸屬關係?
作爲參考,這是來自XMPP通道XML輸出爲消息的原始:
<message to="[email protected]" from="[email protected]/User Nick" id="1453" type="groupchat">
<body>This is the message body text</body>
<x xmlns="jabber:x:event">
<composing />
</x>
</message>
尼克變化不是一個問題,因爲他們不允許在這臺服務器上。通過處理用戶退出,你的意思是從字典中刪除信息?我很確定我知道該怎麼做。 – HittingSmoke
是的。嚴格地說,沒有必要刪除它們(因爲它們會在發送消息之前再次加入),但是如果沒有,你會浪費記憶。 – xnyhps
太棒了,謝謝。我得到了角色和聯盟記錄所有設置和它的工作。你知道在Sleek中是否有離開事件觸發器,我可以用它來刪除字典條目,或者我必須手動設置它來檢測離開消息嗎? – HittingSmoke