Во-первых, сама подстановка названия в ссылку некорректная.
r = requests.get('https://www.gismeteo.ua/weather-Gorod/'% (city))
Судя по примеру реальной ссылки "
https://www.gismeteo.ua/weather-kyiv-4944/"
Там должно быть
r = requests.get('https://www.gismeteo.ua/weather-%s/'% (city))
или
r = requests.get(f'https://www.gismeteo.ua/weather-{city}/')
И чтобы бот ответил, ему надо писать в виде "Погода kyiv-4944"
Во-вторых, скорее всего понадобится передать заголовки, чтобы запрос был похож на браузер, хотя бы простые
r = requests.get(f'https://www.gismeteo.ua/weather-{city}/', headers={'User-agent': 'Mozilla/5.0'})
И насколько вижу, никакого json запрос не возвращает, это просто HTML страница, так что данные придется доставать самому, например через bs4.