From 7dd9ef67ad35ec4b75f6096f9d825c4f8dbaac51 Mon Sep 17 00:00:00 2001 From: Yannik Enss Date: Tue, 26 Feb 2019 23:05:39 +0100 Subject: [PATCH] continued work on rewrite --- xmpp_tg/xmpp.py | 34 +++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/xmpp_tg/xmpp.py b/xmpp_tg/xmpp.py index 2a54fa9..52d3395 100644 --- a/xmpp_tg/xmpp.py +++ b/xmpp_tg/xmpp.py @@ -1,6 +1,6 @@ import re, sys, os, io, sqlite3, hashlib, time, datetime import xml.etree.ElementTree as ET -import logging, traceback +import logging, traceback, pprint from sleekxmpp.componentxmpp import ComponentXMPP from sleekxmpp import Presence, Message @@ -263,7 +263,7 @@ class XMPPTelegram(ComponentXMPP): sys.exit(0) class MessageHandler(): - _unknown_command_handler = lambda self: "Unknown command, for a list send '!help'" + _unknown_command_handler = lambda self, self2: "Unknown command, for a list send '!help'" _on_connect = lambda: None def __init__(self, msg): @@ -350,7 +350,7 @@ class XMPPTelegram(ComponentXMPP): if len(hndl.arguments) != 1: return "Wrong number of arguments" - phone_no = arguments[0] + phone_no = hndl.arguments[0] hndl._update("Please wait...") self.spawn_tg_client(hndl.jid, phone_no) @@ -426,12 +426,20 @@ class XMPPTelegram(ComponentXMPP): return "Dialogs reloadad" def logout(hndl, self): + """Deletes current Telegram session at Gateway""" self.tg_connections[hndl.jid].log_out() self.db_connection.execute("DELETE FROM accounts WHERE jid = ?", (hndl.jid,)) return 'Your Telegram session was deleted' - def add(self): #1 arg - result = self.tg_connections[jid].get_entity(parsed[1]) + def add(hndl, self): #1 arg + """Add contact by nickname or t.me link""" + if len(hndl.arguments) != 1: + return "Wrong number of arguments" + + argument = hndl.arguments[0] + jid = hndl.jid + + result = self.tg_connections[jid].get_entity(argument) if type(result) == User: tg_peer = InputPeerUser( result.id, result.access_hash ) result = self.tg_connections[jid].invoke( SendMessageRequest(tg_peer, 'Hello! I just want to add you in my contact list.', generate_random_long() ) ) @@ -444,8 +452,15 @@ class XMPPTelegram(ComponentXMPP): self.tg_process_dialogs(jid) - def join(self): #1 arg - link = parsed[1].split('/') # https://t.me/joinchat/HrCmckx_SkMbSGFLhXCvSg + def join(hndl, self): #1 arg + """Join conference via invite link""" + if len(hndl.arguments) != 1: + return "Wrong number of arguments" + + argument = hndl.arguments[0] + jid = hndl.jid + + link = argument.split('/') # https://t.me/joinchat/HrCmckx_SkMbSGFLhXCvSg self.tg_connections[jid].invoke(ImportChatInviteRequest(link[4])) time.sleep(1) self.tg_process_dialogs(jid) @@ -472,19 +487,23 @@ class XMPPTelegram(ComponentXMPP): self.tg_process_dialogs(jid) def username(self): #1 arg + """Change your Telegram display name""" username = parsed[1] self.tg_connections[jid].invoke(UpdateUsernameRequest(username)) def name(self): #1 or 2 args + """Change your Telegram display name""" firstname = parsed[1] lastname = parsed[2] if len(parsed) > 2 else None self.tg_connections[jid].invoke(UpdateProfileRequest(first_name = firstname, last_name = lastname)) def about(self): #>0 args + """Change your Telegram 'about' text""" about = iq['body'][7:] self.tg_connections[jid].invoke(UpdateProfileRequest(about = about)) def import_contact(self): #2 args + """Add contact by phone number""" phone = parsed[1] firstname = parsed[2] lastname = parsed[3] if len(parsed) > 3 else None @@ -494,6 +513,7 @@ class XMPPTelegram(ComponentXMPP): self.tg_process_dialogs(jid) def roster(hndl, self): + """Send Telegram contact list back, with JIDs""" response = "Telegram chats:\n" for jid,tid in self.contact_list[hndl.jid].items(): response += "{}: {}\n".format(tid, jid)