2017-07-31 306 views
1

在我的腳本中,我想獲取電報機器人所有者的位置,當用戶點擊按鈕時,機器人將所有者的位置以Google地圖圖像的形式發送給用戶。 我的腳本是:獲取電報機器人所有者的位置

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) 

我在我的筆記本上運行此腳本,因爲我的筆記本電腦有沒有GPS,我得到的錯誤,當我用我的Android手機上運行它,它應該工作,但我得到了同樣的錯誤

+0

你是什麼意思的所有者BOT? –

+0

請問機器人老闆。 – samira

+0

你如何期待你的android運行一個python腳本? –

回答

1

我無法完全測試這一點,但如果筆記本電腦缺少GPS是您唯一的問題,那麼如果您在測試時只是用這樣的代碼替換大部分代碼會發生什麼? :

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) 

只要給它它想要的座標並試着讓腳本的電報部分工作。可能sendMessage想要的不僅僅是高度,儘管..

+0

我在筆記本上運行這個腳本,它工作正常,我沒有得到任何錯誤,但它只是發送一個數字(alt = 53.432)發送任何位置或谷歌地圖圖像到電報機器人。 – samira

+0

當我用bot.sendlocation替換bot.sendmessage(chat_id,lat,long,alt)時,它發送一個位置給我的bot.in我的想法機器人所有者是可變的,它不是常量,所以我不能使用常量alt,long和緯度號 – samira

+0

這個想法只是爲了幫助您在您的個人電腦上進行測試的同時刪除GPS問題,以便您可以專注於「telepot」部分。如果你想讓所有者變量,你不能只在頂部定義'bot1 = ..,bot2 = ..'並且在底部定義幾個'MessageLoop'命令(在測試時)。如果它根本沒有幫助,忘記upvote ..看看[這個](http://telepot.readthedocs.io/en/latest/reference.html#basic-bot)我甚至不確定你需要'處理'在那裏。 – cardamom