KeyMan98
Profilo di
Nome | KeyMan98 |
---|---|
Indirizzo email | n/a |
Messaggi | 7 |
-
- 2021-05-15 12:55:01
- Re: Problemi con bot telegram
- Forum >> Programmazione Python >> Web e Reti
- Si è un problema della libreria, non supporta le Api più recenti
-
- 2021-03-15 08:01:44
- Problemi con bot telegram
- Forum >> Programmazione Python >> Web e Reti
- Un paio di mesi fa ho creato un bot. Fino a qualche giorno fa ha funzionato perfettamente, poi si è bloccato per magia. Dopo diversi tentativi ho scoperto che, mettendo i bot nel canale che gestisco, si impallano definitivamente e danno errore all'infinito.
Ecco il codice:
import telepot
import time
bot = telepot.Bot("token")
def handle(msg):
content_type, chat_type, chat_id = telepot.glance(msg) # restituisce 3 variabili: content_type, chat_type, chat_id
print(content_type, chat_type, chat_id)
nome = msg['from']['first_name']
if content_type == 'text':
bot.sendMessage(chat_id, 'Ciao %s, mandami un video a cui applicare la didascalia...\nIl nome della didascalia verrà preso dal nome originale del file' % nome)
if content_type == 'video' and chat_id == mio id:
file_id = msg['video']['file_id']
file_name = msg['video']['file_name']
chat_id, message_id = telepot.message_identifier(msg)
print(chat_id, message_id)
bot.sendVideo(chat_id='@canale',
video=file_id,
duration=None,
height=None,
caption=file_name,
parse_mode=None,
supports_streaming=True,
disable_notification=None,
reply_to_message_id=None,
reply_markup=None)
if content_type == 'video' and chat_id != il mio id:
file_id = msg['video']['file_id']
file_name = msg['video']['file_name']
chat_id, message_id = telepot.message_identifier(msg)
print(chat_id, message_id)
bot.sendVideo(chat_id,
video=file_id,
duration=None,
height=None,
caption=file_name,
parse_mode=None,
supports_streaming=True,
disable_notification=None,
reply_to_message_id=None,
reply_markup=None)
bot.message_loop(handle)
while 1:
time.sleep(3)Ecco l'errore:
Traceback (most recent call last): File "C:\Users\GianmarcoAppData\Local\Programs\Python\Python38\lib\site-packages\telepot\__init__.py", line 1191, in get_from_telegram_server offset = max([relay_to_collector(update) for update in result]) + 1 File "C:\Users\GianmarcoAppData\Local\Programs\Python\Python38\lib\site-packages\telepot\__init__.py", line 1191, in <listcomp> offset = max([relay_to_collector(update) for update in result]) + 1 File "C:\Users\GianmarcoAppData\Local\Programs\Python\Python38\lib\site-packages\telepot\__init__.py", line 1164, in relay_to_collector key = _find_first_key(update, ['message', File "C:\Users\GianmarcoAppData\Local\Programs\Python\Python38\lib\site-packages\telepot\__init__.py", line 68, in _find_first_key raise KeyError('No suggested keys %s in %s' % (str(keys), str(d))) KeyError: "No suggested keys ['message', 'edited_message', 'channel_post', 'edited_channel_post', 'callback_query', 'inline_query', 'chosen_inline_result', 'shipping_query', 'pre_checkout_query'] in {'update_id': 360389344, 'my_chat_member': {'chat': {'id': -1001342579018, 'title': 'canale', 'username': 'canale', 'type': 'channel'}, 'from': {'id': 651746712, 'is_bot': False, 'first_name': 'Gianmarco', 'username': 'mio username', 'language_code': 'it'}, 'date': 1615790632, 'old_chat_member': {'user': {'id': 1688038895, 'is_bot': True, 'first_name': 'Didascalia Automatica', 'username': 'auto_didascalia_bot'}, 'status': 'left'}, 'new_chat_member': {'user': {'id': 1688038895, 'is_bot': True, 'first_name': 'Didascalia Automatica', 'username': 'auto_didascalia_bot'}, 'status': 'administrator', 'can_be_edited': False, 'can_manage_chat': True, 'can_change_info': True, 'can_post_messages': False, 'can_edit_messages': False, 'can_delete_messages': False, 'can_invite_users': False, 'can_restrict_members': True, 'can_promote_members': False, 'can_manage_voice_chats': True, 'is_anonymous': False}}}" Traceback (most recent call last): File "C:\Users\GianmarcoAppData\Local\Programs\Python\Python38\lib\site-packages\telepot\__init__.py", line 1191, in get_from_telegram_server offset = max([relay_to_collector(update) for update in result]) + 1 File "C:\Users\GianmarcoAppData\Local\Programs\Python\Python38\lib\site-packages\telepot\__init__.py", line 1191, in <listcomp> offset = max([relay_to_collector(update) for update in result]) + 1 File "C:\Users\GianmarcoAppData\Local\Programs\Python\Python38\lib\site-packages\telepot\__init__.py", line 1164, in relay_to_collector key = _find_first_key(update, ['message', File "C:\Users\GianmarcoAppData\Local\Programs\Python\Python38\lib\site-packages\telepot\__init__.py", line 68, in _find_first_key raise KeyError('No suggested keys %s in %s' % (str(keys), str(d))) KeyError: "No suggested keys ['message', 'edited_message', 'channel_post', 'edited_channel_post', 'callback_query', 'inline_query', 'chosen_inline_result', 'shipping_query', 'pre_checkout_query'] in {'update_id': 360389344, 'my_chat_member': {'chat': {'id': -1001342579018, 'title': 'canale', 'username': 'canale', 'type': 'channel'}, 'from': {'id': 651746712, 'is_bot': False, 'first_name': 'Gianmarco', 'username': 'mio username', 'language_code': 'it'}, 'date': 1615790632, 'old_chat_member': {'user': {'id': 1688038895, 'is_bot': True, 'first_name': 'Didascalia Automatica', 'username': 'auto_didascalia_bot'}, 'status': 'left'}, 'new_chat_member': {'user': {'id': 1688038895, 'is_bot': True, 'first_name': 'Didascalia Automatica', 'username': 'auto_didascalia_bot'}, 'status': 'administrator', 'can_be_edited': False, 'can_manage_chat': True, 'can_change_info': True, 'can_post_messages': False, 'can_edit_messages': False, 'can_delete_messages': False, 'can_invite_users': False, 'can_restrict_members': True, 'can_promote_members': False, 'can_manage_voice_chats': True, 'is_anonymous': False}}}"
-
- 2021-02-20 20:40:16
- Re: Qualcuno mi aiuta ad andare avanti?
- Forum >> Principianti
- Daniele aka Palmux said @ 2021-02-20 20:03:26:Ciao caro, visto che siamo nel 2021 e non nel 1991, se devi mandare del codice, usa strumenti come pastebin o simili.
Cya
Si hai ragione ahahah... ho fatto una sciocchezza ad incollare lo screen da appunti.
comunque sono riuscito a risolvere, ho "ripassato" il ciclo while e le boleane... inoltre mi sono accorto di aver dimenticato di sommare il valore alla variabile.
nome=input('Ciao, come ti chiami? ') while A == 0: scelta1 = input('Piacere di conoscerti ' + (nome) + ', pronto a cominciare? ') if scelta1 == "S" or scelta1 == "s": A += 1 print('\nOttima scelta...\n') break elif scelta1 == "N" or scelta1 == "n": print('\nCiao ' + (nome) + ', alla prossima\n!') break else: print('Hai fatto una scelta errata ' + (nome) + '... Puoi rispondere solamente "S","N","s","n"') while A == 1: scelta2 = input('Fuori porta pioggia? ') if scelta2 == "S" or scelta2 == "s": A += 1 print('\nMannaggia... il brutto tempo è una palla...') break elif scelta2 == "N" or scelta2 == "n": B += 1 print('\nMenomale! Adoro il bel tempo :)') break else: print('Hai fatto una scelta errata ' + (nome) + '... Puoi rispondere solamente "S","N","s","n"') while A== 1 and B == 1: scelta3b = input('\nTi farai una passeggiata? ') if scelta3b == "S" or scelta3b == "s": print('\nSono contento per te ' + (nome) + ', tuttavia il gioco termina qui...\nProva altre scelte per seguire percorsi diversi\n') break elif scelta3b == "N" or scelta3b == "n": B += 1 print('\nPeccato... ') break else: print('Hai fatto una scelta errata ' + (nome) + '... Puoi rispondere solamente "S","N","s","n"') while A== 2 and B == 0: scelta3a = input('\nHai un ombrello? ') if scelta3a == "S" or scelta3a == "s": A+=1 print('\nBene!') break elif scelta3a == "N" or scelta3a == "n": B += 1 print('\nOps...') break else: print('Hai fatto una scelta errata ' + (nome) + '... Puoi rispondere solamente "S","N","s","n"')
--- Ultima modifica di KeyMan98 in data 2021-02-21 09:21:18 ---
--- Ultima modifica di KeyMan98 in data 2021-02-21 09:32:36 ---
-
- 2021-02-20 19:03:53
- Re: Qualcuno mi aiuta ad andare avanti?
- Forum >> Principianti
- ops, mi ha mandato la foto come codice...
-
- 2021-02-20 19:01:53
- Re: Qualcuno mi aiuta ad andare avanti?
- Forum >> Principianti
- Più che altro se provo a indentarlo, mi fa continuare lo stesso anche se il risultato non è 1.
Anche se la condizione diventa falsa, passa alla domanda successiva... non importa se uso break o continue... mi da lo stesso problema.
-
- 2021-02-20 19:01:47
- Re: Qualcuno mi aiuta ad andare avanti?
- Forum >> Principianti
- Più che altro se provo a indentarlo, mi fa continuare lo stesso anche se il risultato non è 1.
Anche se la condizione diventa falsa, passa alla domanda successiva... non importa se uso break o continue... mi da lo stesso problema.
--- Ultima modifica di Daniele aka Palmux in data 2021-02-20 20:00:16 ---
-
- 2021-02-19 15:07:13
- Qualcuno mi aiuta ad andare avanti?
- Forum >> Principianti
- Ho provato a creare un dialogo ispirandomi allo schema dell'ombrello... tuttavia non riesco a collegare correttamente i 2 blocchi (dove ho scritto "??????").
Un aiutino? Grazie mille per la disponibilità.
A = 0 B = 0 while True: scelta1 = input('Sei pronto a cominciare? ') if scelta1 == "S" or scelta1 == "s": A + 1 print('\nOttimo! Cominciamo...\n') break elif scelta1 == "N" or scelta1 == "n": print('Alla prossima') break else: print('Scelta errata.. Puoi rispondere solamente "S","N","s","n"') if A == 1: break if A == 0: ?????????????? while True: scelta2 = input('Fuori porta pioggia? ') if scelta2 == "S" or scelta2 == "s": A + 1 print('\nMannaggia... il brutto tempo è una palla...\nVuoi uscire lo stesso?\n') break elif scelta2 == "N" or scelta2 == "n": B + 1 print('Menomale! Adoro il bel tempo :)') break else: print('Scelta errata.. Puoi rispondere solamente "S","N","s","n"')