2017-07-31 2 views
1

Dans mon script je veux obtenir l'emplacement du propriétaire du robot télégramme, lorsque les utilisateurs cliquent sur le bouton, le bot envoie l'emplacement du propriétaire aux utilisateurs sous la forme de google map image. mon script est:obtenir l'emplacement du propriétaire du robot télégramme

import telepot 
from telepot.loop import MessageLoop 
import time 
from gps3 import gps3 

bot = telepot.Bot('mytoken') 
def handle(msg): 
    content_type, chat_type, chat_id = telepot.glance(msg) 
    gps_socket = gps3.GPSDSocket() 
    data_stream = gps3.DataStream() 
    gps_socket.connect() 
    gps_socket.watch() 
    for new_data in gps_socket: 
     if new_data: 
      data_stream.unpack(new_data) 
      alt = data_stream.TPV['alt'] 
      lat = data_stream.TPV['lat'] 
    bot.sendMessage(chat_id , alt) 



MessageLoop(bot, handle).run_as_thread() 
while 1: 
    time.sleep(1) 

Je lance ce script dans mon ordinateur portable et parce que mon portable n'a pas gps j'obtenir l'erreur, quand je le lance avec mon téléphone Android, il devrait fonctionner, mais je reçois la même erreur

+0

Que voulez-vous dire par OWNER BOT? –

+0

excusez-moi le propriétaire du robot. – samira

+0

Et comment voulez-vous que votre android exécute un script python? –

Répondre

1

Je ne peux pas tester complètement cela, mais si l'absence d'un GPS sur le portable est votre seul problème, que se passe-t-il si vous remplacez juste un gros morceau de votre code pendant que vous le testez? :

import telepot 
from telepot.loop import MessageLoop 
import time 

bot = telepot.Bot('mytoken') 
def handle(msg): 
    content_type, chat_type, chat_id = telepot.glance(msg) 
    lat = 53.540442 
    long = 9.996381 
    alt = 53.432   
    bot.sendMessage(chat_id , alt) 

MessageLoop(bot, handle).run_as_thread() 
while 1: 
    time.sleep(1) 

Donnez-lui juste ce qu'il veut pour les coordonnées et essayez de faire fonctionner la partie télégramme du script. Probablement que sendMessage veut plus que l'altitude si ..

+0

Je cours ce script dans mon cahier, cela fonctionne et je n'ai pas eu d'erreurs, mais il suffit d'envoyer un numéro (alt = 53.432) et didn ' t envoyer n'importe quel endroit ou google map image au télégramme bot. – samira

+0

quand je remplace bot.sendmessage avec bot.sendlocation (chat_id, lat, long, alt) il envoie un emplacement à mon bot.in mon propriétaire de robot d'idée est variable et il n'est pas constant, donc je ne peux pas utiliser la constante alt, long et Numéros de lat – samira

+0

L'idée était simplement de vous aider à supprimer le problème GPS pendant que vous étiez en train de tester sur votre PC afin de pouvoir vous concentrer sur la partie "télépot". Si vous voulez la variable propriétaire, ne pouvez-vous pas simplement définir 'bot1 = .., bot2 = ..' en haut et plusieurs commandes 'MessageLoop' en bas (pendant le test.) Si cela était utile, ne le faites pas Oubliez-vous d'upvote .. En regardant [this] (http://telepot.readthedocs.io/en/latest/reference.html#basic-bot) je ne suis même pas sûr que vous ayez besoin de "handle" là-dedans. – cardamom