почему происходит ошибка TypeError: 'Location' object is not subscriptable
#Библиотеки
import telebot
from telebot import types
# importing modules
from geopy.geocoders import Nominatim
#Импорт токена
from config import TOKEN
#Хуй его знает, но нужно
bot = telebot.TeleBot(TOKEN)
#Бот считывает команду start, отправляет сообщение и добавляет список
@bot.message_handler(commands=['start'])
def hello(message):
start_marcup = types.ReplyKeyboardMarkup(resize_keyboard=True) #Создание клавиатуры для кнопок
get_order = types.KeyboardButton('Сделать заказ?') #Создание кнопки задание
start_marcup.add(get_order) #Добавление
bot.send_message(message.chat.id, f'Привет {message.from_user.first_name}!?\nЭтот бот сделан для оформления заказов на доставку?\nЧтобы сдлеать заказ нажмите на кнопку ниже?', reply_markup=start_marcup)
#Наличее аддреса
Have_addres = False
#Бот выполняет что то если в тексте есть значение
@bot.message_handler(content_types=['text'])
def func(message):
if(message.text == "Сделать заказ?"):
if Have_addres:
bot.send_message(message.chat.id, text="Да")
elif Have_addres == False:
give_addres(message)
def give_addres(message):
# Клавиатура с кнопкой запроса локации
keyboard = types.ReplyKeyboardMarkup(row_width=1, resize_keyboard=True)
button_geo = types.KeyboardButton(text="Отправить местоположение", request_location=True)
keyboard.add(button_geo)
bot.send_message(message.chat.id, 'Поделись местоположением', reply_markup=keyboard)
#Получаем широту и долготу
@bot.message_handler(content_types=['location'])
def get_location (message):
if message.location is not None:
location = message.location
print(location)
longitude = location['longitude']
latitude = location['latitude']
#location = latitude + ',', longitude
#print(location)
# calling the nominatim tool
geoLoc = Nominatim(user_agent="GetLoc")
# passing the coordinates
#locname = geoLoc.reverse()
#Неприрывная работа бота
bot.polling(none_stop=True)
Так выглядит print(location):
{'longitude': (мои координаты), 'latitude': (мои координаты), 'horizontal_accuracy': None, 'live_period': None, 'heading': None, 'proximity_alert_radius': None}
Ошибка происходит когда я пытаюсь достать информацию из словаря
Текст ошибки:
Traceback (most recent call last):
File "D:\helper bot\main.py", line 59, in <module>
bot.polling(none_stop=True)
File "D:\helper bot\lib\site-packages\telebot\__init__.py", line 1045, in polling
self.__threaded_polling(non_stop=non_stop, interval=interval, timeout=timeout, long_polling_timeout=long_polling_timeout,
File "D:\helper bot\lib\site-packages\telebot\__init__.py", line 1120, in __threaded_polling
raise e
File "D:\helper bot\lib\site-packages\telebot\__init__.py", line 1082, in __threaded_polling
self.worker_pool.raise_exceptions()
File "D:\helper bot\lib\site-packages\telebot\util.py", line 147, in raise_exceptions
raise self.exception_info
File "D:\helper bot\lib\site-packages\telebot\util.py", line 90, in run
task(*args, **kwargs)
File "D:\helper bot\lib\site-packages\telebot\__init__.py", line 6793, in _run_middlewares_and_handler
result = handler['function'](message)
File "D:\helper bot\main.py", line 44, in get_location
longitude = location['longitude']
TypeError: 'Location' object is not subscriptable
Ответы (1 шт):
Автор решения: Zetial
→ Ссылка
Не знаю насчет правильности, но все же. Достал информацию из словаря другим способом и все стало ок
longitude = location.longitude
latitude = location.latitude