[Python] comportamento def async
Andrea D'Amore
and.damore a gmail.com
Mar 14 Maggio 2024 23:08:07 CEST
On Mon, 13 May 2024 at 22:19, Perini Matteo <perini.matteo a gmail.com> wrote:
> vorrei leggere lo stato di un dispositivo ewelink (sonoff) tramite script ma ricevo un comportamento che non capisco.
> Se faccio uno script isolato
[…]
> ottengo esattamente quello che voglio ovvero il print mi dice se il dispositivo è on, off o offline.
In questo script dove richiami `ask_status()`?
> Come posso fare per forzare l'esecuzione di ask_status ogni volta che richiamo la funzione check?
In genere con le parentesi dopo il nome funzione
async def check(update: Update, context: ContextTypes.DEFAULT_TYPE):
await context.bot.send_message(
chat_id=update.effective_chat.id, text=ask_status(the_client)
)
Nota che dovresti restituire la stringa in `ask_status` piuttosto che
stamparla su stdout
@ewelink.login("Password", "email a email.eu")
async def ask_status(client: Client) -> str:
device = client.get_device("100000000")
try:
return str(device.state.value)
except DeviceOffline:
return "Device is offline!"
--
Andrea D'Amore
Maggiori informazioni sulla lista
Python