python + jabber. как получить оффлайн сообщение

Phoenix

см. ниже
=========
субж.
чтобы можно было зарегаться и отослать сообщение
в обычной xmpp я что-то не нашёл ни доки, ни как регаться в примерах

sergdob

Есть, конечно. Модуль xmpp.

sergdob

У кого-нибудь есть джаббер-бот болтающий по icq-транспорту? Хочу заглушку поставить. Язык значения не имеет.

sergdob

Посмотри в исходники gajim.

Phoenix

вроде моё сообщение - всего три строчки.
про xmpp я упомянул, что как там регаться я не нашёл.
либо предложи пример использования функциональности, либо ссылку на доку, либо выругайся матом, что совсем все зажрались не хотят исходники даже посмотреть.
иначе твоё сообщение не несёт особого смысла

Phoenix

упс. это на заметл.
сейчас посмотрю

sergdob

Хорошо лужу газифицировал. Ты не это вот ищешь? Смотреть функцию xmpp.features.register

sergdob

$ python -c 'import xmpp
help (xmpp.features.register)' | cat
Help on function register in module xmpp.features:

register(disp, host, info)
Perform registration on remote server with provided info.
disp must be connected dispatcher instance.
Returns true or false depending on registration result.
If registration fails you can get additional info from the dispatcher's owner
attributes lastErrNode, lastErr and lastErrCode.

Phoenix

ага. оно.
спасибо.
я вот на этот мануал никак выйти не мог, хотя и догадывался, что он где-то существует

sergdob

вспоминая твои предыдущие вопросы, в других тредах, я понимаю, что ты сам никогда не ищешь ;)

Phoenix

это я знаю,
только кто ж его знает, что после xmpp. нужно написать, чтобы нужную инфу получить.

pilot

только кто ж его знает, что после xmpp. нужно написать, чтобы нужную инфу получить.

Кхе-кхе :crazy:
Emacs знает :o

tipnote

Достаточно просто знать про dir :grin:

sergdob

Там через dir не понятно. Я бы не догадался искать register именно в features.

klyv

но после долгих неудачных попыток, можно и на него обратить внимание

pilot

Вообще говоря Emacs лучше, если надо разбираться в исходниках:
Вот сейчас выковыриваю из MoinMoin модуль перевода викиразметки в docbook — там dir'ом не обойдешься. :(

tipnote

Кстати, да. Чет тяжко. Максимум, что сходу хоть как-то работает, но есть некоторые проблемы с некоторыми пакетами:

from inspect import ismodule, ismethod, isfunction, isclass
from inspect import getmembers, getdoc, getmodule, getargspec
from imp import find_module, load_module

def reversemap(func, *arg):
for l in arg:
l.reverse
res = map(func, *arg)
res.reverse
return res

def test(what, where, cmpFunc):
members = getmembers(where, lambda o: ismethod(o) or isfunction(o
return [(where,n,v) for n,v in members if cmpFunc(what,n)]

def walk(what, where, cmpFunc, res=[], checked=[]):
if where not in checked:
checked.append(where)
res += test(what,where, cmpFunc)
if ismodule(where) and hasattr(where,'__all__'):
__import__(where.__name__,fromlist=where.__all__)
filter_ = lambda o: (ismodule(o) or isclass(o and o not in checked
for n,v in getmembers(where, filter_):
walk(what, v, cmpFunc, res, checked)
return res

def prettyPrint(listOfResults, noDocs):
for from_,member,obj in listOfResults:
if ismodule(from_):
print '%s:'%from_.__name__
else:
print '%s.%s'%(getmodule(obj).__name__, from_.__name__)
argSpec = getargspec(obj)

args = argSpec[0]
defs = list([str(a) for a in argSpec[3]] if argSpec[3] else [])

args = reversemap(lambda a,d: '%s=%s'%(a,d) if d else a, args, defs)

print '%s(%s)'%(member, ','.join(args
if not noDocs:
print getdoc(obj)
print '---------------'
#public wrapper
def search(what, modName, noDocs=True):
where = __import__(modName, fromlist=['*'])
cmpFunc = lambda a, b: a in b
prettyPrint(walk(what,where,cmpFunc noDocs)


from u import search
search('parse','xml')

Phoenix

а почему работает
user='server.com'
jid = xmpp.protocol.JID(user)
cl = xmpp.Client(jid.getDomaindebug=[])
cl.connect
cl.auth(jid.getNode pwd)
cl.send(xmpp.protocol.Message('server2.com','test'
хотя функции send нет ни в документации, ни в исходниках?
как послать сообщение, кроме как этой функцией?
как послать сообщение, открыв чат? нужно добавить typ='chat'.
emacs - это редактор текстовый?

conv3rsje

как послать сообщение, открыв чат?
cl.send(xmpp.protocol.Message('server2.com', 'test', typ='chat'

Другие способы - какой-нить высокоуровневый интерфейс поищи в доках
Или пакетом pyxmpp :)
upd апиридил :)

Phoenix

а можно как-нибудь прочитать сообщения, которые в оффлайне мне прислали?
что-то перерыл gajim, не могу понять, где он это делает.

sergdob

полезно иногда выяснять ответы на вопросы самостоятельно. По вопросу думаю, что всё зависит от сервера.

Phoenix

сервак это позволяет делать.
онлайн-сообщения нормально доходят, а вот для тех, которые на серваке лежат, видимо нужно какое-то iq сообщение послать
вот это почитал, но там ничего не нашёл. (возможно плохо читал)
http://www.xmpp.org/rfcs/rfc3920.html
http://www.xmpp.org/rfcs/rfc3921.html

Phoenix

оказалось, что оффлайн сообщения получаются также как и онлайн.
просто я очень быстро отконнекчивался и не успевал прочитать сообщение.
Оставить комментарий
Имя или ник:
Комментарий: