samirsalman / AmazonOffers-TelegramBot

This project is a Telegram Bot connected to a Telegram Channel that checks Amazon offers and send them to your Channel.
140 stars 48 forks source link

ParseMode #42

Closed giuseppe30 closed 1 year ago

giuseppe30 commented 1 year ago

I have this reponse:

Request received INFO:root: Requests Completed Creating post INFO:root: Sending posts to channel INFO:root:module 'telegram' has no attribute 'ParseMode'

paolofrancioso commented 1 year ago

Ciao Giuseppe,

downgrade versione (facile) pip install python-telegram-bot==13.14

altrimenti from telegram.constants import ParseMode

perchè nella release 20 hanno spostato ParseMode.

giuseppe30 commented 1 year ago

Ciao Giuseppe,

pip install python-telegram-bot==13.14

e passa la paura :)

è proprio quello che ho fatto, ho installato quella versione e ora funziona!

Grazie

paolofrancioso commented 1 year ago

Benvenuto nel gruppo di spammatori ufficiali di telegram :D

giuseppe30 commented 1 year ago

Benvenuto nel gruppo di spammatori ufficiali di telegram :D

eheh… in realtà ancora ho un piccolo problema. lo script sta girando su un piccolo server con un canale di test.

Ci sono delle keyword nella lista della ricerca che causano un errore:

INFO:root:'NoneType' object is not iterable

Quindi le tolgo e riprende a funzionare. Ma non riesco a capire la logica di questo problema. Ne avevo inserite tante quindi testarle una ad una prende tempo, poi questa notte mi ha restituito TooManyRequest e mi sono fermato.

paolofrancioso commented 1 year ago

prova a incollare il blocco categories, magari c'è una virgola di troppo.

giuseppe30 commented 1 year ago

prova a incollare il blocco categories, magari c'è una virgola di troppo.

ho provato a togliere un blocco e reinserirlo, ma nulla. Poi ho tolto tutto e inserito solo poche parole alla volta… è come se alcune non gli piacessero!

giuseppe30 commented 1 year ago

@paolofrancioso scusa se approfitto della tua disponibilità, per caso conosci un modo per ottenere lo short url di amzn.to? vorrei avere il link sul messaggio cosi quando l'utente clicca non ha il popup di apertura link che si ha con l'hyperlink

paolofrancioso commented 1 year ago

Io uso Bitly. Con un vecchio account ho 1000 link brevi al mese (purtroppo se apri account ora solo 10 gratis). Ad ogni modo, è un po' complesso da scrivere in chat. Volevo incollarti in privato il sorgente, ma dimentico sempre che github non ha i private message :D

pip install bitly-api-py3 <--Installa le API necessarie

Modifica consts.py

Bitly API Keys

ACCESS_TOKEN = "BITLY_API_KEY" <--La tua chiave privata

Modifica create_messages.py Aggiungi: import bitly_api

Dopo: print(f'{5 ""} Creating post {5 ""}') Aggiungi: connection = bitly_api.Connection(access_token=ACCESS_TOKEN)

counter = 0

Dopo:

If item has an active offer

    if 'off' in item:

Aggiungi:

Short Links

        shortlink = connection.shorten(uri = item['url'])

Modifica il messaggio con:

Creating buy button

        keyboard = [
            [InlineKeyboardButton("🛒 TESTO DEL TUO BOTTONE 🛒", callback_data='buy', url=shortlink['url'])],
        ]

In fondo, prima di return: counter = counter + 1 if counter == 2: break

If counter == 2 rappresenta il numero di messaggi che mandi ogni run...io ho lasciato 2 come di default e quindi ho messo qui counter == 2. Serve perchè ad oggi il programma di Samir prepara TUTTI i possibili messaggi e poi ne manda solo due. Se non mettessimo questo limite a 2 (tanto sono comunque 2 messaggi casuali) Bitly verrebbe chiamato molte piu volte bruciando decine se non centinaia di possibili link e soprattutto a volte ti manda in blocco per eccesso di richieste :)

Spero di esserti stati utile!

giuseppe30 commented 1 year ago

Certo, provo a scriverti in privato.

ti ho scritto una mail dal tuo sitoweb

giuseppe30 commented 1 year ago

Io uso Bitly. Con un vecchio account ho 1000 link brevi al mese (purtroppo se apri account ora solo 10 gratis). Ad ogni modo, è un po' complesso da scrivere in chat. Volevo incollarti in privato il sorgente, ma dimentico sempre che github non ha i private message :D

pip install bitly-api-py3 <--Installa le API necessarie

Modifica consts.py

Bitly API Keys

ACCESS_TOKEN = "BITLY_API_KEY" <--La tua chiave privata

Modifica create_messages.py Aggiungi: import bitly_api

Dopo: print(f'{5 "_"} Creating post {5 "_"}') Aggiungi: connection = bitly_api.Connection(access_token=ACCESS_TOKEN)

counter = 0

Dopo: # If item has an active offer if 'off' in item: Aggiungi: # Short Links shortlink = connection.shorten(uri = item['url'])

Modifica il messaggio con: # Creating buy button keyboard = [ [InlineKeyboardButton("🛒 TESTO DEL TUO BOTTONE 🛒", callback_data='buy', url=shortlink['url'])], ]

In fondo, prima di return: counter = counter + 1 if counter == 2: break

If counter == 2 rappresenta il numero di messaggi che mandi ogni run...io ho lasciato 2 come di default e quindi ho messo qui counter == 2. Serve perchè ad oggi il programma di Samir prepara TUTTI i possibili messaggi e poi ne manda solo due. Se non mettessimo questo limite a 2 (tanto sono comunque 2 messaggi casuali) Bitly verrebbe chiamato molte piu volte bruciando decine se non centinaia di possibili link e soprattutto a volte ti manda in blocco per eccesso di richieste :)

Spero di esserti stati utile!

perfetto, chiarissimo. grazie