diff --git a/.gitignore b/.gitignore index acbcdc1..b7ff267 100644 --- a/.gitignore +++ b/.gitignore @@ -152,6 +152,10 @@ ipython_config.py # PEP 582; used by e.g. github.com/David-OConnor/pyflow __pypackages__/ + +.vscode/ + + # Celery stuff celerybeat-schedule celerybeat.pid diff --git a/cli.py b/cli.py index 2292960..572e81a 100644 --- a/cli.py +++ b/cli.py @@ -16,7 +16,11 @@ def get_updates(): """ A wrapper que envuelve la funcionalidad de obtener updates desde telegram """ - updates = telegram.get_updates(token) + """Agregada variable de offset y pasada por parametro en update + """ + offset = db.one('SELECT update_id FROM tlg_update order by update_id desc') + #print(*offset) + updates = telegram.get_updates(token, *offset) for _upt in updates: update = Update(db) try: diff --git a/main.py b/main.py index a59b0d9..7280ae0 100644 --- a/main.py +++ b/main.py @@ -17,7 +17,10 @@ def get_updates(): """ A wrapper que envuelve la funcionalidad de obtener updates desde telegram """ - updates = telegram.get_updates(token) + """Agregada variable de offset y pasada por parametro en update + """ + offset = db.one('SELECT update_id FROM tlg_update order by update_id desc') + updates = telegram.get_updates(token, *offset) for _upt in updates: update = Update(db) try: diff --git a/telebot/telegram.py b/telebot/telegram.py index 9d6d302..ff89898 100644 --- a/telebot/telegram.py +++ b/telebot/telegram.py @@ -38,7 +38,7 @@ def get_chat_id(username, token): return -def get_updates(token): +def get_updates(token, offset=None): """ Obtiene todos los mensajes desde telegram API information: https://core.telegram.org/bots/api#getupdates Ejemplo de rsp.json()["result"]: @@ -62,36 +62,37 @@ def get_updates(token): ... ] """ + """agregado parametro de 'offset+1', updates ahora devuelve los mensajes sin ver + """ BASE_URL = f"https://api.telegram.org/bot{token}" - rsp = requests.get(f"{BASE_URL}/getUpdates") + rsp = requests.get(f"{BASE_URL}/getUpdates", params={'offset': offset+1}) - # pprint(rsp.json()["result"]) # debug + #pprint(rsp.json()["result"]) # debug return rsp.json()["result"] - -def register_message(sql: SQL, data, tkn): - """ - Recibe un mensaje, lo guarda en la base y envia - un response. - {'chat': {'first_name': 'Xavier', - 'id': 44444, - 'last_name': 'Petit', - 'type': 'private', - 'username': 'xpetit' - }, - 'date': 1628087051, - 'from': {'first_name': 'Xavier', - 'id': 4444, - 'is_bot': False, - 'language_code': 'en', - 'last_name': 'Petit', - 'username': 'xpetit'}, - 'message_id': 15, - 'text': 'dame info'} - """ +def register_db(sql:SQL, data): msg = Message(sql) msg.add(data["chat"]["id"], data["message_id"], data["text"]) + +def send_txt(data, tkn): send_message( - f"👋 Hola {data['chat']['first_name']}! en que te puedo ayudar?", + f"👋 Hola amigo {data['chat']['first_name']}! en que te puedo ayudar?", data["chat"]["id"], tkn) + +def register_message(sql: SQL, data, tkn): + """ + Para refactorizar la función register_message creamos dos nuevas funciones: + register_db --> se encarga de guardar el mensaje en la base de datos + send_txt --> envía el mensaje de bienvenida + """ + """ + Tomamos la excepción del error Key error para mandar el mensaje al usuario + """ + + try: + register_db(sql, data) + send_txt(data, tkn) + except KeyError: + send_message("No se admiten imagenes, tratá mandando un texto", data["chat"]["id"], tkn) + \ No newline at end of file