아마추어 문제에 사과하십시오. 나는 Python을 배우는 중이고 XMPP를 사용하여이 XMPP 봇 스크립트를 뒤범벅하고 있습니다. http://sleekxmpp.com/getting_started/muc.html 내 봇의 예에서 다른SleekXMPP의 메시지로 "역할"및/또는 "소속"을받습니다.
내 스크립트 SQLite 데이터베이스를 만들고 각 group_message 이벤트, 닉과를 검색하기 위해 XML을 구문 분석이다 :
나는 봇은 SleekXMPP에서 MUC 봇 예제를 사용하여 구축 메시지 본문 텍스트를 만들고 타임 스탬프를 사용하여 데이터베이스에 씁니다. 인쇄 문 그래서 메시지가 내가 아는 터미널 그렇게하여 체크 볼 수 있습니다 디버깅을 위해 단지이다
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 채널에서 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에서 탈퇴 이벤트 트리거가있어 dict 항목을 삭제하는 데 사용할 수 있는지 또는 탈퇴 메시지를 수동으로 감지하도록 설정해야합니까? – HittingSmoke