builder = ReplyKeyboardBuilder()
for i in range(0, 9):
builder.button(text=str(i))
builder.adjust(3, 3, 3) # сетка 3х3
reply_markup = builder.as_markup()
@dp.message()
async def echo_handler(message: Message) -> None:
await message.send_copy(chat_id=message.chat.id, reply_markup=reply_markup)
2. Ответ все же есть
на https://api.openweathermap.org/geo/1.0/direct?q=Mo...
3. Какая у вас подписка?