[!] temporary disabled timezone detection to prevent crash after incorrect data in tz requet
[!] trying to fix fetching files without filenames/extensions..
This commit is contained in:
parent
7a2f85e0fe
commit
193dff330f
|
@ -18,8 +18,8 @@ class TelegramClient
|
||||||
config.client.use_test_dc = params['use_test_dc'] || false
|
config.client.use_test_dc = params['use_test_dc'] || false
|
||||||
config.client.system_version = '42' # I think I have permission to hardcode The Ultimate Question of Life, the Universe, and Everything?..
|
config.client.system_version = '42' # I think I have permission to hardcode The Ultimate Question of Life, the Universe, and Everything?..
|
||||||
config.client.use_file_database = true # wow
|
config.client.use_file_database = true # wow
|
||||||
config.client.use_message_database = true # such library
|
config.client.use_message_database = false # such library
|
||||||
config.client.use_chat_info_database = true # much options
|
config.client.use_chat_info_database = false # much options
|
||||||
config.client.enable_storage_optimizer = false # ...
|
config.client.enable_storage_optimizer = false # ...
|
||||||
end
|
end
|
||||||
TD::Api.set_log_verbosity_level(params['verbosity'] || 1)
|
TD::Api.set_log_verbosity_level(params['verbosity'] || 1)
|
||||||
|
@ -124,18 +124,19 @@ class TelegramClient
|
||||||
|
|
||||||
# file handling
|
# file handling
|
||||||
file = case content
|
file = case content
|
||||||
when TD::Types::MessageContent::Sticker then [content.sticker.sticker, content.sticker.emoji + '.webp']
|
when TD::Types::MessageContent::Sticker then [content.sticker.sticker, 'sticker.webp']
|
||||||
when TD::Types::MessageContent::VoiceNote then [content.voice_note.voice, 'voice message (%i seconds).oga' % content.voice_note.duration]
|
when TD::Types::MessageContent::VoiceNote then [content.voice_note.voice, 'voicenote (%i s.).oga' % content.voice_note.duration]
|
||||||
when TD::Types::MessageContent::VideoNote then [content.video_note.video, 'video message (%i seconds).mp4' % content.video_note.duration]
|
when TD::Types::MessageContent::VideoNote then [content.video_note.video, 'videonote (%i s.).mp4' % content.video_note.duration]
|
||||||
when TD::Types::MessageContent::Animation then [content.animation.animation, content.animation.file_name + '.mp4' ]
|
when TD::Types::MessageContent::Animation then [content.animation.animation, 'animation.mp4' ]
|
||||||
when TD::Types::MessageContent::Photo then [content.photo.sizes[-1].photo, content.photo.id + '.jpg']
|
when TD::Types::MessageContent::Photo then [content.photo.sizes[-1].photo, 'photo' + content.photo.id + '.jpg']
|
||||||
when TD::Types::MessageContent::Audio then [content.audio.audio, content.audio.file_name]
|
when TD::Types::MessageContent::Audio then [content.audio.audio, 'audio' + content.audio.file_name]
|
||||||
when TD::Types::MessageContent::Video then [content.video.video, content.video.file_name]
|
when TD::Types::MessageContent::Video then [content.video.video, 'video' + content.video.file_name]
|
||||||
when TD::Types::MessageContent::Document then [content.document.document, content.document.file_name]
|
when TD::Types::MessageContent::Document then [content.document.document, 'doc' + content.document.file_name]
|
||||||
end
|
end
|
||||||
|
|
||||||
# text handling
|
# text handling
|
||||||
text = case content
|
text = case content
|
||||||
|
when TD::Types::MessageContent::Sticker then content.sticker.emoji
|
||||||
when TD::Types::MessageContent::BasicGroupChatCreate, TD::Types::MessageContent::SupergroupChatCreate then "has created chat"
|
when TD::Types::MessageContent::BasicGroupChatCreate, TD::Types::MessageContent::SupergroupChatCreate then "has created chat"
|
||||||
when TD::Types::MessageContent::ChatJoinByLink then "joined chat via invite link"
|
when TD::Types::MessageContent::ChatJoinByLink then "joined chat via invite link"
|
||||||
when TD::Types::MessageContent::ChatAddMembers then "invited %s" % self.format_contact(message.content.member_user_ids.first)
|
when TD::Types::MessageContent::ChatAddMembers then "invited %s" % self.format_contact(message.content.member_user_ids.first)
|
||||||
|
@ -147,6 +148,7 @@ class TelegramClient
|
||||||
when TD::Types::MessageContent::Text then content.text.text
|
when TD::Types::MessageContent::Text then content.text.text
|
||||||
when TD::Types::MessageContent::VoiceNote then content.caption.text
|
when TD::Types::MessageContent::VoiceNote then content.caption.text
|
||||||
when TD::Types::MessageContent::VideoNote then ''
|
when TD::Types::MessageContent::VideoNote then ''
|
||||||
|
when TD::Types::MessageContent::Animation then ''
|
||||||
else "unknown message type %s" % update.message.content.class
|
else "unknown message type %s" % update.message.content.class
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -139,18 +139,18 @@ class XMPPComponent
|
||||||
end
|
end
|
||||||
|
|
||||||
# request timezone information #
|
# request timezone information #
|
||||||
def request_tz(jid)
|
#def request_tz(jid)
|
||||||
@logger.debug "Request timezone from JID %s" % jid.to_s
|
#@logger.debug "Request timezone from JID %s" % jid.to_s
|
||||||
iq = Jabber::Iq.new
|
#iq = Jabber::Iq.new
|
||||||
iq.type = :get
|
#iq.type = :get
|
||||||
iq.to = jid
|
#iq.to = jid
|
||||||
iq.from = @component.jid
|
#iq.from = @component.jid
|
||||||
iq.id = 'time_req_1'
|
#iq.id = 'time_req_1'
|
||||||
iq.add_element("time", {"xmlns" => "urn:xmpp:time"})
|
#iq.add_element("time", {"xmlns" => "urn:xmpp:time"})
|
||||||
@logger.debug iq.to_s
|
#@logger.debug iq.to_s
|
||||||
@component.send(iq)
|
#@component.send(iq)
|
||||||
end
|
#end
|
||||||
|
|
||||||
#############################
|
#############################
|
||||||
#### Callback handlers #####
|
#### Callback handlers #####
|
||||||
#############################
|
#############################
|
||||||
|
@ -161,7 +161,10 @@ class XMPPComponent
|
||||||
@logger.info 'Received message from <%s> to <%s>' % [msg.from.to_s, msg.to.to_s]
|
@logger.info 'Received message from <%s> to <%s>' % [msg.from.to_s, msg.to.to_s]
|
||||||
@logger.debug msg.to_s
|
@logger.debug msg.to_s
|
||||||
if msg.to == @component.jid then self.process_command(msg.from, msg.first_element_text('body') ); return; end # treat message as internal command if received as transport jid
|
if msg.to == @component.jid then self.process_command(msg.from, msg.first_element_text('body') ); return; end # treat message as internal command if received as transport jid
|
||||||
if @sessions.key? msg.from.bare.to_s then self.request_tz(msg.from) if not @sessions[msg.from.bare.to_s].tz_set?; @sessions[msg.from.bare.to_s].process_outgoing_msg(msg.to.to_s.split('@')[0].to_i, msg.first_element_text('body')); return; end #if @sessions.key? msg.from.bare.to_s and @sessions[msg.from.bare.to_s].online? # queue message for processing session is active for jid from
|
if @sessions.key? msg.from.bare.to_s then
|
||||||
|
# self.request_tz(msg.from) if not @sessions[msg.from.bare.to_s].tz_set?
|
||||||
|
return @sessions[msg.from.bare.to_s].process_outgoing_msg(msg.to.to_s.split('@')[0].to_i, msg.first_element_text('body'))
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# new presence to XMPP component #
|
# new presence to XMPP component #
|
||||||
|
@ -170,7 +173,11 @@ class XMPPComponent
|
||||||
@logger.debug(prsnc.to_s)
|
@logger.debug(prsnc.to_s)
|
||||||
if prsnc.type == :subscribe then reply = prsnc.answer(false); reply.type = :subscribed; @component.send(reply); end # send "subscribed" reply to "subscribe" presence
|
if prsnc.type == :subscribe then reply = prsnc.answer(false); reply.type = :subscribed; @component.send(reply); end # send "subscribed" reply to "subscribe" presence
|
||||||
if prsnc.to == @component.jid and @sessions.key? prsnc.from.bare.to_s and prsnc.type == :unavailable then @sessions[prsnc.from.bare.to_s].disconnect(); self.presence(prsnc.from, nil, :subscribe) ; return; end # go offline when received offline presence from jabber user
|
if prsnc.to == @component.jid and @sessions.key? prsnc.from.bare.to_s and prsnc.type == :unavailable then @sessions[prsnc.from.bare.to_s].disconnect(); self.presence(prsnc.from, nil, :subscribe) ; return; end # go offline when received offline presence from jabber user
|
||||||
if prsnc.to == @component.jid and @sessions.key? prsnc.from.bare.to_s then self.request_tz(prsnc.from); @sessions[prsnc.from.bare.to_s].connect() || @sessions[prsnc.from.bare.to_s].sync_status(); return; end # connect if we have session
|
if prsnc.to == @component.jid and @sessions.key? prsnc.from.bare.to_s then
|
||||||
|
# self.request_tz(prsnc.from);
|
||||||
|
@sessions[prsnc.from.bare.to_s].connect() || @sessions[prsnc.from.bare.to_s].sync_status()
|
||||||
|
return
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# new iq (vcard/tz) request to XMPP component #
|
# new iq (vcard/tz) request to XMPP component #
|
||||||
|
@ -220,7 +227,7 @@ class XMPPComponent
|
||||||
when '/login' # create new session
|
when '/login' # create new session
|
||||||
@sessions[from.bare.to_s] = TelegramClient.new(self, from.bare.to_s, body.split[1]) if not (@sessions.key? from.bare.to_s and @sessions[from.bare.to_s].online?)
|
@sessions[from.bare.to_s] = TelegramClient.new(self, from.bare.to_s, body.split[1]) if not (@sessions.key? from.bare.to_s and @sessions[from.bare.to_s].online?)
|
||||||
@sessions[from.bare.to_s].connect()
|
@sessions[from.bare.to_s].connect()
|
||||||
self.request_tz(from)
|
# self.request_tz(from)
|
||||||
self.save_db()
|
self.save_db()
|
||||||
when '/code', '/password' # pass auth data to telegram
|
when '/code', '/password' # pass auth data to telegram
|
||||||
@sessions[from.bare.to_s].process_auth(body.split[0], body.split[1]) if @sessions.key? from.bare.to_s
|
@sessions[from.bare.to_s].process_auth(body.split[0], body.split[1]) if @sessions.key? from.bare.to_s
|
||||||
|
|
Reference in a new issue