当手机上的GPS被禁用时,用户可以手动选择Map上的任何一个点,我如何删除这个选项来发送位置变量res处理两点之间的距离,我将非常感激。
当前代码:
@dp.message_handler(state=UserState.location, content_types=['location'])
async def handle_location(message: types.Message, state: FSMContext):
user_loc1 = message.location.latitude
user_loc2 = message.location.longitude
data = await state.get_data()
org_loc1 = data['id_in_qr'][0]
org_loc2 = data['id_in_qr'][1]
res = geolocation.ras(user_loc1, user_loc2, org_loc1, org_loc2)
if res > 200 or not res:
await message.answer('Вы еще не дошли до работы', reply_markup=types.ReplyKeyboardRemove())
await UserState.location.set()
else:
await message.answer(f'Вы пришли на работу в ', reply_markup=types.ReplyKeyboardRemove())
await state.finish()
for file in glob.glob(f"data/{message.from_user.id}{message.date}.png"):
os.remove(file)
2条答案
按热度按时间oxcyiej71#
您可以尝试打印在用户屏幕上的特殊按钮,使用户的位置请求。这是不会完全解决您的问题,但我认为这是一些更好的。这个变种也可以去周围。我知道用户在任何情况下都可以发送假的位置。
dgjrabp22#
对了,老大哥的爸爸问题.
一般情况下,你无法阻止员工伪造自己的位置而不造成更大的干扰。如果他们现在绕过了你的限制,你封锁这条特定路线将一无所获。
如果我控制一个设备,我不仅可以手动选择位置,我还可以欺骗它--例如,for Pokemon Go创建了一个庞大的社区。这方面的知识几乎可以广泛获得。你在这里处理的是一个人的问题,而不是一个技术问题。